首先登录mysql后用指令 : show slave status\G 查看下报错信息. 博主贴个例子,半夜服务器主从告警,完事爬起来处理故障.
由报错信息可以得知是某个表的数据不一致导致的同步停止,所以,因为主从同步的关系,写入修改都是用主库,从库只作为读使用,所以先把这个表锁住,不让修改操作 lock table 表名 read 然后把主库的这张表备份下,然后在从库中,记得 是从库 使用 stop slave; 停止同步先,完事再把从库的这个表的数据truncate掉(嘛,首先考虑业务哈,业务如果不允许暂时的停止的话就另外找方法), 再把备份好的数据导入从库, 然后使用 set global sql_slave_skip_counter =1; 跳过错误,后面的数字是可以更改的,看错误的数量,如果数据相差不大 那就先一个个来,然后在 start slave; 再 show slave status\G 看看状态,如果还是没成 就继续重复 停止 跳过 启动 查看这些步骤,直到 状态变成: 没报错(下图) 并且sql和io同步都是yes时 即可 ,完事呢 记得把表解锁哈 unlock tables 教程有点麻烦 但亲测可用...........睡觉睡觉
噢,还有个问题 顺带说一下,之前有遇到过 双向同步 完事不小心binlog日志删除了,导致不同步 更夸张的是 你 一 start slave; 特么服务器就直接重启 网上找了个解决办法 : 听说原因是因为双向同步时linux的系统会去用两个进程去抢夺一个文件,而那个文件只能被一个进程所获取,类似于加了锁,然后导致linux系统重启.....