因客戶未知原因,導(dǎo)致服務(wù)器MYSQL8無法啟動了。尋求我們的協(xié)助。試了N久,無法啟動成功。只能判斷是data目錄里面出問題了。退求其次,把.IDB數(shù)據(jù)庫遷移到別的機(jī)器上進(jìn)行恢復(fù)。
首先,搭建相同版本的mysql8 ,然后新建帶有相同數(shù)據(jù)庫名和表名以及屬性的值, 如果有相同的程序,建議直接安裝,生成好之后 ,登錄到數(shù)據(jù)庫里執(zhí)行數(shù)據(jù)清空操作。比如phpmyadmin 就很方便。注意是清空,不是刪除數(shù)據(jù)表。
然后對新建的數(shù)據(jù)庫A里的每個(gè)表都執(zhí)行一次,比如 里面還有表xen_table 、 xen_table_column:
ALTER TABLE `xen_table` DISCARD TABLESPACE;
ALTER TABLE `xen_table_column` DISCARD TABLESPACE;
這個(gè)語句是將空表A數(shù)據(jù)庫在表面刪除了。刪除后再看新搭建MYSQL數(shù)據(jù)庫A下,目錄里已經(jīng)看不到了xen_table 、 xen_table_column 了。
然后將直接打包備份出來無法啟動的的數(shù)據(jù)庫的b目錄下的 .idb數(shù)據(jù)庫文件拷貝到空數(shù)據(jù)庫A的目錄里。
在A端再次執(zhí)行恢復(fù)命令,也是一個(gè)個(gè)表恢復(fù),或者做好語句統(tǒng)一執(zhí)行:
ALTER TABLE `xen_table` IMPORT TABLESPACE;
ALTER TABLE `xen_table_column` IMPORT TABLESPACE;
不報(bào)錯(cuò)的情況下,A數(shù)據(jù)文件一個(gè)個(gè)的恢復(fù)成功,這時(shí)候再查看表里面的內(nèi)容,已經(jīng)正常了。
數(shù)據(jù)表多的情況下,會比較繁瑣,但是能解決問題,也是一種新的收獲.