关于mysql数据库ibdata1损坏了 恢复

本文记录了一次因Apache服务器意外重启导致MySQL数据库InnoDB错误,ibdata1文件损坏后的紧急修复过程。通过使用innodb_force_recovery参数启动数据库,并进行数据备份与恢复,最终成功解决数据库无法启动的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、公司mysql数据库 2个,合计50G+

2、准备将其中一个移到新增数据盘中,做ln -s软链接。

3、apache的服务器,已经停了。准备操作。没曾想apache自己启来了。大量外部数据进来,造成innodb错误。损坏了ibdata1文件。

数据库无法启动了

 

1-----(SRVFORCEIGNORECORRUPT):忽略检查到的corrupt页。
2-----(SRVFORCENOBACKGROUND):阻止主线程的运行,如主线程需要执行full purge操作,会导致crash。
3-----(SRVFORCENOTRXUNDO):不执行事务回滚操作。
4-----(SRVFORCENOIBUFMERGE):不执行插入缓冲的合并操作。
5-----(SRVFORCENOUNDOLOGSCAN):不查看重做日志,InnoDB存储引擎会将未提交的事务视为已提交。
6-----(SRVFORCENOLOG_REDO):不执行前滚的操作。

参考上面,用6启动了。但是无法还原回去了。正常依旧无法启动。

4、研究了三个小时后,发现,可以更名/www/server/data下的 ibdata1 、ib_logfile0、ib_logfile1。(改名,保险。你不改出问题,别说我没提醒),ibdata1 后面还有用呢。 

5、重启mysql,起来了 ^_^ 经历辛酸,才明白^_^的难得。

6、保留,改名:新的 ibdata1_x

7、用老的ibdata1 和 innodb_force_recovery = 6 启动mysql 这时库是只读的。 做备份就好了。备出来的.sql

8、回到新的ibdata1 起来,导入.sql

一切OK . 办法可能是笨了,但是我们完成了。

另外,ln -s 软链接也一并做了。 

建库 ——做 ln -s ——导库。 ln -s 也支持导入的。 哈哈。省事了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值