博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql表顺坏导致服务无法启动
阅读量:6033 次
发布时间:2019-06-20

本文共 1388 字,大约阅读时间需要 4 分钟。

hot3.png

针对以前好好的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

你可能感兴趣的文章
JS里的Array
查看>>
共勉:作为一名程序员你应该怎么提一个高质量的问题?
查看>>
iOS-在项目中引入RSA算法
查看>>
[译] 听说你想学 React.js ?
查看>>
gulp压缩合并js与css
查看>>
node fs
查看>>
Android之Window与WindowManager
查看>>
块级、内联、内联块级
查看>>
Predicate
查看>>
JavaScript 设计模式之策略模式
查看>>
[面试题记录01]实现一个function sum达到一下目的
查看>>
spring cloud构建互联网分布式微服务云平台-消息总线
查看>>
使用python编写游戏修改器
查看>>
人人快速开发平台
查看>>
dhcp 中继代理配置
查看>>
pomelo------监控安装
查看>>
我的友情链接
查看>>
ENTBOOST 2014.180L发布,开源企业IM免费企业即时通讯
查看>>
我的友情链接
查看>>
近似推断---期望传播
查看>>