本文適用於,mysql無法啟動,但資料檔案未丟失的情況。
Mysql因意外情況,導致無法啟動,資料庫未做備份的情況下,如何將資料遷移至其他資料庫中。
原資料庫地址:192.168.1.100(以下簡稱A伺服器)
新資料庫地址:192.168.2.100(以下簡稱B伺服器)
資料恢復流程:
找到datadir 路徑
當前資料夾裡面就是mysql中所有庫的資料檔案存放位置。
下面以bus資料夾中檔案,演示具體如何恢復檔案。
更改所有者
更改組
至此,資料檔案恢復資料庫工作完成,
注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檔案的。
本文適用於,mysql無法啟動,但資料檔案未丟失的情況。
Mysql因意外情況,導致無法啟動,資料庫未做備份的情況下,如何將資料遷移至其他資料庫中。
原資料庫地址:192.168.1.100(以下簡稱A伺服器)
新資料庫地址:192.168.2.100(以下簡稱B伺服器)
資料恢復流程:
進入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更改所有者
更改組
更改成功後,啟動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檔案的。