MySQL/MariaDB启动失败,提示:InnoDB: Missing MLOG_CHECKPOINT at 3265917829 between the checkpoint 326591782
-
MySQL解决服务器异常关闭导致坏表问题。
问题
上班启动服务,发现连接数据库异常,去服务器查看MySQL进程,发现MySQL启动失败。由于周末期间服务器异常关闭,查询日志发现InnoDB: Ignoring the redo log due to missing MLOG_CHECKPOINT between the checkpoint这个问题。
解决
执行查询命令,查找MySQL的配置文件路径
find / -name 'my.cnf'
innodb_force_recovery选项
innodb_force_recovery是一个用于控制InnoDB恢复模式的配置选项。通过设置不同的值,可以控制MySQL在启动时对损坏的InnoDB表进行不同程度的恢复操作。这个选项的值范围从1到6,每个值都有不同的恢复级别和可能的风险。innodb_force_recovery = 1:尝试恢复损坏的表,但不会执行任何写操作。innodb_force_recovery = 2:尝试恢复损坏的表,并允许进行写操作,但会忽略一些可能导致错误的检查。innodb_force_recovery = 3:尝试恢复损坏的表,并允许进行写操作,同时会忽略一些可能导致错误的检查和修复操作。innodb_force_recovery = 4:允许对损坏的表进行更深入的恢复操作,但可能会导致数据丢失。innodb_force_recovery = 5:允许对损坏的表进行更深入的恢复操作,并忽略更多的检查和修复操作,可能导致数据丢失。innodb_force_recovery = 6:尝试进行最激进的恢复操作,几乎忽略所有的检查和修复操作,可能导致大量数据丢失。
[mysqld] innodb_force_recovery=6
如上操作MySQL是启动成功了,但是又出现新的错误,lost connections during query.
根据上述错误,发现是由于设置的innodb_force_recovery强制恢复设置导致,将设置注释。
将MySQL的data进行备份
mysqldump -u root -p --all-databases > all_databases.sql
或者直接把数据库目录物理备份,以防数据丢失或不可逆的操作。
然后删除ib_logfile0、ib_logfile1、ibdata1、*.ibd文件,重启MySQL成功,然后将之前备份的数据通过工具导入到数据库中。如果想偷懒,不重新导入也行~
推荐阅读
文章标签:
版权声明: 本文除特别说明外均由 麒麟在线 原创
本文链接: https://www.70ol.com/jishu/362.html,尊重共享,欢迎转载,请自觉添加本文链接,谢谢!
分享本文: 请填写您的分享代码。
呃 本文暂时没人评论 来添加一个吧
发表评论