1. 程式人生 > 其它 >pt-online-schema-change導致鎖等待Waiting for table metadata lock 引發線上小事故(異常)

pt-online-schema-change導致鎖等待Waiting for table metadata lock 引發線上小事故(異常)

#####################################

背景:

   業務對mysql叢集的一個從庫例項的dashboard_scheduled_history表發起了一個慢查詢,有多慢呢?已經執行了一個半小時還沒執行完,這個表是個大表,有4000多萬行,然後我就執行了pt-online-schema-change對這個表新增索引,再然後就去上了個廁所。

問題:

慢查詢導致pt-online-schema-change工具一直無法獲得元資料鎖,該工具一直處於Waiting for table metadata lock狀態,導致該從庫例項主從延遲越來越大,業務寫入的資料,在該從庫上查不到從而導致業務異常。

臨時解決:

1)踢掉該從庫例項的流量;

2)kill掉業務慢查詢;

3)執行pt-online-schema-change進行修改表結構;

4)當該從庫例項追上主庫後,再將流量打到該從庫例項;

如何永久性解決這個問題呢?

1)dba執行ddl的時候,還是不能大意,需要關注執行狀況,發現一直沒動靜,估計就是拿不到元資料鎖了,需要先kill掉慢查詢或未提交的事務

2)執行pt-online-schema-change工具後,應該自動化跟蹤該工具的執行狀態,一旦發現該工具處於Waiting for table metadata lock狀態,就kill掉這個工具的程序,直接返回

########################################

[email protected]