mysql複製的一例錯誤:Relay_Log_Pos不變

原創文章,轉載請註明出處:http://huyanping.sinaapp.com/?p=170
作者:Jenner

最近公司的一臺Mysql從機延遲了18W秒,兩天前發現延遲時,觀察SLAVE STATUS,一切正常,以爲近期業務調整造成寫操作過多,從機延遲的比較厲害,就沒有做過多注意。元旦放假回來後發下延遲時間竟然已經有18W。


具體的情況描述如下:IO線程和SQL線程運行正常,master日誌拷貝正常。唯一不正常的問題就是Relay_Log_Pos一直不變,且SLAVE STATUS狀態並沒有報錯。以爲某一條語句長時間鎖住的某張表造成的,但觀察processlist發現數據庫中並沒有任何語句在運行。爲了不影響業務運行,我們將所有讀操作遷移到了另外一臺,並對這臺機器進行原因分析。SLAVE STATUS狀態如下圖:



我們經過幾次SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1操作(跳過當前執行位置),發現依然會存在卡住的問題。於是我們想找出卡住的原因,根據上圖給出的位置,我們隊relay_log進行了分析

mysqlbinlog relaylog.008077 --start-position=223496095 -f -d xxx | more
結果如下圖:


我們發現每次卡住的位置都在unkown event事件前面,每次跳過後碰到這個就會卡住。
中繼日誌中產生這樣的時間的原因無從得知,可能是我們調整了表結構分區造成的。
最後我們多次執行SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1操作後不再存在卡住的情況。


發佈了32 篇原創文章 · 獲贊 157 · 訪問量 40萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章