Mysql沒法啓動狀況下,如何恢復數據?

本文適用於,mysql沒法啓動,但數據文件未丟失的狀況。mysql

Mysql因意外狀況,致使沒法啓動,數據庫未作備份的狀況下,如何將數據遷移至其餘數據庫中。sql

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

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

數據恢復流程:spa

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

找到datadir 路徑命令行

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

當前文件夾裏面就是mysql中全部庫的數據文件存放位置。code

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

  • 進入B服務器,建立與A服務器bus庫,用戶名,密碼相同的庫。建立成功後,經過上面方法,進入數據文件目錄,也會出現一個bus文件夾。
  • 中止B服務器mysql服務,將A服務器中bus文件夾中,除db.opt文件外的其餘文件打包,發送至B服務器數據目錄的bus文件夾中。解壓。
  • 經過命令行,將/www/server/data/bus文件夾的全部者和組,更改爲mysql

更改全部者blog

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

更改組

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文件的。

相關文章
相關標籤/搜索