记一次mysql同步出错的解决方法

背景:mmm架构,拥有vip的主服务器假死,同步出错。

遇到的问题:

1:vip没有漂移

1): 将假死的主服务器重启vip没有漂移。

2): mmm_control @xxx remove_writer xxx 报错,replication_error错误,vip漂移失败

3):重启mmm monitor进程,不行执行下一步

4):关闭已经损坏主数据库,重启mmm agent进程。


通过以上两点,vip已经成功漂移,如果还是不行,请尝试手动绑定vip:

ifconfig xxx:1 vip_address netmask 255.255.255.0 up


2:主从同步出错

1): binlog的pos点不存在

允许丢数据恢复,直接找到相关报错的binlog文件的最后一个点。

stop slave;

CHANGE MASTER TO MASTER_HOST = 'ip_address',MASTER_PORT = post,MASTER_LOG_FILE = 'binlog-xxx',MASTER_LOG_POS = xxxxx;

start slave;


或者从下一个binlog文件开始同步:

SLAVE STOP;  

CHANGE MASTER TO MASTER_LOG_FILE = 'mysql-bin.xxxx';  

CHANGE MASTER TO MASTER_LOG_POS = 0;  

SLAVE START; 

2): 尽量少的丢数据。mybinlog binlog.file > /tmp/binlog 查找出于故障点比较接近的pos

如果找到的pos在故障点之后,一般可以顺利的主从同步成功。

如果找到的pos在故障点之前,则可能会出现报错“有重复的key之类的”此时执行:

stop slave;

set global sql_slave_skip_counter =1 ;

start slave;

一般即可主从同步成功。