天天看點

3分鐘解決MySQL 1062 主從錯誤

1062錯誤----主鍵沖突,出現這種情況就是從庫出現插入操作,主庫又重新來了一遍,iothread沒問題,sqlthread出錯

解決方案:

1

2

3

4

5

<code>mysql&gt; stop slave;</code>

<code> </code> 

<code>mysql&gt; </code><code>set</code> <code>global</code> <code>sql_slave_skip_counter=1;</code>

<code>mysql&gt; 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&gt; </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&gt; </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&gt; 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&gt;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&gt; </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&gt; 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,如需轉載請自行聯系原作者

繼續閱讀