MYSQL8启动失败引起的.IDB数据库迁移修复
    文章作者:恒爱网络 阅读次数:1150 发布时间:2024-3-12

    因客户未知原因,导致服务器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数据文件一个个的恢复成功,这时候再查看表里面的内容,已经正常了。

    数据表多的情况下,会比较繁琐,但是能解决问题,也是一种新的收获.