本文目錄一覽:
mysql8 ibdata文件丟失怎麼恢複數據
因為磁碟空間不足,我的一個虛擬機伺服器崩潰了。結果資料庫伺服器進程無法啟動,數據也就無法導出。只能想辦法從資料庫原始文件 ibdata 和 frm 文件中恢復資料庫。
因為沒有經驗,好不容易才找到了恢復方法。特此記錄,以備後用。
磁碟空間不足之後,mysqld 進程無法啟動,提示「Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)」。這真是讓人無比頭大,資料庫根本連接不上。
目錄 Contents
1. 保存原始資料庫文件
2. 恢復方法
3. 參考資料:
1. 保存原始資料庫文件¶
好在資料庫原始文件還在。在我的系統環境和配置情況下,這些文件位於 /var/lib/mysql/ 文件夾下面。假設資料庫名是 test,則這些文件表現為:
–mysql
|–test
|–1.frm
|–2.frm
|…
|–mysql
|…
|–ib_logfile0
|–ib_logfile1
|–ibdata1
|…
這些就是原始資料庫文件,可以用來恢復資料庫。將這些文件額外保存一份,以防萬一。
2. 恢復方法¶
我的原始虛擬機完全沒有磁碟空間而無法啟動資料庫伺服器進程。雖然試著刪除一些不需要的文件,但是資料庫卻始終無法連接。於是我新建了一個幾乎一樣的虛擬機(當然磁碟加大了),試圖將這些資料庫文件導入並恢復資料庫。
在經歷了很多錯誤之後,終於找到了正確的方法:
安裝完成新伺服器之後,通過命令行新建了與原來一樣的資料庫:資料庫名稱、用戶名、密碼都一樣。如果有多個資料庫需要恢復,就都給建好。(跟配置新伺服器一樣,參見安裝和配置 MYSQL 資料庫伺服器。)
停止 mysqld 進程
service mysqld stop
將備份的原始資料庫文件中的所有 .frm 文件(保持原來的目錄結構)和 ibdata1 文件複製到新伺服器的資料庫文件目錄中(如果新伺服器操作系統和配置環境一樣,那麼目錄結構也一樣),其它文件不要。
使用 -innodb_force_recovery=6參數啟動資料庫伺服器進程,這裡是
/etc/init.d/mysqld start -defaults-file=/etc/my.cnf -standalone -console -innodb_force_recovery=6
OK,資料庫恢復完成。
怎麼通過data來恢復mysql數據?
可以嘗試:
1、新建一個一樣名字的資料庫;
2、關掉mysql,把備份的data數據覆蓋進現在mysql的data中
3、啟動mysql進去看看
怎麼恢復mysql資料庫怎麼恢複數據
簡單情況下:進入原來mysql安裝路徑下的data文件夾下,找到相應的庫和ibdata1,進行copy,就可回復原來的數據。
複雜情況下:
從另一台機上把MySQL資料庫的mysql文件夾拷貝到本地機上,目的是恢複本地機對數據的訪問和操作。經過如下幾種情況的操作。
1. 在本地重裝MySQL(安裝目錄D:\Program Files\MySQL\MySQL Server 5.0),直接把mysql文件夾拷貝至D:\Program Files\MySQL\MySQL Server 5.0\。結果,失敗:資料庫連接錯誤。
2. 卸載後重裝MySQL,將D:\Program Files\MySQL\MySQL Server 5.0\下的數據備份,只把mysql\data文件夾全部內容拷貝到D:\Program Files\MySQL\MySQL Server 5.0\data下。結果,失敗:資料庫連接錯誤。將備份的數據還完覆蓋。結果,失敗,還是連接不上資料庫。
3. 卸載後重裝MySQL,將mysql\data文件夾里的cf1,last文件夾(這兩個是原來MySQL里的資料庫)拷貝進D:\Program Files\MySQL\MySQL Server 5.0\data。連接成功,在Navicat for MySQL里看到資料庫cf1和last,但是不能訪問,因為數據全為零。明白了原來data里以資料庫命名的文件存儲的是資料庫的表結構,不是元數據。下一步,把data文件夾里的ibdata1文件(3.4G大,明顯存儲了元數據)拷貝到D:\Program Files\MySQL\MySQL Server 5.0\data里,代替原來的ibdata1文件。重啟電腦,打開Navicat for MySQL,連接成功,數據可以訪問操作。
至此,操作終於成功。其實當初在那台機上把數據導出來,而不是現在直接把文件夾mysql複製過來會更容易恢復。但那台機已經重裝了系統,也就是說MySQL失效了。
原創文章,作者:MWLDM,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/127699.html