当前位置: 首页 > 数据库, 系统 > 正文

mysql InnoDB crash and recover

[摘要] 因为机器突然断电,mysql innodb crash 了。数据文件损坏导致mysql进程起不来,几经折腾,终于把服务起来了,但是解决过程并不完美,下面还是把处理经过记录一下。

Mysql版本:5.6.36,
操作系统:CentOS release 6.8
crash
先贴出来mysql.log 日志的报错情况:

根据http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html的提示,需要修复数据库和表。
由于mysql现在仍无法启动,所以需要增加如下:
[mysqld]
innodb_force_recovery = 4

关于innodb_force_recovery的几个值介绍:

在my.cnf中添加完 innodb_force_recovery 配置后,mysql可以启动了,然后尝试修复所有的数据库:

全部修复完成,去掉innodb_force_recovery,再重启mysql,仍然报错。

使用xtrabackup的操作中发现了这样一个提示:
xtrabackup: Error: failed to read page after 10 retries. File ./ibdata1 seems to be corrupted.

于是尝试在 innodb_force_recovery = 4 的情况下,使用xtrabackup备份一下数据库,然后重建mysql。
这个过程中 innobackupex 备份是成功的,重建mysql也是成功的,重新apply-log和copy-back也是成功,但是恢复之后的数据库仍然无法启动,跟之前的情况类似,已经很无语了。

无奈之下选择使用了innobackupex最近的一次备份进行恢复,完成后重启mysql服务成功!
但是问题是最近的备份距现在已经过去了20个小时,innodb crash 这段时间的更新会丢失,由于在innodb_force_recovery = 4的状态下,mysql是可以启动的,所以在原来的数据基础上启动了新的端口:3307,然后手动比较3307和3306两套数据的变化!
唉,太挫了~

本文固定链接: https://www.sudops.com/mysql-innodb-crash-recover.html | 运维·速度

该日志由 Fisher 于2018年01月05日发表在 数据库, 系统 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: mysql InnoDB crash and recover | 运维·速度
关键字: ,

mysql InnoDB crash and recover:等您坐沙发呢!

发表评论


Time limit is exhausted. Please reload the CAPTCHA.

快捷键:Ctrl+Enter