回覆列表
  • 1 # 使用者4473563183254

    本文適用於,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檔案的。

  • 中秋節和大豐收的關聯?
  • 抵押車怎麼買才安全?