今天是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)企业场景解决主从同步,比主从不一致对前面更重要,然后如果主从数据一致也很重要,在找个时间恢复下这个从库。
主从数据不一致更重要还是保持主从同步持续状态更重要。这样我们要我们根据业务选择。
本文转自 baishuchao 51CTO博客,原文链接:http://blog.51cto.com/baishuchao/1931271