服务器断电导致mysql崩溃,使用恢复模式的解决步骤
创始人
2025-01-21 04:04:51
0

环境

系统:centos7 数据库:mysql5.7.37 数据库目录: /usr/bin 数据目录: /var/lib/mysql 配置文件位置: /etc/my.cnf 



报错日志

2024-02-18T08:45:58.039432Z 0 [ERROR] InnoDB: Page [page id: space=0, page number=238] log sequence number 8738273916 is in the future! Current system log sequence number 8738272796.
2024-02-18T08:45:58.039450Z 0 [ERROR] InnoDB: Your database may be corrupt or you may have copied the InnoDB tablespace but not the InnoDB log files. Please refer to http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html for information about forcing recovery.
2024-02-18T08:45:58.039504Z 0 [ERROR] InnoDB: Page [page id: space=0, page number=239] log sequence number 8738275019 is in the future! Current system log sequence number 8738272796.
2024-02-18T08:45:58.039510Z 0 [ERROR] InnoDB: Your database may be corrupt or you may have copied the InnoDB tablespace but not the InnoDB log files. Please refer to http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html for information about forcing recovery.
2024-02-18T08:45:58.040921Z 0 [Note] InnoDB: Starting an apply batch of log records to the database...

  打开提示的引用地址 MySQL :: MySQL 5.7 Reference Manual :: 14.22.2 Forcing InnoDB Recoveryicon-default.png?t=N7T8http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html  查看网页 可知主要 通过修改配置文件 innodb_force_recovery来 打开恢复模式

打开恢复模式

编辑数据库配置文件

配置文件[mysqld]下加入参数 innodb_force_recovery = 1 ,其中后面的值设置为1、如果1不能恢复,再逐步增加为2/3/4等。直到能启动mysql为止!!!
注意:最高值为6,但当参数值大于3的时候。会对数据文件造成永久性的破坏。

[mysqld] innodb_force_recovery = 1



启动数据库

systemctl start mysqld.service

此时进入的恢复模式,数据库是只读的


数据备份


下面需要把数据库备份出来,然后清除之前损坏的数据,利用备份数据恢复
执行:

/usr/bin/mysqldump -uroot -p123456 --all-databases > /ambuf/mysql/backup240818.sql

执行完了 去掉 innodb_force_recovery = 1 参数

清除损坏的数据
清除之前需要把服务停止:

systemctl stop mysqld.service

备份原data目录以防万一:

cp -r /var/lib/mysql/ /ambuf/mysql/data_bak/ rm -rf /var/lib/mysql/*


数据库初始化


上个步骤已经清空了data目录,所以此时数据库是启动不了的,需要进行初始化
进入 安装目录下进行初始化

/usr/bin/mysql_install_db --user=mysql&

下面就可以利用mysqldump出来的数据进行恢复了,但因为刚刚进行了初始化,之前的密码已经没用了,需要在配置文件加入 skip-grant-tables
vi /etc/mysql/my.cnf
 

[mysqld] skip-grant-tables

启动mysql数据库 

systemctl start mysqld.service

通过 查找日志获取临时密码

grep "temporary password" /var/log/mysqld.log

执行结果如下

2023-11-08T03:40:10.570444Z 1 [Note] A temporary password is generated for root@localhost: bf*17blep(_R
2024-02-18T09:23:22.815511Z 1 [Note] A temporary password is generated for root@localhost: i45emkw99*Ug

再次登录数据库

mysql -uroot -pi45emkw99*Ug

重新设置 登录用户密码权限。执行:

set global validate_password_policy = 0; SET PASSWORD = PASSWORD("123456"); ALTER USER USER() IDENTIFIED BY "123456"; grant all privileges on *.* to root@'%' identified by "123456"; flush privileges;

打开配置文件my.cnf, 去掉 skip-grant-tables 参数

 vi /etc/mysql/my.cnf

登录数据库恢复数据

 再次登录数据库

mysql -uroot -p123456

 导入之前 备份文件

 source /ambuf/mysql/backup-240218.sql

重启数据库查看 数据恢复情况。
 

相关内容

热门资讯

黑科技讲解(wepoke软件透... 黑科技讲解(wepoke软件透明挂价格)外挂黑科技辅助器(透视)总是有挂(黑科技脚本)-哔哩哔哩亲,...
第5分钟黑科技!德扑之星ai软... 第5分钟黑科技!德扑之星ai软件,(德扑之星)竟然有挂,扑克教程(有挂方法)-哔哩哔哩;1、玩家可以...
黑科技安装!aapoker辅助... 黑科技安装!aapoker辅助工具下载(透视)太坑了真的是有挂(科技教程黑科技攻略)-哔哩哔哩;暗藏...
黑科技辅助挂(德扑之星发牌规律... 黑科技辅助挂(德扑之星发牌规律)外挂透明挂辅助软件(透视)果然真的有挂(黑科技解密)-哔哩哔哩1、每...
透视脚本!WPK最新ai辅助黑... 透视脚本!WPK最新ai辅助黑科技,(wPk)原来是真的有挂,黑科技自建房(有挂规律)-哔哩哔哩1、...
黑科技智能ai!智星德州菠萝a... 黑科技智能ai!智星德州菠萝app下载(透视)太坑了是真的有挂(可靠教程黑科技介绍)-哔哩哔哩;1)...
黑科技能赢(微扑克透牌软件)外... 黑科技能赢(微扑克透牌软件)外挂透明挂辅助器(透视)本来真的有挂(黑科技介绍)-哔哩哔哩进入游戏-大...
透视代打!wPK最新ai辅助黑... 透视代打!wPK最新ai辅助黑科技,(wpK)原来真的是有挂,黑科技规律(的确有挂)-哔哩哔哩1)辅...
黑科技讲解!德扑之星操作(智能... 黑科技讲解!德扑之星操作(智能ai)太坑了存在有挂(玩家教你黑科技介绍)-哔哩哔哩;暗藏猫腻,小编详...
黑科技规律(智星德州菠萝怎么看... 黑科技规律(智星德州菠萝怎么看有没有开挂)外挂透视辅助app(透视)切实真的有挂(黑科技攻略)-哔哩...