Mysql無法啟動情況下,如何恢復數據?


本文適用於,mysql無法啟動,但數據文件未丟失的情況。

Mysql因意外情況,導致無法啟動,數據庫未做備份的情況下,如何將數據遷移至其他數據庫中。

原數據庫地址:192.168.1.100(以下簡稱A服務器)

新數據庫地址:192.168.2.100(以下簡稱B服務器)

數據恢復流程:

  1. 進入A服務器,輸入命令 cat /etc/my.cnf (如文件不在當前位置,可使用find / -name my.cnf  命令查詢文件位置)

找到datadir 路徑

  • 通過cd /www/server/data 命令,進入數據文件夾。

當前文件夾里面就是mysql中所有庫的數據文件存放位置。

下面以bus文件夾中文件,演示具體如何恢復文件。

  • 進入B服務器,創建與A服務器bus庫,用戶名,密碼相同的庫。創建成功后,通過上面方法,進入數據文件目錄,也會出現一個bus文件夾。

  • 停止B服務器mysql服務,將A服務器中bus文件夾中,除db.opt文件外的其他文件打包,發送至B服務器數據目錄的bus文件夾中。解壓。

  • 通過命令行,將/www/server/data/bus文件夾的所有者和組,更改成mysql

更改所有者

Chown -R mysql /www/server/data/bus

更改組

Chgrp -R mysql /www/server/data/bus

  • 更改成功后,啟動B服務器數據庫,進入數據庫后,如提示error: 1146: Table doesn't exist,還需將A服務器,數據文件夾中ibdata1 文件,拷貝至B服務器相應位置,同時更改相應的所有者和組權限。

至此,數據文件恢復數據庫工作完成,

注1:如未改動數據文件夾所有者和組,啟動數據庫后,進入bus庫點擊相應表名會出現 ERROR #1017 :Can't find file: '/xxx.frm' 錯誤或ERROR #1036 Table '表名' is read only

注2:如數據庫較多,可能會發現,部分數據庫文件中有.frm .MYD .MYI這三種文件,部分數據庫中只有.frm文件,這是因為MySQL存儲表的時候,使用的默認數據庫存儲引擎是InnoDB,而使用InnoDB存儲引擎的時候,是不生成.MYD 和.MYI文件的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM