Mysql表顺坏导致服务无法启动

针对以前好好的Mysql服务器进程能正常启动,突然启动起来的时候报:

093738_Z4Vi_1175562.png

通过上面的技术文章说明找到:innodb_force_recovery=6

对innodb_force_recovery设置详情描述如下:

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

====================================================================

好了,配置好值为6就可以正常启动服务了。但是你的整个数据库进入只读状态,不能进行任何更新修改操作。尝试备份会出现服务停止的情况......My goooooooood...........

====================================================================

094803_80KP_1175562.png

占时没有找到更好的应对策略。因为是数据库顺坏了,现在的表数据只能是一个只读状态,而实际中数据才是最重要的,所以我们就将所有能查看的数据进行导出吧。

====》接着一个个导出好了sql文件,中途会发下有些表是无法导出的,这个时候就需要进一步将DDL语言复制,手动执行,生成表的模型到新的数据库实例上去。如果这个表里面有数据,那么你就只能通过日志去恢复了,我查看了日志,可以通过搜索日志里面的表名进行定位错误。由于我遇到的这个数据表没有数据,所以也就没有恢复了。

====》一个个数据导出来后,就进行一次备份吧......

可以采用以下手段预防mysql 表损坏: 

1 、定期使用myisamchk 检查MyISAM 表(注意要关闭mysqld ),推荐使用check  table 来检查表(不用关闭mysqld )。 

2 、在做过大量的更新或删除操作后,推荐使用OPTIMIZE TABLE 来优化表,这样既减少了文件碎片,又减少了表损坏的概率。 

3 、关闭服务器前,先关闭mysqld (正常关闭服务,不要使用kill -9 来杀进程)。 

4 、使用ups 电源,避免出现突然断电的情况。 

5 、使用最新的稳定发布版mysql ,减少mysql 本身的bug 导致表损坏。 

6 、对于InnoDB 引擎,你可以使用innodb_tablespace_monitor 来检查表空间文件内文件空间管理的完整性。 

7 、对磁盘做raid ,减少磁盘出错并提高性能。 

8 、数据库服务器最好只跑mysqld 和必要的其他服务,不要跑其他业务服务,这样减少死机导致表损坏的可能。 

9 、不怕万一,只怕意外,平时做好备份是预防表损坏的有效手段。

 

转载于:https://my.oschina.net/robortly/blog/701667

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值