Mysql

僅使用 .frm、.ibd 文件恢復數據庫

  • September 2, 2022

今天,我很高興失去了所有數據庫。

幸運的是,我的data文件夾仍然完好無損,並且包含所有.frm 文件.ibd

Google搜尋了幾個小時,我想出了一個解決方案,幫助我重新創建.sql文件和表結構,然後導入.ibd文件。

所有這一切的最大幫手是mysqlfrm,我發現它已停產。不確定沒有它我是否能夠做到這一點。

這是我的過程:

將表導出到.sql文件

mysqlfrm --server=root:root@127.0.0.1 ./*.frm  --port 3301 > ./dbtables.sql

獲取所有創建表命令,以便更輕鬆地丟棄/導入表。這與dbtables.sql文件一起用於獲取所有實例,create table因此更容易查找和替換ALTER TABLE mytable DISCARD TABLESPACE/ IMPORT TABLESPACE

^[CREATETABLE].*+$

丟棄.ibd文件命令:

ALTER TABLE mytable DISCARD TABLESPACE;

丟棄後,將.ibd數據庫文件夾中的文件複製到“實時”版本中。

導入.ibd文件命令:

ALTER TABLE wp_actionscheduler_actions IMPORT TABLESPACE;

您知道僅使用.frm,.ibd文件來恢復數據庫的現代方法嗎?

Google 和 Stack Overflow 主要指向不再起作用的舊方法/工具。

任何作業系統的解決方案都會很棒,因為我可以訪問所有作業系統,因此希望可以毫無問題地測試它們。

雖然可能有辦法做到這一點,但我不建議您將其視為任何類型的“恢復”策略。

您知道僅使用 .frm、.ibd 文件來恢復數據庫的現代方法嗎?

不。

您知道恢復數據庫的現代方法嗎…?

是的。

來自您為此目的明確採取的備份。

在發生此類事件後嘗試“修復”數據庫文件就像嘗試啟動汽車並在高速撞到磚牆後將其開走……當然;它可能會起作用,如果你非常非常

$$ un $$幸運,但你完全不知道引擎蓋下可能潛伏著什麼其他危險。 將您的數據庫恢復到已知的良好狀態(您的最後一次備份)並從那裡繼續前進。

這是一個真理,很多時候,學會了艱難的道路,但是……

您沒有至少兩個副本的任何數據都是您不關心失去的數據……

有些人甚至建議走得更遠!閱讀有關三份規則的資訊…

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