MySQL 資料修復 (Force InnoDB Recovery)
前言 在日常維運中,MySQL 的數據庫可能因各種原因遭到損壞,例如硬碟故障、斷電等。最近工作上就遇到客戶環境出現異常的現象,資料庫疑似寫入壞資料導致 MySQL 不斷跳出此錯誤 Operation cannot be performed. The table 'xxx' is missing, corrupt or contains bad data. 當下處理時還一頭霧水,因為根本無法查詢資料,SELECT 資料時,該資料表都會跳出此錯誤訊息,連資料都無法 query,又該怎麼知道哪裡有壞資料呢? Forcing InnoDB Recovery 針對這種棘手的情況 MySQL 提供了 InnoDB 強制恢復模式(InnoDB Force Recovery) 來協助修復損壞數據。此模式允許管理人員在無法啟動的情況下訪問資料並嘗試進行修復。 MySQL 設定檔 以下是用 MySQL 5.7.30 的環境 具體操作如下: 首先,要先找到 MySQL 的設定檔 (my.cnf),通常會位於底下幾種路徑 (Docker container 也是一樣) /etc/my.cnf /etc/mysql/my.cnf $MYSQL_HOME/my.cnf [datadir]/my.cnf ~/.my.cnf 如果都找不到的話,可以執行 mysql --help,從輸出的 log 中去找 my.cnf 可能的檔案路徑 Default options are read from the following files in the given order: /etc/my....