簡體   English   中英

MySQL InnoDB數據庫恢復

[英]MySQL InnoDB database restore

我必須恢復在MySQL 5.0中無意中DROPped的數據庫。 從檢查備份文件,我似乎只有.FRM文件來保存數據庫數據。

任何人都可以建議這是否是我需要從備份執行數據庫恢復/導入,還是有其他文件我應該完成這個?

.frm文件不是數據文件,它們只存儲“數據字典信息”(參見MySQL手冊 )。 InnoDB將其數據存儲在ib_logfile *文件中。 這就是您進行備份/恢復所需的。 有關詳細信息,請參閱此處

恢復innodb :(假設您的數據文件夾是C:\\ ProgramData \\ MySQL \\ MySQL Server 5.5 \\ data)

  1. 將要還原的數據庫(以數據庫名稱命名)的文件夾復制到C:\\ ProgramData \\ MySQL \\ MySQL Server 5.5 \\ data
  2. 將3個ibdata文件復制到數據文件夾ex。 (C:\\ ProgramData \\ MySQL \\ MySQL Server 5.5 \\ data)

     _ib_logfile0 _ib_logfile1 _ibdata1 
  3. 通過文件右鍵單擊 - >屬性獲取以MB為單位的_ib_logfile0的大小(它應與_ib_logfile1相同)

  4. 編輯mysql配置文件(mysql \\ bin \\ my.ini),使innodb_log_file_size = 343M正好是ibdata文件大小

  5. mysqld --defaults-file = mysql \\ bin \\ my.ini --standalone --console --innodb_force_recovery = 6

  6. 現在您的數據應該回到您的數據庫中。 使用phpmysql或任何其他工具導出它們

哦,我...你遇到了麻煩。 關閉數據庫。 備份innodb文件。 祈禱你丟棄數據庫后沒有做任何事情。

Percona的人員(包括MySQL性能博客的作者)應該能夠幫助你: Percona緊急支持

如果您自己冒險,請隨身攜帶: Innodb數據恢復工具包

物流呢? 您必須閱讀每個頁面(計算機術語頁面...在Innodb的情況下為16k塊)並以此方式重建您的數據。 這是非常低級的工作(我們正在談論打開你的十六進制編輯器並開始計算字節,如果工具包沒有為你做的話),如果你不是一個經驗豐富的程序員,你將會受到傷害。

您可以在此處找到詳細解決方案:

http://www.unilogica.com/mysql-innodb-recovery/ (葡萄牙語文章)

除了innodb_force_recovery的標志之外,我還找到了另一個解決方案: innodb_file_per_table ,它將每個文件中的InnoDB表拆分為MyISAM表。

在崩潰恢復中,您可以丟失的數據少於單個文件ibdata1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM