Linux环境MySQL出现无法启动的问题解决 [InnoDB] InnoDB initialization has started.

目录

起因

强制启用恢复模式

备份数据


起因

服务器重启了,然后服务器启动完成之后我发现MySQL程序没有启动,错误信息如下:

复制代码
2025-04-19T12:46:47.648559Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2025-04-19T12:46:55.913703Z 0 [Warning] [MY-000081] [Server] option 'max_allowed_packet': unsigned value 107374182400 adjusted to 1073741824.
2025-04-19T12:46:55.913790Z 0 [Warning] [MY-010915] [Server] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2025-04-19T12:46:55.913893Z 0 [System] [MY-010116] [Server] /www/server/mysql/bin/mysqld (mysqld 8.0.24) starting as process 17471
2025-04-19T12:46:56.017284Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.

查看./mysqlbinlog,宝塔的mysqlbinlog日志地址

/www/server/mysql/bin

大概看了binlog日志,发现最后几条的sql并没有问题,然后想起来重启的时候我在导出sql,大概率是因为服务器是突然断点重启,但是此时正在执行sql,造成innodb数据库文件出现错误的原因

强制启用恢复模式

在mysql的配置文件中加入以下内容:

复制代码
innodb_force_recovery = 1

其中参数的含义是:

  • 1 (SRV_FORCE_IGNORE_CORRUPT)
    • 即使检测到损坏的页面,也允许服务器运行。尝试使 SELECT * FROM *tbl_name*跳过损坏的索引记录和页面,这有助于转储表。
  • 2 (SRV_FORCE_NO_BACKGROUND)
    • 阻止主线程和任何清除线程运行。如果在清除操作期间发生意外退出,则此恢复值会阻止它。
  • 3 (SRV_FORCE_NO_TRX_UNDO)
    • 崩溃恢复后不运行事务回滚.
  • 4 (SRV_FORCE_NO_IBUF_MERGE)
    • 阻止插入缓冲区合并操作。如果它们会导致崩溃,请不要这样做。不计算表统计信息。此值可能会永久损坏数据文件。使用此值后,请准备好删除并重新创建所有二级索引。将 InnoDB 设置为只读。
  • 5 (SRV_FORCE_NO_UNDO_LOG_SCAN)
    • 启动数据库时不查看撤消日志:InnoDB 甚至将未完成的事务视为已提交。此值可能会永久损坏数据文件。将 InnoDB 设置为只读。
  • 6(SRV_FORCE_NO_LOG_REDO)
    • 不执行与恢复相关的重做日志前滚。此值可能会永久损坏数据文件。使数据库页处于过时状态,这反过来又可能会给 B 树和其他数据库结构带来更多损坏。将 InnoDB 设置为只读。

从1开始逐步往上尝试启动,我是尝试到2启动成功的

备份数据

启动成功后我们在使用dump导出一下数据库的结构和数据/宝塔直接点击备份数据

备份成功之后我们就可以删除原来的数据库了,由于使用的是恢复模式,而且innodb的文件已经损坏了,所以我们可以找到mysql配置文件,找到对应的数据文件,然后使用rm -rf 文件删除掉原有的数据库文件。

确保已备份全部数据!!!!!!!!

复制代码
rm -rf  /www/server/mysql

删除完之后,重新安装数据库,接着把直接备份的数据库重新导入,MySQL就可以正常启动了。

end

人的一生 必须要学会做一件事 而且要做到透彻 才不枉此生...共勉 💪。

相关推荐
techdashen3 分钟前
性能比拼: Redis vs Dragonfly
数据库·redis·缓存
胡斌附体21 分钟前
mysql增加字段并添加索引怎样写语句合适
数据库·sql·mysql
_Djhhh27 分钟前
【Redis】缓存三剑客问题实践(上)
数据库·redis·缓存
互联网搬砖老肖1 小时前
Mongodb分布式文件存储数据库
数据库·分布式·mongodb
Romantic Rose1 小时前
使用手机归属地查询API,使效率事半功倍
大数据·数据库·mysql
VB.Net2 小时前
20.4 显示数据库数据
数据库·c#
悟凡爱学习2 小时前
Linux嵌入式系统SQlite3数据库学习笔记
数据库·学习·sqlite
movie__movie3 小时前
解决 MongoDB 查询中的 `InvalidMongoDbApiUsageException` 错误
数据库·mongodb
Yuhang3 小时前
数据库无锁变更工具gh-ost的使用
mysql