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