Mysql8还原数据库意外关机导致服务起不来

1、出现问题的背景:

      在还原一个百万级数据库的过程中系统意外关机。

2、错误信息如下:

2024-03-19T00:34:52.123775Z 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.
2024-03-19T00:34:52.124085Z 0 [Warning] [MY-010918] [Server] 'default_authentication_plugin' is deprecated and will be removed in a future release. Please use authentication_policy instead.
2024-03-19T00:34:52.124128Z 0 [System] [MY-010116] [Server] E:\Program Files\DB\mysql-8.0.30-winx64\bin\mysqld.exe (mysqld 8.0.30) starting as process 7900
2024-03-19T00:34:52.128159Z 0 [Warning] [MY-013242] [Server] --character-set-server: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
2024-03-19T00:34:52.153558Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-03-19T00:34:52.525918Z 1 [ERROR] [MY-013881] [InnoDB] The redo log file .\#innodb_redo\#ib_redo53151 has start_lsn 173741975552 but expected 173846767616 (end_lsn of the previous redo log file).
2024-03-19T00:34:52.527265Z 1 [ERROR] [MY-012930] [InnoDB] Plugin initialization aborted with error Generic error.
2024-03-19T00:34:52.560055Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
2024-03-19T00:34:52.561421Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2024-03-19T00:34:52.562121Z 0 [ERROR] [MY-010119] [Server] Aborting
2024-03-19T00:34:52.562881Z 0 [System] [MY-010910] [Server] E:\Program Files\DB\mysql-8.0.30-winx64\bin\mysqld.exe: Shutdown complete (mysqld 8.0.30)  MySQL Community Server - GPL.

3、解决办法:

找到my.ini文件,添加【innodb_force_recovery】

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为只读。

注:权威解读请参考官方文档

如果加到6我们还是不能启动数据库,就要另寻他法了

启动之后备份数据库文件,重新初始化,然后还原备份

由于我出现这个情况的是本地开发环境,具体线上的维护要请教专业人士。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Climbing-pit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值