当你的服务器忽然断电导致数据库损坏启动失败可以用这一招,亲测非常有用。

先找到数据库配置文件:

  • Linux 系统通常在 /etc/my.cnf 或 /etc/mysql/my.cnf,也可能在 /etc/mysql/mysql.conf.d/mysqld.cnf

  • 如果你是宝塔安装的mysql,你可以找到宝塔数据库设置里,找到“配置文件”这个按钮点进去

在[mysqld]这一区块添加“innodb_force_recovery”参数

 

innodb_force_recovery = 1

 

等号后面最小是1,最大可以设成6,务必从 最低级别 1 开始尝试,

如果级别 1 无法启动,请逐级增加参数值,不要直接跳到 6。每次修改后都尝试重启服务。

  • 级别 1 (SRV_FORCE_IGNORE_CORRUPT)

    • 行为:即使检测到损坏的页,也继续运行服务。这是最安全的起点。

    • 尝试:如果级别 1 能启动,恭喜你!这是最好的情况。

  • 级别 2 (SRV_FORCE_NO_BACKGROUND)

    • 行为:阻止主线程和任何清理线程运行。如果崩溃发生在清理操作期间,这可能会起作用。

  • 级别 3 (SRV_FORCE_NO_TRX_UNDO)

    • 行为:在崩溃恢复后不运行事务回滚。

  • 级别 4 (SRV_FORCE_NO_IBUF_MERGE)

    • 行为:阻止插入缓冲区的合并操作。这可能会损坏数据,请谨慎操作。

  • 级别 5 (SRV_FORCE_NO_UNDO_LOG_SCAN)

    • 行为:启动数据库时不看撤销日志。这会将未提交的事务视为已提交。

  • 级别 6 (SRV_FORCE_NO_LOG_REDO)

    • 行为:不执行前滚操作。这是最激进的模式,数据损坏的风险极高

声明:本站内容来自公开平台,如若侵犯到您的权益,请联系我们,我们会第一时间删除!联系QQ:502428990。