0
点赞
收藏
分享

微信扫一扫

记一次断电导致mysql崩溃的恢复办法

登高且赋 2022-03-18 阅读 28

记一次断电导致mysql崩溃的恢复办法

异常断电导致mysql库表损坏,并且在/etc/my.cnf配置文件中添加innodb_force_revocery=1到6均无法启动

解决步骤如下:

1、进入目录/var/lib/mysql 移动此下所有数据库目录和ibdata1文件到其他目录进行备份 ,不需要备份mysql、sys、performance_schema、information_schema四个目录

2、删除rm -rf /var/lib/mysql

3、启动systecmctl start mysqld 此时数据库会重新初始化,并生成 /var/lib/mysql 和新的数据库密码,使用/var/log/mysqld.log中的新密码登录数据库,修改密码
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘MyNewPass4!’;

4、退出并关闭数据库systecmctl stop mysqld
5、删除rm -f /var/lib/mysql/ibdata1 /var/lib/mysql/ib_log*
6、将备份的数据库目录和ibdata1文件移动到/var/lib/mysql/ 下
7、启动数据库systecmctl start mysqld ,注意配置文件/etc/my.cnf中不要添加innodb_force_revocery参数,此时数据库启动日志中会提示有损坏库表需要修复,不用管,等待启动即可。

8、开始修复损坏的表
执行修复数据库命令mysqlcheck -uroot -p -r --databases 数据库名,此时注意观察日志/var/lib/mysqld.log一旦出现重启或乱码报错,查看乱码的前两行,会显示表名称,将其记录下来,再在/etc/my.cnf配置文件中添加innodb_force_revocery=1,重启数据库进入导出该表后删除。去掉配置文件中的innodb_force_revocery=1,再次重启后进入数据库导入删除的表。反复执行此步骤直至mysqlcheck数据库不在重启和报错。

其他说明:

第8步是使用mysqlcheck检查修复一遍所有的库表。也可通过其他方式,例如一张表一张表的打开或者select,出现错误时再通过单独将表导出、删除、再导入来修复。

举报

相关推荐

0 条评论