恢复主从环境
- 1:Situation(背景)
- 2:Task(任务)
- 3:Action(行动)
- 主库(备份)
- 1:锁表
- 2:效验是否锁表
- 3:查看主库状态并记录
- 4:备份数据库全部
- 5:解锁表
- 6:把备份放到从库
- 从库
- 1:备份从库(可选)
- 2:恢复从库
- 3:清除旧设置
- 4:添加新设置
- 4:Result(结果)
1:Situation(背景)
测试环境下得数据库主从掉了,且由于设置只保存了最近两次得binlog日志,无法通过mysqlbinlog+gtid恢复
2:Task(任务)
修复mysql主从(一主一从)
3:Action(行动)
采用简单但是有效得备份恢复策略
主库(备份)
注:注意服务器使用,提前协商好恢复时间,避免造成不必要得麻烦
1:锁表
msql中
flush tables with read lock;
2:效验是否锁表
整一个创建数据库d额语句
3:查看主库状态并记录
mysql中
show master status;
将查询出得结果保存
+------------+-----------+--------------+------------------+------------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------+-----------+--------------+------------------+------------------------------------------------+
| bin.00001 | 31327 | | | 99999999999999999999999 |
+------------+-----------+--------------+------------------+------------------------------------------------+
4:备份数据库全部
mysqldump -uappuser -p -A -B |gzip > /server/backup/mysql_bak.$(date +%F).sql.gz
# -A -all
# -B 包含create database 语句
5:解锁表
mysql中
unlock tables;
6:把备份放到从库
可以使用scp 进行发送
从库
1:备份从库(可选)
mysqldump -uappuser -p -A -B |gzip > /server/backup/mysql_bak.$(date +%F).sql.gz
2:恢复从库
# 清除旧的得guid
mysql -uroot -p -e 'reset master';
# 解压主机备份并发送到从库得备份文件
gzip -d /server/backup/mysql_bak.$(date +%F).sql.gz
# 对数据进行恢复(恢复时间根据服务器配置和数据量决定)
mysql -uappuser -p < mysql_bak.$(date +%F).sql
3:清除旧设置
# 清除旧的从库设置
RESET SLAVE;
4:添加新设置
change master to
MASTER_HOST=‘主库id’,
MASTER_PORT=主库mysql得端口,
MASTER_USER=‘用于主从得账号’,
MASTER_PASSWORD=‘用于主从得密码’,
MASTER_LOG_FILE=‘在’show master status;‘ 查看到得file名字’,
MASTER_LOG_POS=在’show master status;‘ 查看到得Position得值;
下面是一个参考
change master to
MASTER_HOST='192.168.128.111',
MASTER_PORT=3306,
MASTER_USER='repl',
MASTER_PASSWORD='repl_123',
MASTER_LOG_FILE='bin.00001',
MASTER_LOG_POS=31327;
4:Result(结果)
成功