最近公司的一台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 結果如下圖: