返回部落格

快速修復 MySQL 中損壞資料表的解決方案:教學指南

快速修復 MySQL 中損壞資料表的解決方案:教學指南

MySQL 是最受歡迎的開源 RDBMS(關聯式資料庫管理系統)。它是快速增長的 LAMP Stack 中不可或缺的一部分,並在開發人員和系統管理員中贏得了極高的人氣。與 非關聯式資料庫 相比,SQL 提供了出色的功能來有效地整理、儲存和管理資料。SQL 資料庫獨特的資料表排列功能和卓越的能力,使其成為各種規模(無論大小)組織中所有層級的首選。

MySQL 資料表在極少數情況下可能會損壞,這表示發生了此類錯誤,且其中儲存的資料無法讀取。當您嘗試從損壞的資料表中讀取資料時,伺服器會崩潰並拋出錯誤或錯誤列表。

MySQL 資料表損壞的潛在原因

以下是資料表損壞的一些最典型原因:

  • MySQL 服務在重啟後崩潰。
  • 機器因電力中斷而意外關機。
  • 記憶體損壞或硬體故障。
  • 軟體錯誤,存在於 OS 或 SQL 程式碼中。
  • MySQL 在寫入時關閉。
  • 系統轉為 OFF 狀態,此時正在更新 SQL。

在修復您懷疑已損壞的資料表之前,請先建立資訊目錄的備份。這將有助於降低資料遺失的可能性。在此快速指南中,我們將引導您完成在 MySQL 中修復損壞資料表的疑難排解步驟。

先決條件

要進行本教學,您需要滿足以下條件:

步驟 1:停止 MySQL 服務並備份資料

首先,使用 systemctl 指令停止 MySQL 服務:

停止 SQL 服務後,下一步是將所有現有檔案備份到新目錄中。使用 Ubuntu 的預設資料目錄 /var/lib/mysql/ 來複製所有系統資料:

步驟 2:識別錯誤

接下來,我們將開始調查並識別損壞的資料表。如果該資料表使用的是 MyISAM 儲存引擎,請使用 CHECK TABLE 陳述式並驗證資料表的狀態:

您將在輸出中看到一條訊息,確認損壞的一個或多個資料表。

步驟 3:修復損壞的資料表

如果 MyISAM 資料表上存在錯誤且您已識別出該錯誤,請使用 REPAIR TABLE 陳述式來修復錯誤:

如果修復成功,您應該會看到以下無錯誤的訊息作為輸出:

但是,如果您發現錯誤再次出現,請遵循 MySQL 8.0 版本官方文件 來重建或修復資料表。

MyISAM 儲存引擎 不同,在 InnoDB 儲存引擎 中修復資料表所涉及的 InnoDB 程序有所不同。InnoDB 是 MySQL 8.0 中的預設儲存引擎。它具有自動損壞檢查和修復操作功能。MySQL InnoDB 會透過對其讀取的每個頁面執行總和檢查碼(checksum)來檢查損壞的頁面。如果偵測到不一致,它將自動停止 MySQL 伺服器。

總之,極少需要修復 InnoDB 資料表。InnoDB 具有崩潰復原機制,可以透過重新啟動來解決大多數問題。

嘗試重新啟動 MySQL 服務,看看是否可以存取伺服器:

如果您在重啟後仍無法重建損壞的 InnoDB 資料表,請嘗試 MySQL 文件中建議的「Dump and Reload」方法。此方法涉及使用 mysqldump 工具重新取得對損壞資料表的存取權。必須建立一個資料夾來儲存並保留該資料表的 邏輯備份。錯誤修復後,它會將資料表重新載入回資料庫中。

步驟 4:利用 innodb_force_recovery 選項

如果伺服器持續崩潰或無法連線,請嘗試使用 InnoDB 中的 force_recovery 選項。將 ON the force_recovery 選項是還原 MySQL 資料庫的極佳方法。您可以透過在 mysqld.cnf 檔案中,使用 nano 文字編輯器進行修改來啟用此選項:

[mysqld] 區段下方插入以下行:

innodb force recovery

儲存並關閉檔案,然後重啟 MySQL 服務。

步驟 5:建立 a mysqldump 檔案

如果您能夠存取損壞的資料表,請使用 mysqldump 選項將所有傾印內容放入新檔案中。根據您的偏好為新檔案命名,並確保在末尾加上 .sql 副檔名。在這裡,我們將檔案命名為 demo.sql:

之後,使用 DROP TABLE 查詢從資料庫中移除該資料表。您可以使用以下語法,以避免需要重新開啟 MySQL 提示字元:

然後,使用您剛剛準備的傾印文件 demo.sql 來還原資料表:

您已成功修復 MySQL 損壞的資料表,並準備好無縫地操作資料庫。

結論

如果您正在處理大量數據,則很可能會發生資料表損壞或非預期的系統崩潰。值得一提的是,MySQL InnoDB 儲存引擎比以前的 MyISAM 引擎更具容錯能力。使用 InnoDB 儲存引擎的資料表仍有可能損壞,但由於其 自動復原功能.

,資料表損壞和故障的危險已顯著降低。 最後,您可以在我們的 部落格:

祝您使用愉快!

author

Akshay Nagpal

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的創意設計師,專注於透過傳統與創新行銷渠道建立一致的企業形象。他擅長將藝術願景與策略行銷相融合,創造具有影響力的品牌敘事。

留言

目前尚無留言。成為第一個留言的人吧。