Mysql表顺坏致使服务没法启动

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

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

对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...........优化

====================================================================spa

占时没有找到更好的应对策略。由于是数据库顺坏了,如今的表数据只能是一个只读状态,而实际中数据才是最重要的,因此咱们就将全部能查看的数据进行导出吧。线程

====》接着一个个导出好了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 、不怕万一,只怕意外,平时作好备份是预防表损坏的有效手段。

相关文章
相关标签/搜索