如果啟用了 mysql 二進(jìn)制日志,則可通過以下步驟恢復(fù)已刪除的數(shù)據(jù)庫:檢查 binlog 文件并復(fù)制 .ibd 文件到新目錄。創(chuàng)建新數(shù)據(jù)庫。從 .ibd 文件恢復(fù)數(shù)據(jù)庫。導(dǎo)入數(shù)據(jù)(可選)。重新創(chuàng)建外鍵(可選)。重新創(chuàng)建視圖(可選)。
如何恢復(fù)已刪除的 MySQL 數(shù)據(jù)庫
當(dāng) MySQL 數(shù)據(jù)庫被意外刪除時,恢復(fù)數(shù)據(jù)的步驟如下:
步驟 1:檢查 binlog 文件
如果啟用了 MySQL 二進(jìn)制日志(binlog),則可以從中恢復(fù)已刪除的數(shù)據(jù)庫。
導(dǎo)航到 MySQL 數(shù)據(jù)目錄,通常位于 /var/lib/mysql。
查找 .ibd 文件,這些文件包含數(shù)據(jù)庫中的表。
將這些文件復(fù)制到一個新目錄。
步驟 2:創(chuàng)建新數(shù)據(jù)庫
使用以下命令創(chuàng)建一個新的空數(shù)據(jù)庫:
CREATE DATABASE <database_name>;</database_name>
登錄后復(fù)制
步驟 3:恢復(fù)數(shù)據(jù)庫
使用以下命令從 .ibd 文件恢復(fù)數(shù)據(jù)庫:
mysql -uroot -p <new_database_name></new_database_name>
登錄后復(fù)制登錄后復(fù)制
步驟 4:導(dǎo)入數(shù)據(jù)(可選)
如果您在刪除數(shù)據(jù)庫之前導(dǎo)出了數(shù)據(jù),則可以將其導(dǎo)入新數(shù)據(jù)庫:
mysql -uroot -p <new_database_name></new_database_name>
登錄后復(fù)制登錄后復(fù)制
步驟 5:重新創(chuàng)建外鍵(可選)
如果數(shù)據(jù)庫中存在外鍵,則需要重新創(chuàng)建它們:
ALTER TABLE <table_name> ADD FOREIGN KEY (...) REFERENCES ...</table_name>
登錄后復(fù)制
步驟 6:重新創(chuàng)建視圖(可選)
如果數(shù)據(jù)庫中存在視圖,則需要重新創(chuàng)建它們:
CREATE VIEW <view_name> AS <view_definition>;</view_definition></view_name>
登錄后復(fù)制
提醒:
在執(zhí)行恢復(fù)過程之前,請確保已經(jīng)備份了現(xiàn)有的數(shù)據(jù)。
如果沒有啟用 MySQL 二進(jìn)制日志,則可能無法恢復(fù)刪除的數(shù)據(jù)庫。
如果數(shù)據(jù)庫包含大量數(shù)據(jù),恢復(fù)過程可能需要一些時間。