前天由于死机原因,然后发现linux mysql服务启动不了! 最后发现数据库坏了。先把宝塔/www/server/data 数据库进行备份。然后重新安装MYSQL5.6然后改名安装后的ibdata1 ib_logfile0,ib_logfile1 。然后再把旧的ibdata1 ib_logfile0,ib_logfile1复制过来。然后在宝塔面板中修改mysql配置。最下面增加innodb_force_recovery = 6 。然后以只读方式启动mysql然后。对数据库进行备份。

完成后再新的ibdata1 ib_logfile0,ib_logfile1改名再放回去。然后再把原来加的参数删除。 后再恢复一下数据库。然后要记的先删除原来的数据库才能恢复。如果删除不了去目录把他们目录直接删除。

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

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

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

大量外部数据进来,造成innodb错误。损坏了ibdata1文件。

数据库无法启动了

问题描述

1 mysql数据库5.6无法正常启动

2 直接复制替换innodb的frm和idb文件来新增数据表导致的问题

3 innodb文件ibdata1,ib_logfile0,ib_logfile1损坏,数据不一致

4 没有sql备份,无法正常登陆和导出当天数据

注意事项

innodb的表不能直接复制替换frm和idb文件,而是使用工具正常导入导出,myisam表可以直接复制替换文件

innodb_force_recovery = 6 


这时候可以设置MySQL的InnoDB为恢复模式,恢复模式会使用数据库只读,用于不能更新、插入或者操作其他改变数据的操作。

innodb_force_recovery  有0~6个级别

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 后面还有用呢。

 

发表评论 已发布 0

还可以输入 800 个字
看不清?点击更换
 
 
评论 打印