解决Mysql8.0循环启动失败[MY-013183] [InnoDB] Assertion failure:fil0fil.cc:initial_fsize== (file->size*phy

1、在本地测试环境跑数据过程中磁盘满了导致Mysql出现了断言错误宕机,无法重启。

2、tail -n 100 mysql_error.log 得到关键错误信息

 [ERROR] [MY-013183] [InnoDB] Assertion failure: fil0fil.cc:10661:initial_fsize == (file->size * phy_page_size) thread 140342456231488

mysql判断 初始化文件大小与【文件大小*物理页大小】不一致

3、清理出一定的磁盘空间

4、参考官方文档 mysql强制恢复文档 MySQL :: MySQL 8.0 Reference Manual :: 15.21.3 Forcing InnoDB Recovery 。

在mysql配置文件中增加 一行

innodb_force_recovery = 1

如果1不行,继续尝试2 和3,不可轻易尝试 4、5、6,因为4、5、6会造成更大的数据损害,而且3及以下虽然不能增删改查,但是可以操作删除表,而4及以上不再能删除表。

5、如果innodb_force_recovery = 3还启动不了,回顾下当时可能哪几个表在更新数据。

将数据库目录下的表ibd文件移走。重新尝试innodb_force_recovery1到3启动。应该可以启动成功。

6、启动后将被移走的ibd文件重新移回数据库文件夹目录内。此时可以Select历史的表内数据。Select 到新数据时候会重新触发断言错误,导致mysql自动重启。

7、将出问题的表数据备份

8、通过mysql客户端命令 drop table删除这个出问题 的表。

9、删除mysql配置文件中的 innodb_force_recovery配置。

10、重启 mysql,应该可以正常启动起来。

11、出问题的表数据导入新的临时库,确认完全没问题后重新导入到原数据库。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值