Maria DB Table Lock

昨天晚上同事回報某些頁面會讀取到Timeout,但開發環境卻沒有這個問題,所以我個人猜測和DB逃不了關係,同一份Code。不是DB有問題,就是資料內容有問題。

遇到DB有問題的時候,習慣先看show processlist,果不其然在某台Slave機上,出現整片的lock

依照正常判斷,應該是某一個Query卡住無法結束解開lock,造成後面所有Query都在Waiting lock。

再使用select * from information_schema.innodb_trx去查看TRANSACTION的狀況

看trx_started的時間,一般都是前面的卡住後面,所以用kill process id,讓DB自己rollback

搞定,再來就是要找出一切的源頭。
show slave status查看時發現,Slave_SQL_Running是No

往後查看發現錯誤訊息是表壞了,Last_SQL_Error顯示Error 'Table is marked as crashed and last (automatic?) repair failed' on querym
用check table檢查出現Table is marked as crashed and last repair failed,的確是表有問題,嘗試repair table

收工