记一次MHA主从不同步恢复过程
背景:
根据生产环境故障模拟,由于生产环境主机mysql数据目录满,造成业务侧连接mysql异常。维护人员在排查时,误将MHA中主master的二进制日志全部清除,造成两个从库向主库同步拉取日志失败,报找不到日志错误。为解决该问题,同时又考虑到生产库不能停库,所以准备在主master库上对相关重要库进行热备份,将备份后的数据在从库上进行恢复,恢复完成后重新在从库上开启主从同步进程。下面为大体的故障解决过程。
**(1)停止从库的复制线程**
stop slave;
reset slave all;
**(2)清除从库相关库的内容**
drop database tt;
create database tt; //如果后面恢复的是多个库,不用手动建库
**(3)备份与恢复库(可以不停业务)**
**注意:一定要记得,在执行备份操作前,一定要将主库master上的日志位置给记录下来!可通过--master-data=1参数记录**
如果只有一个库,则按照以下方法:
备份单个库:
mysqldump -R -E -uroot -prootlyl tt --master-data=1 >tt.sql
目标库导入单个库:(需要手动建tt库)
mysql -uroot -prootlyl tt<tt.sql
如果有多个库,则按照以下方法:
备份多个库:
mysqldump -R -E -uroot -prootlyl -B tt ty --master-data=1 >tt_ty_duo.sql
目标库导入多个库:(不用手动建tt和ty库)
[[email protected] tmp]# mysql -uroot -prootlyl <tt_ty_duo.sql
备注:--master-data=1代表在备份文件中记录当前二进制日志的位置,2代表注释,1代表不注释,1在主从复制中才有意义
**(4)查看备份文件的备份时间点**
即从节点应用日志的位置,就是参考此处的
**(5)在从节点配置主从同步**
CHANGE MASTER TO MASTER_HOST='192.168.20.23',
MASTER_USER='master',
MASTER_PASSWORD='oracle',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=6144;
start slave;
(6)验证主库与从库的一致性
可通过查看表的记录数来验证