记录一次mysql服务节点重启异常修复过程

435 阅读1分钟

环境背景

利用rancher 部署的K8S环境,部署了单节点mysql容器,数据利用PVC进行了持久化。

故障现象:

mysql容器因为某些原因重启,一直无法启动成功,报错error日志为:
[ERROR] InnoDB: Ignoring the redo log due to missing MLOG_CHECKPOINT between the checkpoint 286993093713 and the end  287061357167.
[ERROR] InnoDB: Plugin initialization aborted with error Generic error.
...

企业微信截图_2286d626-e679-42c7-84e7-5bfadff8e6b5.png

排错过程(最好不要尝试删除ib_logfile 的方法)

  1. 初步判断是mysql启动是check redo log的 checkpoint 异常导致无法启动mysql

mysql配置文件中增加配置: innodb_force_recovery=1

这里注意下:这个配置可配置的值为 1~6 , 数值越高,可能丢失数据风险越高。我自己的环境是配置到6mysql才正常启动。

  1. 连接mysql服务将原来的数据dump出来,偶尔会遇到某些表报错,可增加忽略此表的参数 --ignore-table,如果忽略多个表则多次使用此参数
mysqldump -127.0.0.1 -uroot -pxxxxxxxxx --single-transaction  --all-databases   --ignore-table ban_ba.scmsdfs    > fullbackup.sql
  1. 重新启动一个新的mysql实例,
  2. 连接到新的mysql实例 并将之前备份的SQL文件导入新的mysql实例
  3. 单独处理之前报错的表,单独拷贝到新实例。(这里具体看各自情况来判定如何拷贝)
  4. 验证数据完整性。

参考链接: