【mysql因为断电导致数据损坏无法启动mysql的处理方式及mysql数据恢复方法】

本文主要讲述的是通过删除ib和index文件后mysql仍然无法正常启动的后续恢复操作,由于过程中涉及到删除单个表操作,操作需谨慎,建议提前物理备份。

第一步基本恢复操作

通过下面操作无法恢复mysql启动的后续恢复操作,操作需谨慎
1、删除ib_logfile0和ib_logfile1文件
2、删除mysql-bin.index文件

第二步终极恢复操作

通过上述操作后还无法正常启动mysql服务,请参考下面方式进行数据库恢复,谨慎操作。

1. 修改mysql启动级别

在my.cnf中修改增加或者修改启动级别:
innodb_force_recovery=6
然后启动mysql,一般情况下就可以启动成功了,启动成功后备份全量数据库或者分库备份都可以;

2. 备份数据库

备注:备份过程中可能出现数据表错误无法访问并导致备份失败,报错如下:

这种错误的处理办法是进入到mysql的data目录下,找到相对应的表比如表名字叫cloudeyes,进入到该目录中找到该表的原始数据进行备份操作,备份后删除该表。

mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table asset_all at row: 1268151

  • ls *asset_all*
  • mv *asset_all * /home/mysql_bak/
  • rm -f *asset_all *

备注1:上述问题可能会重复出现多次,直至所有损坏的数据均已删除为止。
备注2:上述操作存在永久丢失数据风险,数据备份后再删除,单个表的数据恢复操作请另行处理。

3、重新停止并启动数据库

4 、备份正常启动后的数据库数据

mysqldump -uroot -p --set-gtid-purged=OFF > mysqldump_mysql1_$(date +%Y%m%d).sql

5、停止数据库,然后删除当前mysql的data目录下所有数据库数据包含以下几个文件:

1、对应的数据库目录比如cloudeyes
2、删除ib_logfile0和ib_logfile1文件
3、删除mysql-bin.index文件

6、重新启动数据库,一般情况都会启动成功

7、导入新备份出来的所有数据

备注说明1:因为导入数据库缺失了第三步中缺少的数据,可以重新创建缺少的数据表结果或者可以用历史备份的数据导入一份,但是确保数据是否可以跟当前的数据兼容或冲突,谨慎操作。
备注说明2:在第三步的时候存在数据挪走或者删除后无法恢复的风险,生产需谨慎。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值