1062錯誤----主鍵沖突,出現這種情況就是從庫出現插入操作,主庫又重新來了一遍,iothread沒問題,sqlthread出錯
解決方案:
1
2
3
4
5
<code>mysql> stop slave;</code>
<code> </code>
<code>mysql> </code><code>set</code> <code>global</code> <code>sql_slave_skip_counter=1;</code>
<code>mysql> start slave;</code>
故障模拟:
從庫如果誤插入
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<code>mysql> </code><code>insert</code> <code>into</code> <code>helei(text) </code><code>values</code><code>(</code><code>'iii'</code><code>);</code>
<code>Query OK, 1 row affected (0.28 sec)</code>
<code>mysql> </code><code>select</code> <code>* </code><code>from</code> <code>helei;</code>
<code>+</code><code>----+------+</code>
<code>| id | text |</code>
<code>| 1 | aa </code>
<code>|</code>
<code>| 2 | bb </code>
<code>| 3 | cc </code>
<code>| 4 | ee </code>
<code>| 5 | ff </code>
<code>| 6 | gg </code>
<code>| 7 | hh </code>
<code>| 8 | iii </code>
<code>8 </code><code>rows</code> <code>in</code> <code>set</code> <code>(0.00</code>
<code>sec)</code>
<code>mysql> show slave</code>
<code>status\G</code>
<code>***************************</code>
<code>1. row ***************************</code>
<code> </code><code>Slave_IO_State: Waiting </code><code>for</code>
<code>master </code><code>to</code> <code>send event</code>
<code> </code><code>Master_Host: 192.168.1.250</code>
<code> </code><code>Master_User: mysync</code>
<code> </code><code>Master_Port: 2503306</code>
<code> </code><code>Connect_Retry: 60</code>
<code> </code><code>Master_Log_File: mysql-bin.000005</code>
<code> </code><code>Read_Master_Log_Pos: 2509</code>
<code> </code><code>Relay_Log_File:</code>
<code>HE1-relay-bin.000005</code>
<code> </code><code>Relay_Log_Pos: 480</code>
<code> </code><code>Relay_Master_Log_File: mysql-bin.000005</code>
<code> </code><code>Slave_IO_Running: Yes</code>
<code> </code><code>Slave_SQL_Running: Yes</code>
<code>這時候從庫是正常的,但由于從庫私自插入資料,已經和主庫不一緻,如果這時主庫也插入相同的資料</code>
<code>主庫此時沒有8,iii這條記錄</code>
<code>7 </code><code>rows</code> <code>in</code> <code>set</code> <code>(0.00</code>
<code>mysql>show slave status\G</code>
<code> </code><code>Read_Master_Log_Pos: 2709</code>
<code> </code><code>Slave_SQL_Running: </code><code>No</code>
<code> </code><code>Replicate_Do_DB:</code>
<code> </code><code>Replicate_Ignore_DB:</code>
<code> </code><code>Replicate_Do_Table:</code>
<code> </code><code>Replicate_Ignore_Table:</code>
<code> </code><code>Replicate_Wild_Do_Table:</code>
<code> </code><code>Replicate_Wild_Ignore_Table:</code>
<code> </code><code>Last_Errno: 1062</code>
<code> </code>
<code>Last_Error: Could </code><code>not</code> <code>execute</code> <code>Write_rows event </code><code>on</code> <code>table</code> <code>test.helei;</code>
<code>Duplicate entry </code><code>'8'</code> <code>for</code> <code>key</code> <code>'PRIMARY'</code><code>, Error_code: 1062; handler error</code>
<code>HA_ERR_FOUND_DUPP_KEY; the event</code><code>'s master log mysql-bin.000005, end_log_pos</code>
<code>2678</code>
<code> </code><code>Skip_Counter: 0</code>
<code> </code><code>Exec_Master_Log_Pos: 2509</code>
<code> </code><code>Relay_Log_Space: 851</code>
<code> </code><code>Until_Condition: None</code>
<code> </code><code>Until_Log_File:</code>
<code> </code><code>Until_Log_Pos: 0</code>
<code> </code><code>Master_SSL_Allowed: No</code>
<code> </code><code>Master_SSL_CA_File:</code>
<code> </code><code>Master_SSL_CA_Path:</code>
<code> </code><code>Master_SSL_Cert:</code>
<code> </code><code>Master_SSL_Cipher:</code>
<code> </code><code>Master_SSL_Key:</code>
<code> </code><code>Seconds_Behind_Master: NULL</code>
<code>Master_SSL_Verify_Server_Cert:</code>
<code>No</code>
<code> </code><code>Last_IO_Errno: 0</code>
<code> </code><code>Last_IO_Error:</code>
<code> </code><code>Last_SQL_Errno: 1062</code>
<code> </code><code>Last_SQL_Error: Could not</code>
<code>execute Write_rows event on table test.helei; Duplicate entry '</code><code>8</code><code>' for key</code>
<code>'</code><code>PRIMARY</code><code>', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event'</code><code>s</code>
<code>master log mysql-bin.000005, end_log_pos 2678</code>
<code> </code><code>Replicate_Ignore_Server_Ids:</code>
<code> </code><code>Master_Server_Id: 2503306</code>
<code> </code><code>Master_UUID:</code>
<code>f7c96432-f665-11e5-943f-000c2967a454</code>
<code> </code><code>Master_Info_File:</code>
<code>/data/mysql/master.info</code>
<code> </code><code>SQL_Delay: 0</code>
<code> </code><code>SQL_Remaining_Delay: </code><code>NULL</code>
<code> </code><code>Slave_SQL_Running_State:</code>
<code> </code><code>Master_Retry_Count: 86400</code>
<code> </code><code>Master_Bind:</code>
<code> </code><code>Last_IO_Error_Timestamp:</code>
<code> </code><code>Last_SQL_Error_Timestamp: 160331 09:12:02</code>
<code> </code><code>Master_SSL_Crl:</code>
<code> </code><code>Master_SSL_Crlpath:</code>
<code> </code><code>Retrieved_Gtid_Set:</code>
<code> </code><code>Executed_Gtid_Set:</code>
<code> </code><code>Auto_Position: 0</code>
<code>1 row </code><code>in</code>
<code>set</code> <code>(0.00 sec)</code>
出現這樣的問題,先停從庫,set跳過這條事務
HE1從庫操作
<code>Query OK, 0 </code><code>rows</code>
<code>affected (0.26 sec)</code>
<code>mysql> </code><code>set</code> <code>global</code> <code>sql_slave_skip_counter=1;(這裡寫10也是一樣的,最好不用這種方法,用pt-slave-restart,無需手動stop/start slave)</code>
<code>affected (0.30 sec)</code>
<code>affected (0.04 sec)</code>
<code>mysql> show slave status\G</code>
<code> </code><code>Read_Master_Log_Pos: 2909</code>
<code>HE1-relay-bin.000006</code>
<code> </code><code>Relay_Log_Pos: 283</code>
<code> </code><code>Last_Errno: 0</code>
<code> </code><code>Last_Error:</code>
<code> </code><code>Exec_Master_Log_Pos: 2909</code>
<code> </code><code>Relay_Log_Space: 1214</code>
<code> </code><code>Master_SSL_Allowed: </code><code>No</code>
<code> </code><code>Seconds_Behind_Master: 0</code>
<code> </code><code>Last_SQL_Errno: 0</code>
<code> </code><code>Last_SQL_Error:</code>
<code> </code><code>Slave_SQL_Running_State: Slave has </code><code>read</code>
<code>all</code> <code>relay log; waiting </code><code>for</code> <code>the slave I/O thread </code><code>to</code> <code>update</code> <code>it</code>
<code> </code><code>Last_SQL_Error_Timestamp:</code>
<code>1 row </code><code>in</code> <code>set</code> <code>(0.00</code>
本文轉自 dbapower 51CTO部落格,原文連結:http://blog.51cto.com/suifu/1845114,如需轉載請自行聯系原作者