Innodb

強制終止長時間執行的索引創建

  • October 15, 2021

我有一個 192GB 的表,我開始在一夜之間添加索引。

幾個小時後,這種情況仍在繼續。

啟動時alter table數據庫非常安靜。

在此期間還有其他查詢嘗試執行,包括一些 cron 作業,因此當我醒來時,其中一些查詢的多個副本被此索引添加阻塞。我試圖殺死ALTER TABLE,但它仍然顯示:

204997797      root       localhost     web_db      23793 Killed manage k alter table reports add key requisition_ix (requisition_id)

我還殺死了在夜間執行的其他查詢,但尚未停止與數據庫的新連接。

有沒有辦法強行殺死它?

percona-xtradb-cluster-server-5.5(目前獨立)

伺服器上目前有 376GB 可用空間。有#sql-5db_c3804a5.frm文件,但我看不到其他臨時文件。

error.log我看到這樣的事情:

211015  8:07:22 [ERROR] Table web_db/reports contains 14 indexes inside InnoDB, which is different from the number of indexes 13 defined in the MySQL

如果絕對沒有辦法殺死它,有沒有辦法監控索引添加/回滾的進度?

有沒有辦法強行殺死它?

沒門。您必須等待終止的查詢修改回滾。即使您應該嘗試重新啟動伺服器,在重新啟動期間也會繼續回滾。並且強制執行此過程可能會導致數據損壞。等待…

有什麼方法可以查看進度嗎?

沒有這樣的功能。

引用自:https://dba.stackexchange.com/questions/301166