首頁 >資料庫 >mysql教程 >我們可以僅從 FRM 和 IBD 檔案還原 MySQL 表結構嗎?

我們可以僅從 FRM 和 IBD 檔案還原 MySQL 表結構嗎?

Barbara Streisand
Barbara Streisand原創
2025-01-07 19:06:41345瀏覽

Can We Recover MySQL Table Structure from FRM and IBD Files Only?

僅從 FRM 和 IBD 檔案還原 MySQL 表結構

問題:

使用者經常遇到需要復原資料庫但只能存取 FRM 和 IBD 檔案的情況。

能否恢復表結構?

可以,即使沒有 IB_LOG 文件,也可以從 FRM 文件還原表結構。

步驟:

1. 從 FRM 檔案中擷取 SQL 建立語句:

  • 安裝 MySQL Utilities。
  • 使用 mysqlfrm --diagnostic 指令為每個 FRM 檔案產生 SQL 建立語句。
  • 輸出將包含類似以下的語句:
<code class="language-sql">CREATE TABLE `example_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(150) NOT NULL,
  `photo_url` varchar(150) NOT NULL,
  `password` varchar(600) NOT NULL,
  `active` smallint(6) NOT NULL,
  `plan` int(11) NOT NULL,
  PRIMARY KEY `PRIMARY` (`id`)
) ENGINE=InnoDB;</code>

2. 使用 SQL 語句建立表格:

  • 刪除任何現有表格(如有必要)。
  • 執行步驟 1 中獲得的 SQL 建立語句,以建立與原始表具有相同結構的表。

3. 復原資料:

  • 使用以下指令刪除新表格資料:
<code class="language-sql">ALTER TABLE example_table DISCARD TABLESPACE;</code>
  • 刪除表格目錄中對應的 IBD 檔案。
  • 將原始 IBD 檔案複製到目錄:
<code class="language-bash">cp backup/example_table.ibd /path/to/example_table.idb</code>
  • 確保 IBD 檔案具有正確的擁有權和權限。
  • 匯入舊資料:
<code class="language-sql">ALTER TABLE example_table IMPORT TABLESPACE;</code>

以上是我們可以僅從 FRM 和 IBD 檔案還原 MySQL 表結構嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn