mysql主从同步Slave_SQL_Running: No,Last_Errno: 1062的解决方法
在备节点上
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.101.118
Master_User: backup
Master_Port: 3306
Connect_Retry: 50
Master_Log_File: mysql-bin.000014
Read_Master_Log_Pos: 202
Relay_Log_File: localhost-relay-bin.000014
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000013
Slave_IO_Running: Yes
Slave_SQL_Running: No
Replicate_Do_DB: cdn
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 1062
原因分析:
两边数据不一致,数据库开始进行同步,但是由于在复制同步的时候,发现对方库中存在相同的主键,从而同步失败,
并导致 Slave_SQL_Running: No 出现
解决方法(测试可行):
修改mysql的配置文件,/etc/my.cnf,在[mysqld]下面添加一行
slave_skip_errors = 1062
保存、重启mysql服务,再次查看主从复制,问题解决。
还有一种方法(网上摘抄,未验证,仅供参考):
还有另外一种: 此种和上面方法类似,都是相当于路过了当前问题,令后面的同步
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;