记一次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;
一般即可主从同步成功。