本文共 3010 字,大约阅读时间需要 10 分钟。
今天是61儿童节,是一个很难忘的日子,早上9到公司上班,事来了,由于开发的疏忽,把一个库导入到从库里,然后当开发发现导错数据库服务器,也没向我们运维人员反映,当时查看了主库是没有数据,然后开发又在主库导了,结果同步出错,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 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错误 从先创建了这个库,然后主又创建了,至此导致数据库同步冲突 |
解决方法:
1 2 3 | stop slave; set global sql_slave_skip_counter=1; start slave; |
从库状态:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 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://vrnna.baihongyu.com/