处理MySQL主从库数据不一致的问题【Slave_SQL_Running: No】

场景:有同事需要把从库中的数据,同步一份到新环境,但发现在主库上执行count语句,和从库上执行count语句得出的结果不同。
 
解决思路:
 
在从库上执行 show slave status \G ,查看返回结果:
 
*************************** 1. row ***************************
              Slave_IO_State: Waiting for master to send event
                Master_Host: 192.168.1.118
                Master_User: bak
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: mysql-bin.000728
        Read_Master_Log_Pos: 586670704
              Relay_Log_File: mysqld-relay-bin.002178
              Relay_Log_Pos: 457911949
      Relay_Master_Log_File: mysql-bin.000709
            Slave_IO_Running: Yes
          Slave_SQL_Running: No
            Replicate_Do_DB: mydb
        Replicate_Ignore_DB:
          Replicate_Do_Table:
      Replicate_Ignore_Table:
    Replicate_Wild_Do_Table:
 Replicate_Wild_Ignore_Table:
 

Last_Errno: 1062
                  Last_Error: Error 'Duplicate entry 'XXXXXXX' for key 2' on query. Default database: 'mydb'. Query: 'INSERT INTO `network` (`uuid`, `machine_name`, `port`, `update_time`) VALUES ('5''
                Skip_Counter: 0
        Exec_Master_Log_Pos: 457911812
            Relay_Log_Space: 20988097167
            Until_Condition: None
              Until_Log_File:
              Until_Log_Pos: 0
          Master_SSL_Allowed: No
          Master_SSL_CA_File:
          Master_SSL_CA_Path:
            Master_SSL_Cert:
          Master_SSL_Cipher:
              Master_SSL_Key:
      Seconds_Behind_Master: null
 1 row in set (0.00 sec)

发现从库在同步时出错,没有能正常同步,解决方法:
 
第一:停止slave,slave stop;
 
第二:跳过一条出错的语句:set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
 
第三:启动slave,slave start;
 
第四:使用show slave status \G 查看当前的同步情况,如果Slave_SQL_Running: Yes,则成功,如果Slave_SQL_Running: No,则再次执行一到四。如果不想一次次重复,可以在第二步中跳过多条错误的语句。

最后看看当前从库与主库的时间差:Seconds_Behind_Master: 197011

相关推荐