產線事故:刪除創建mysql索引

單表數據量:670W;

刪除一個老的索引,新建一個新的索引。

事故原因:

先刪除索引,應用訪問量大,沒有索引自然慢,數據庫CPU飈到100%;新索引創建失敗。

直接造成交易打烊。

日誌:

------[2019-03-26 19:39:48]------
檢查Threads_running(運行中的線程數量),它在一定程度上代表了當前數據庫的負荷。
[Threads_running : 28 ] 正常。

------[2019-03-26 19:39:48]------
set lock_wait_timeout=10

------[2019-03-26 19:39:48]------
開始執行SQL...

------[2019-03-26 19:39:59]------
Lock wait timeout exceeded; try restarting transaction

------[2019-03-26 19:39:59]------
重試執行第1次...

------[2019-03-26 19:39:59]------
檢查Threads_running(運行中的線程數量),它在一定程度上代表了當前數據庫的負荷。

------[2019-03-26 19:39:59]------
[Threads_running : 142 ]當前數據庫繁忙。暫停5S後將執行第1次重試,請等待...

------[2019-03-26 19:40:04]------
開始重試檢查Threads_running。

------[2019-03-26 19:40:04]------
[Threads_running : 143 ]當前數據庫繁忙。暫停5S後將執行第2次重試,請等待...

------[2019-03-26 19:40:09]------
開始重試檢查Threads_running。

------[2019-03-26 19:40:09]------
[Threads_running : 143 ]當前數據庫繁忙。暫停5S後將執行第3次重試,請等待...

------[2019-03-26 19:40:14]------
開始重試檢查Threads_running。

------[2019-03-26 19:40:14]------
[Threads_running : 143 ]當前數據庫繁忙。暫停5S後將執行第4次重試,請等待...

------[2019-03-26 19:40:19]------
開始重試檢查Threads_running。

------[2019-03-26 19:40:19]------
[Threads_running : 143 ]當前數據庫繁忙。暫停5S後將執行第5次重試,請等待...

------[2019-03-26 19:40:24]------
開始重試檢查Threads_running。

------[2019-03-26 19:40:24]------
[Threads_running : 143 ] 當前數據庫繁忙!任務取消執行,請稍後數據庫空閒後重試!

 

處理方案:

下線應用,kill掉CPU鏈接,等CPU降下來手工創建索引。啓動應用,正常。

 

經驗教訓:

1、加強DDL語句審覈

2、先建索引,再刪索引,順序一定要對,尤其產線。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章