Contents
  • 意外断电恢复之后,发现mysql服务没有随机自动起来,手动启动后发现启动失败

启动mysql失败及错误日志

ibdata1 这个文件找不到吗?我看了下data目录是有这个文件的。

ibdata1

为了保险期间我给它做了备份,然后重新复制到这个目录中,发现copy失败

copy文件ibdata1失败

大概率是文件损坏了,请教汪大神之后确认了这点,我的ibdata1损坏了,今日大吉

1
2
3
4
5
6
7
8
9
10
[root@guanli mysql]# innochecksum /data/mysql/ibdata1
Error: Was not able to read the minimum page size of 1024 bytes. Bytes read was 0


改成绝对路径后,依然是IO错误。
加上innochecksum 检查结果,确定是innodb 数据文件被破坏了

原因是在断电时,内存中有部分数据没有刷入硬盘。
在有时会丢失部分数据;
有时会造成数据破坏,造成mysql软件识别不了。
  • 怎么办????
1
2
3
4
有精力的小伙伴可以尝试着恢复一下数据
https://www.cnblogs.com/kerrycode/p/9502209.html

不过我的数据库有容灾机制,每日凌晨会备份数据库,断电是早上10点半,9点到10点半之间系统生成的数据极其少,可以恢复数据库然后再重新操作一次。

然后就进入重新初始化mysql的步骤

1
2
3
4
5
6
7
8
9
删掉data目录所有文件后

初始化
mysqld —defaults-file=/usr/local/mysql/my.cnf —initialize

无密码模式进入mysql
mysqld_safe —user=mysql —skip-grant-tables —skip-networking

修改好密码并设置权限,接下来倒入备份数据进去。
Contents