Heim  >  Artikel  >  Datenbank  >  处理MYSQL主从库数据不一致的问题【Slave

处理MYSQL主从库数据不一致的问题【Slave

WBOY
WBOYOriginal
2016-06-07 15:40:041156Durchsuche

场景:有同事需要把从库中的数据,同步一份到新环境,但发现在主库上执行count语句,和从库上执行count语句得出的结果不同。 解决思路: 在从库上执行show slave status \G ,查看返回结果: *************************** 1. row **************************

      场景:有同事需要把从库中的数据,同步一份到新环境,但发现在主库上执行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


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn