pt-online-schema-change導致鎖等待Waiting for table metadata lock 引發線上小事故(異常)
阿新 • • 發佈:2021-09-08
#####################################
背景:
業務對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]