
【mysql因为断电导致数据损坏无法启动mysql的处理方式及mysql数据恢复方法】
备注说明1:因为导入数据库缺失了第三步中缺少的数据,可以重新创建缺少的数据表结果或者可以用历史备份的数据导入一份,但是确保数据是否可以跟当前的数据兼容或冲突,谨慎操作。这种错误的处理办法是进入到mysql的data目录下,找到相对应的表比如表名字叫cloudeyes,进入到该目录中找到该表的原始数据进行备份操作,备份后删除该表。备注2:上述操作存在永久丢失数据风险,数据备份后再删除,单个表的数据恢
本文主要讲述的是通过删除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:在第三步的时候存在数据挪走或者删除后无法恢复的风险,生产需谨慎。
更多推荐
所有评论(0)