iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >怎么利用innodb_force_recovery 解决MySQL服务器crash无法重启问题
  • 840
分享到

怎么利用innodb_force_recovery 解决MySQL服务器crash无法重启问题

2024-04-02 19:04:59 840人浏览 薄情痞子
摘要

怎么利用innodb_force_recovery 解决Mysql服务器crash无法重启问题,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法

怎么利用innodb_force_recovery 解决Mysql服务器crash无法重启问题,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

一 背景
   某一创业的朋友的主机因为磁盘阵列损坏机器crash,重启mysql服务时 报如下错误:

  1. InnoDB: Reading tablespace infORMation from the .ibd files...

  2. InnoDB: Restoring possible half-written data pages from the doublewrite

  3. InnoDB: buffer...

  4. InnoDB: Doing recovery: scanned up to log sequence number 9120034833

  5. 150125 16:12:51  InnoDB: Starting an apply batch of log records to the database...

  6. InnoDB: Progress in percents: 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 150125 16:12:51 [ERROR] mysqld Got signal 11 ;

  7. This could be because you hit a bug. It is also possible that this binary

  8. or one of the libraries it was linked against is corrupt, improperly built,

  9. or misconfigured. This error can also be caused by malfunctioning hardware.

  10. To report this bug, see Http://kb.askmonty.org/en/reporting-bugs

  11. We will try our best to scrape up some info that will hopefully help

  12. diagnose the problem, but since we have already crashed,

  13. something is definitely wrong and this may fail.

  14. Server version: 5.5.37-MariaDB-log

  15. key_buffer_size=268435456

  16. read_buffer_size=1048576

  17. max_used_connections=0

  18. max_threads=1002

  19. thread_count=0

  20. It is possible that mysqld could use up to

  21. key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 2332093 K  bytes of memory

  22. 41 Hope that.

二 分析
    主要关注 mysqld got signal 11 的问题,从日志内容分析来看,数据库在机器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现象:   

  1. 150125 17:07:42  InnoDB: Waiting for the background threads to start

  2. 150125 17:07:43  InnoDB: Waiting for the background threads to start

  3. 150125 17:07:44  InnoDB: Waiting for the background threads to start

  4. 150125 17:07:45  InnoDB: Waiting for the background threads to start

  5. 150125 17:07:46  InnoDB: Waiting for the background threads to start

  6. 150125 17:07:47  InnoDB: Waiting for the background threads to start

在my.cnf中修改以下两个参数
innodb_force_recovery=6
innodb_purge_thread=0

重启MySQL 

  1. 150125 17:10:47 [Note] Crash recovery finished.

  2. 150125 17:10:47 [Note] Server Socket created on IP: '0.0.0.0'.

  3. 150125 17:10:47 [Note] Event Scheduler: Loaded 0 events

  4. 150125 17:10:47 [Note] /vdata/WEBserver/mysql/bin/mysqld: ready for connections.

  5. Version: '5.5.37-MariaDB-log' socket: '/tmp/mysql.sock' port: 3306  Source distribution

立即对数据库做逻辑导出 ,完成之后将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循环

  1. while (srv_shutdown_state == SRV_SHUTDOWN_NONE) {

  2.       if (srv_thread_has_reserved_slot(SRV_MASTER) == ULINT_UNDEFINED

  3.           || (srv_n_purge_threads == 1

  4.           && srv_thread_has_reserved_slot(SRV_WORKER)

  5.           == ULINT_UNDEFINED)) {

  6.           ut_print_timestamp(stderr);

  7.           fprintf(stderr, "  InnoDB: Waiting for the background threads to start\n");

  8.           os_thread_sleep(1000000);

  9.       } else {

  10.           break;

  11.       }

  12.   }

所以当需要设置innodb_force_recovery>1的时候需要关闭 innodb_purge_threads,设置为0(默认)。

四 小结 
   MySQL crash 或者 MySQL 数据库服务器 crash 会导致各种各样的问题 ,比如主备之间的error 1594 (5.6 版本开启crash-safe ,会最大程度上避免 error 1594的问题,以后会写5.6新特性介绍该功能 ),error 1236, 日志损坏数据文件损坏 ,等等,本案例只是其中的一种,细心从日志中找的相关错误提示,逐步解决即可。

关于怎么利用innodb_force_recovery 解决MySQL服务器crash无法重启问题问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网数据库频道了解更多相关知识。

您可能感兴趣的文档:

--结束END--

本文标题: 怎么利用innodb_force_recovery 解决MySQL服务器crash无法重启问题

