1. 程式人生 > >6.1兒童節特別禮物,mysql同步失敗

6.1兒童節特別禮物,mysql同步失敗

mysql同步失敗

今天是61兒童節,是一個很難忘的日子,早上9到公司上班,事來了,由於開發的疏忽,把一個庫導入到從庫裏,然後當開發發現導錯數據庫服務器,也沒向我們運維人員反映,當時查看了主庫是沒有數據,然後開發又在主庫導了,結果同步出錯,如下:

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.0.155
                  Master_User: myslave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 804
               Relay_Log_File: relay-log-bin.000002
                Relay_Log_Pos: 253
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: No
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 1008
                   Last_Error: Error ‘Can‘t drop database ‘data‘; database doesn‘t exist‘ on query. Default database: ‘data‘. Query: ‘drop database data‘
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 562
              Relay_Log_Space: 949
              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
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 1008
               Last_SQL_Error: Error ‘Can‘t drop database ‘data‘; database doesn‘t exist‘ on query. Default database: ‘data‘. Query: ‘drop database data‘
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
1 row in set (0.00 sec)

提示:錯誤信息是無法撤銷數據庫,數據庫不存在。‘,1008錯誤
從先創建了這個庫,然後主又創建了,至此導致數據庫同步沖突

解決方法:

stop slave;
set global sql_slave_skip_counter=1;
start slave;

從庫狀態:

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.0.155
                  Master_User: myslave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 804
               Relay_Log_File: relay-log-bin.000004
                Relay_Log_Pos: 253
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 804
              Relay_Log_Space: 553
              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: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
1 row in set (0.00 sec)

已經ok了

1)對於普通的互聯網業務,忽略問題不是很大。當然,要確認不影響公司業務的前提下。

2)企業場景解決主從同步,比主從不一致對前面更重要,然後如果主從數據一致也很重要,在找個時間恢復下這個從庫。

主從數據不一致更重要還是保持主從同步持續狀態更重要。這樣我們要我們根據業務選擇。


本文出自 “小菜鳥” 博客,請務必保留此出處http://baishuchao.blog.51cto.com/12918589/1931271

6.1兒童節特別禮物,mysql同步失敗