mysql sql_salve_skip_counter

案例分析:從庫複製出錯

wKioL1UakjySTdkyAAICN3C2rmw941.jpg

wKioL1UaklfRTw1FAASK2I66waI383.jpg

1.    從錯誤日誌和slave status來看,複製在relay_master_log_file=mysql-bin.000088這個日誌文件的exec_master_log_pos=471880483這個position上出錯了!

2.    因爲show binlog events 這個命令不能針對relay_bin中繼日誌做讀取event,所以我們還得回到主庫上去讀mysql-bin二進制日誌文件。

3.    去主庫執行show binlog events in 'mysql-bin.000088' from 471880483 limit 10;

wKioL1UalNPTFJubAAjr-11y7CU809.jpg


可以看出從471880483 到471880982這個出問題的insert 語句,一共分成了三個event!(可以看出一個事務並非就是一個event,而會是三個event!begin/insert/commit)

4.    執行set global sql_salve_skip_counter=1!  此句表示從此刻的位置跳過1個event!

    另外在別的資料裏還看到有兩個策略:

    1、若N=1且當前event爲BEGIN, 則N不變,跳過當前event繼續。

    2、若N=1且當前event處於一個事務之內(BEGIN之後,COMMIT之前),則N不變,跳過當前event繼續。

     說明:其實上面兩個策略合起來就是一句話,當N=1時,會連續跳過若干個event,直到當前所在的事務結束。

    當然如果N>1,則跳過N個event!並且最後不能處於一個事務內!


5.    執行set global sql_salve_skip_counter=1! ,再去看錯誤日誌

wKioL1UamK2wOd0EAAPrZlSfxO0233.jpg

可以看出mysql從event=1 跳過了 第二個和第三個event,從第四個event新的pos=471880982 重新開始執行中繼日誌!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章