本文適用于,MySQL無法啟動,但數(shù)據(jù)文件未丟失的情況。
Mysql因意外情況,導(dǎo)致無法啟動,數(shù)據(jù)庫未做備份的情況下,如何將數(shù)據(jù)遷移至其他數(shù)據(jù)庫中。
原數(shù)據(jù)庫地址:192.168.1.100(以下簡稱A服務(wù)器)
新數(shù)據(jù)庫地址:192.168.2.100(以下簡稱B服務(wù)器)
數(shù)據(jù)恢復(fù)流程:
- 進(jìn)入A服務(wù)器,輸入命令 cat /etc/my.cnf (如文件不在當(dāng)前位置,可使用find / -name my.cnf 命令查詢文件位置)
找到datadir 路徑
- 通過cd /www/server/data 命令,進(jìn)入數(shù)據(jù)文件夾。
當(dāng)前文件夾里面就是mysql中所有庫的數(shù)據(jù)文件存放位置。
下面以bus文件夾中文件,演示具體如何恢復(fù)文件。
- 進(jìn)入B服務(wù)器,創(chuàng)建與A服務(wù)器bus庫,用戶名,密碼相同的庫。創(chuàng)建成功后,通過上面方法,進(jìn)入數(shù)據(jù)文件目錄,也會出現(xiàn)一個(gè)bus文件夾。
- 停止B服務(wù)器mysql服務(wù),將A服務(wù)器中bus文件夾中,除db.opt文件外的其他文件打包,發(fā)送至B服務(wù)器數(shù)據(jù)目錄的bus文件夾中。解壓。
- 通過命令行,將/www/server/data/bus文件夾的所有者和組,更改成mysql
更改所有者
Chown -R mysql /www/server/data/bus
更改組
Chgrp -R mysql /www/server/data/bus
- 更改成功后,啟動B服務(wù)器數(shù)據(jù)庫,進(jìn)入數(shù)據(jù)庫后,如提示error: 1146: Table doesn't exist,還需將A服務(wù)器,數(shù)據(jù)文件夾中ibdata1 文件,拷貝至B服務(wù)器相應(yīng)位置,同時(shí)更改相應(yīng)的所有者和組權(quán)限。
至此,數(shù)據(jù)文件恢復(fù)數(shù)據(jù)庫工作完成,
注1:如未改動數(shù)據(jù)文件夾所有者和組,啟動數(shù)據(jù)庫后,進(jìn)入bus庫點(diǎn)擊相應(yīng)表名會出現(xiàn) ERROR #1017 :Can't find file: '/xxx.frm' 錯(cuò)誤或ERROR #1036 Table '表名' is read only
注2:如數(shù)據(jù)庫較多,可能會發(fā)現(xiàn),部分?jǐn)?shù)據(jù)庫文件中有.frm .MYD .MYI這三種文件,部分?jǐn)?shù)據(jù)庫中只有.frm文件,這是因?yàn)镸ySQL存儲表的時(shí)候,使用的默認(rèn)數(shù)據(jù)庫存儲引擎是InnoDB,而使用InnoDB存儲引擎的時(shí)候,是不生成.MYD 和.MYI文件的。
本文適用于,mysql無法啟動,但數(shù)據(jù)文件未丟失的情況。
Mysql因意外情況,導(dǎo)致無法啟動,數(shù)據(jù)庫未做備份的情況下,如何將數(shù)據(jù)遷移至其他數(shù)據(jù)庫中。
原數(shù)據(jù)庫地址:192.168.1.100(以下簡稱A服務(wù)器)
新數(shù)據(jù)庫地址:192.168.2.100(以下簡稱B服務(wù)器)
數(shù)據(jù)恢復(fù)流程:
- 進(jìn)入A服務(wù)器,輸入命令 cat /etc/my.cnf (如文件不在當(dāng)前位置,可使用find / -name my.cnf 命令查詢文件位置)
找到datadir 路徑
- 通過cd /www/server/data 命令,進(jìn)入數(shù)據(jù)文件夾。
當(dāng)前文件夾里面就是mysql中所有庫的數(shù)據(jù)文件存放位置。
下面以bus文件夾中文件,演示具體如何恢復(fù)文件。
- 進(jìn)入B服務(wù)器,創(chuàng)建與A服務(wù)器bus庫,用戶名,密碼相同的庫。創(chuàng)建成功后,通過上面方法,進(jìn)入數(shù)據(jù)文件目錄,也會出現(xiàn)一個(gè)bus文件夾。
- 停止B服務(wù)器mysql服務(wù),將A服務(wù)器中bus文件夾中,除db.opt文件外的其他文件打包,發(fā)送至B服務(wù)器數(shù)據(jù)目錄的bus文件夾中。解壓。
- 通過命令行,將/www/server/data/bus文件夾的所有者和組,更改成mysql
更改所有者
Chown -R mysql /www/server/data/bus
更改組
Chgrp -R mysql /www/server/data/bus
- 更改成功后,啟動B服務(wù)器數(shù)據(jù)庫,進(jìn)入數(shù)據(jù)庫后,如提示error: 1146: Table doesn't exist,還需將A服務(wù)器,數(shù)據(jù)文件夾中ibdata1 文件,拷貝至B服務(wù)器相應(yīng)位置,同時(shí)更改相應(yīng)的所有者和組權(quán)限。
至此,數(shù)據(jù)文件恢復(fù)數(shù)據(jù)庫工作完成,
注1:如未改動數(shù)據(jù)文件夾所有者和組,啟動數(shù)據(jù)庫后,進(jìn)入bus庫點(diǎn)擊相應(yīng)表名會出現(xiàn) ERROR #1017 :Can't find file: '/xxx.frm' 錯(cuò)誤或ERROR #1036 Table '表名' is read only
注2:如數(shù)據(jù)庫較多,可能會發(fā)現(xiàn),部分?jǐn)?shù)據(jù)庫文件中有.frm .MYD .MYI這三種文件,部分?jǐn)?shù)據(jù)庫中只有.frm文件,這是因?yàn)镸ySQL存儲表的時(shí)候,使用的默認(rèn)數(shù)據(jù)庫存儲引擎是InnoDB,而使用InnoDB存儲引擎的時(shí)候,是不生成.MYD 和.MYI文件的。