位置: 编程技术 - 正文
推荐整理分享使用innodb_force_recovery解决MySQL崩溃无法重启问题(使用权资产),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:使用灭火器人要站在上风口还是下风口,使用的拼音,使用权资产,使用时间,使用时间,使用灭火器时要对准火焰的什么部位喷射,使用灭火器时要对准火焰的什么部位喷射,使用的拼音,内容如对您有帮助,希望把文章链接给更多的朋友!
一 背景
某一创业的朋友的主机因为磁盘阵列损坏机器crash,重启MySQL服务时 报如下错误:
二 分析
主要关注 mysqld got signal 的问题,从日志内容分析来看,数据库在机器crash 导致日志文件损坏,重启之后无法正常恢复,更无法正常对外提供服务。
三 解决
因为日志已经损坏,这里采用非常规手段,首先修改innodb_force_recovery参数,使mysqld跳过恢复步骤,将mysqld 启动,将数据导出来然后重建数据库。
innodb_force_recovery可以设置为1-6,大的数字包含前面所有数字的影响。
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):不执行前滚的操作。
注意
a 当设置参数值大于0后,可以对表进行select,create,drop操作,但insert,update或者delete这类操作是不允许的。 b 当innodb_purge_threads 和 innodb_force_recovery一起设置会出现一种loop现象: 在my.cnf中修改以下两个参数重启MySQL 立即对数据库做逻辑导出 ,完成之后将innodb_force_recovery设置为0 ,innodb_purge_thread=1 ,然后重建数据库 。另外 MySQL 版本 5.5以及之前 ,当innodb_purge_threads =1,innodb_force_recovery >1 的情况会出现上文提到的循环报warning 问题(=1 没有问题),
原因:
MySQL 的源代码中显示 当innodb_purge_threads 和 innodb_force_recovery一起设置会出现loop循环所以当需要设置innodb_force_recovery>1的时候需要关闭 innodb_purge_threads,设置为0(默认)。
四 小结
MySQL crash 或者 MySQL 数据库服务器 crash 会导致各种各样的问题 ,比如主备之间的error (5.6 版本开启crash-safe ,会最大程度上避免 error 的问题,以后会写5.6新特性介绍该功能 ),error , 日志损坏,数据文件损坏 ,等等,本案例只是其中的一种,细心从日志中找的相关错误提示,逐步解决即可。
MySQL slave_net_timeout参数解决的一个集群问题案例 【背景】对一套数据库集群进行5.5升级到5.6之后,alter.log报warning异常。--::[Warning]StoringMySQLusernameorpasswordinformationinthemasterinforepositoryisnotsecur
MySQL Index Condition Pushdown(ICP)性能优化方法实例 一概念介绍IndexConditionPushdown(ICP)是MySQL5.6版本中的新特性,是一种在存储引擎层使用索引过滤数据的一种优化方式。a当关闭ICP时,index仅仅是dataaccess的一种
MySQL order by性能优化方法实例 前言工作过程中,各种业务需求在访问数据库的时候要求有orderby排序。有时候不必要的或者不合理的排序操作很可能导致数据库系统崩溃。如何处理好ord
标签: 使用权资产
本文链接地址:https://www.jiuchutong.com/biancheng/347683.html 转载请保留说明!上一篇:MySQL replace into 语句浅析(二)
下一篇:MySQL slave_net_timeout参数解决的一个集群问题案例
友情链接: 武汉网站建设