本文链接: https://www.lsjlt.com/news/62124.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么利用innodb_force_recovery 解决MySQL服务器crash无法重启问题
    怎么利用innodb_force_recovery 解决MySQL服务器crash无法重启问题,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法...
    99+
    2024-04-02
  • 怎么解决mysql服务无法启动的问题
    出现mysql服务无法启动的解决方法方法一:在本地服务中启动mysql使用组合键“win+R”运行“services.msc”,进入本地服务窗口;进入本地服务窗口后,在右侧服务列表中查找到“mysql”服务选项;mysql服务查找到后,右键...
    99+
    2024-04-02
  • 如何解决linux无法重启php服务的问题
    这篇文章给大家分享的是有关如何解决linux无法重启php服务的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。linux无法重启php服务的解决办法:1、通过“/etc/init.d/php-fpm stop...
    99+
    2023-06-22
  • 怎么解决mysql无法启动1067错误问题
    这篇文章主要讲解了“怎么解决mysql无法启动1067错误问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决mysql无法启动1067错误问题”吧!...
    99+
    2024-04-02
  • mysql服务无法启动怎么解决
    这篇文章主要介绍“mysql服务无法启动怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql服务无法启动怎么解决”文章能帮助大家解决问题。 ...
    99+
    2023-02-13
    mysql
  • 如何解决window中mysql服务无法启动的问题
    小编给大家分享一下如何解决window中mysql服务无法启动的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2024-04-02
  • 如何解决本地mysql服务无法启动的问题
    小编给大家分享一下如何解决本地mysql服务无法启动的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!本地mysql服务无法启...
    99+
    2024-04-02
  • 怎么解决电脑无法启动问题
    这篇文章给大家分享的是有关怎么解决电脑无法启动问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首先,我们先检查内存条,看下有没有问题,如果你是多个内存条,那就要一条一条慢慢拆。如果亮了就把其他的插好试试。如果没...
    99+
    2023-06-28
  • 怎么解决DELL服务器M100E中linux5.5无法启动的问题
    这篇文章主要介绍“怎么解决DELL服务器M100E中linux5.5无法启动的问题”,在日常操作中,相信很多人在怎么解决DELL服务器M100E中linux5.5无法启动的问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希...
    99+
    2023-06-10
  • 阿里云服务器无法重启系统问解决方法
    简介:在使用阿里云服务器时,有时会遇到无法重启系统的问题,这可能会导致数据丢失、服务中断等问题。本文将介绍一些常见的原因和解决方法,帮助用户快速恢复服务器正常运行。 1. 确认服务器状态首先,我们需要确认服务器的状态。如果服务器处于异常状态...
    99+
    2024-01-18
    阿里 重启 解决方法
  • 云服务器ip无法访问怎么解决问题
    如果您的云服务器无法访问,有可能是因为防火墙或其他安全软件阻止了网络访问。以下是一个可能的解决方法: 检查防火墙配置:您应该尝试在防火墙配置中禁用所有不受支持的端口,或者将所有端口重定向到一个更小的默认端口。这可以减少网络流量,因为它只...
    99+
    2023-10-26
    解决问题 无法访问 服务器
  • 云服务器ip无法访问怎么解决方法问题
    如果您的云服务器无法访问,有可能是因为云服务器的IP地址被禁用或者被其他人使用。以下是一些解决方法: 检查云服务器的IP地址设置,确保您的域名或IP地址与云服务器所连接的网络连接保持同步。 确保您的网络连接状况良好,并且没有受到任何不必...
    99+
    2023-10-26
    解决方法 无法访问 服务器
  • 解决Ubuntu中PHP服务无法启动的问题
    解决Ubuntu中PHP服务无法启动的问题,需要具体代码示例 Ubuntu是一款常用的Linux操作系统,PHP则是一种流行的服务器端脚本语言,而在Ubuntu中安装PHP服务后,有时...
    99+
    2024-02-29
    php启动问题 php服务故障 linux操作系统
  • macos中mysql重装后无法启动怎么解决
    如果在 macOS 中重新安装 MySQL 后无法启动,可能是由于之前的数据和配置文件没有清理干净,导致冲突。以下是一些可能的解决方...
    99+
    2024-04-09
    mysql
  • 云服务器ip无法访问怎么解决问题呢
    如果您的云服务器无法访问,请检查您的网络连接和服务器配置是否正确。如果您可以连接到服务器,那么可能是服务器配置出现了问题。请检查服务器是否启用了带有负载均衡(LB)的功能,并尝试在其他机器上重新启动服务器。如果您不能连接到服务器,则可以尝试...
    99+
    2023-10-26
    解决问题 无法访问 服务器
  • 无法访问亚马逊服务器怎么解决问题
    检查网络连接:检查您的网络连接,确保无线网络或以太网连接正常工作。如果您使用的是有线连接,尝试重新启动您的路由器或调整网络设置。 检查服务器状态:亚马逊服务器可能会出现故障或维护。您可以访问亚马逊服务健康仪表板(Amazon Servic...
    99+
    2023-10-27
    亚马逊 解决问题 无法访问
  • 云服务器无法访问外网服务器怎么解决问题
    首先,我们需要确定云服务器是否能够访问外网服务器。如果无法访问外网服务器,那么就需要考虑是不是网络连接出现了问题。可以检查网络状态,确认网络连接是否正常,也可以尝试使用其他网络连接方式来访问外网服务器。 如果云服务器可以访问外网服务器,但...
    99+
    2023-10-27
    服务器 解决问题 无法访问
  • 云服务器无法访问外网怎么解决问题
    如果您的云服务器无法访问外网,以下是一些可能的解决方案: 检查网络连接:重启您的计算机和网络线路,确保您连接的网络已重新设置为可用状态。 更新 Windows 或 Mac 操作系统:如果您尝试访问外网,那么您的计算机或 Mac 将会受到...
    99+
    2023-10-26
    解决问题 无法访问 服务器
  • 阿里云服务器无法启动sql数据库怎么解决问题
    简介 在使用阿里云服务器时,有时候可能会遇到无法启动SQL数据库的问题。本文将介绍一些常见的解决方法,帮助您快速解决这个问题。解决方法1. 检查网络连接首先,确保您的服务器能够正常访问互联网。可以通过ping命令或者telnet命令来测试网...
    99+
    2024-01-20
    阿里 解决问题 无法启动
  • 如何解决mysql因为事务日志问题无法启动的问题
    这篇文章给大家介绍如何解决mysql因为事务日志问题无法启动的问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Mysql数据库无法启动,具体如下:[root@testdb var]#...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作