admin管理员组文章数量:1618692
1、在本地测试环境跑数据过程中磁盘满了导致Mysql出现了断言错误宕机,无法重启。
2、tail -n 100 mysql_error.log 得到关键错误信息
[ERROR] [MY-013183] [InnoDB] Assertion failure: fil0fil: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、出问题的表数据导入新的临时库,确认完全没问题后重新导入到原数据库。
本文标签: Assertionfailureinnodbfil0filsize
版权声明:本文标题:解决Mysql8.0循环启动失败[MY-013183] [InnoDB] Assertion failure:fil0fil.cc:initial_fsize== (file->size*phy 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1728784785a1173185.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论