今天,在某个演示环境中,我们的产品经历过整个机房断电后,出现了mongodb二进制文件损坏,以下是故障的分析记录过程:

1.在客户处支撑的同事发现整个机房断电再恢复后,3个mongodb复制集中,有1个主机上的mongodb服务状态报错

2.登录后台发现复制集中每个mongodb主机上,mongod进程都在

3.在服务状态好着的mongodb主机上,通过mongo登录数据库,查询复制集状态,发现复制集状态正常,1个primary+2个secondary,并且optimeDate时间一致.

这个时候我就很好奇了,按说mongodb复制集状态都正常着,不至于再出现其中1个节点上查询mongodb服务状态报错的情况了.

登录报错的主机上,通过mongo登录数据库,这时候,很诡异的事来了,终端上直接报错:"Bus error",很奇怪啊,我这还是第一次遇到mongo命令报这个错.感觉自己是不是遇到什么诡异事件了.然后执行mongo --version,一样的报错"Bus error".

这个时候,不知道怎么的,就忽然想起很久远时候的一个灵异事件了----最初做产品的兄弟遇到了这样一个问题:同一个mongodb rpm包,安装好之后,在某个主机上安装的mongod的二进制文件的md5和预期的不一样了.

然后就使用md5sum 去算这个提示"Bus error"的mongo,结果终端上直接报错"Input/Output error"了,但是使用md5sum去算同目录下另外几个mongodb相关的文件就没报错.

到这个时候,我意识到操作系统可能出了啥故障了.喊了操作系统组的同事看了下,----刚开始还以为是只有mongo这个二进制文件被人或者其他服务给修改了,但是,在我们准备把这个损坏的mongo二进制文件备份到另外一个目录的时候,终端上继续报错了"cp *** Input/Output error".

至此,操作系统组的同事确定:可能因为机房断电,主机操作系统中出现文件系统损坏了.

为了验证这个猜测,接下来,我们重启了服务器(好在这个时候还没上业务),然后重新启动过程中,提示信息中果然有根分区和另外一块分区的文件系统损坏的提示.按照提示信息进入了维护模式,使用fsck -y /dev/分区名 修复之后,再正常启动,操作系统就不再报错了.

最后,通过重装mongodb的rpm包,将mongodb的二进制文件报错处理掉了.至此,mongodb二进制文件损坏问题修复完成.

我之前一直以为linux文件系统很稳定,经历过这次事之后,发现原来之前的都是误解,稳定只是一个相对的概念.

记一次故障处理----主机异常关闭后mongodb二进制文件损坏的更多相关文章

  1. 解决Eclipse异常关闭后重启报 org.eclipse.swt.SWTException: Invalid thread access 的问题

    . . . . . 很久没有写博客了,最近实在是太忙,一直想写点干货,但是一直没静下心来学习. 今天又在加班忙碌之中,结果谁知道越忙碌越出问题.先是 weblogic 没有正常启动,凭经验第一反应就是 ...

  2. 当MyEclipse突然异常关闭

    今天的博文主要记录一个问题,就是当MyEclipse异常关闭后,再次开启环境,导致Tomcat无法启动的问题解决方案 问题描述:在MyEclipse启动或者是tomcat启动的时候出现:Address ...

  3. TCP中异常关闭链接的意义 异常关闭的情况

    终止一个连接的正常方式是发送FIN. 在发送缓冲区中 所有排队数据都已发送之后才发送FIN,正常情况下没有任何数据丢失. 但我们有时也有可能发送一个RST报文段而不是F IN来中途关闭一个连接.这称为 ...

  4. tomcat重启或关闭后,上传文件消失 .

    tomcat重启或关闭后,上传文件消失的问题,是因为在断电前myeclipse是启动的,断电时造成myeclipse异常关闭,再重新启动myeclipse时会重新发布项目,把先前发布的项目给覆盖了,所 ...

  5. tomcat关闭后线程依然运行解决办法

    tomcat关闭后线程依然运行解决办法,设置线程为守护线程 守护线程与非守护线程 最近在看多线程的Timer章节,发现运用到了守护线程,感觉Java的基础知识还是需要补充. Java分为两种线程:用户 ...

  6. TCP异常关闭研究分析

    版权声明:本文由谢代斌原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/108 来源:腾云阁 https://www.qclo ...

  7. CentOS 不间断会话(ssh关闭后如何保证程序继续运行)(nohup和screen)

    当使用ssh与远程主机的会话被关闭时,在远程主机上运行的命令也随之被中断. 就是ssh 打开以后,bash等都是他的子程序,一旦ssh关闭,系统将所有相关进程杀掉!! 导致一旦ssh关闭,执行中的任务 ...

  8. Linux 主机被入侵后的处理案例

    Linux主机被入侵后的处理案例 提交 我的留言 加载中 已留言 一次Linux被入侵后的分析 下面通过一个案例介绍下当一个服务器被rootkit入侵后的处理思路和处理过程,rootkit攻击是Lin ...

  9. 记一次Task抛异常,调用线程处理而引发的一些随想

    记一次Task抛异常,调用线程处理而引发的一些随想 多线程调用,任务线程抛出异常如何在另一个线程(调用线程)中捕获并进行处理的问题. 1.任务线程在任务线程执行语句上抛出异常. 例如: private ...

随机推荐

  1. SqlServer性能优化 即席查询(十三)

    执行计划,查询类别: 1.即席查询     2.预定义查询 select c.EnglishProductCategoryName,p.EnglishProductName,p.Color,p.Siz ...

  2. JAVA(1)

    java开发第一步就是学习相关知识,打牢基础是关键,下面就和小编我一起从java基础学起吧,一起加油! java方向主要包括三大块: java se 桌面开发 java ee web开发 java m ...

  3. struts2 配置拦截器

    第一步:继承MethodFilterInterceptor写自己的自定义拦截器 import org.apache.struts2.ServletActionContext; import com.o ...

  4. 第三个Sprint冲刺事后诸葛亮报告

    用户反馈:还好吧. 用户数量:4 团队改进建议:思维局限太大,技术需要革新. 1.每个成员第一个sprint阶段有何需要改进? 成员 需要改进 邵家文 需要提高自己的工作效率,与创新能力,解决问题的能 ...

  5. UE4 Windows平台部署游戏到IOS 第二部分

    点击加号后会出来如下截图 勾选上红色单选框处(因为这个我已经申请过了所以是灰色),然后continue到后面会出现下图 选择一个之前我提到申请证书会用的的那个.csr后缀文件夹,完成以后就可以下载证书 ...

  6. 3.Complementing a Strand of DNA

    Problem In DNA strings, symbols 'A' and 'T' are complements of each other, as are 'C' and 'G'. The r ...

  7. 前端工具-Sublime、WebStorm-快捷方式使用

    记录下我工作中使用的编辑软件Sublime和WebStorm用到的快捷方式来水一贴(*^__^*) Sublime是我使用的最长时间的编辑器了,也熟悉了一些快捷键使用. 1.Ctrl + /  --- ...

  8. Windows下安装openssl

    安装python类库cryptography1.6提示 build\temp.win-amd64-2.7\Release\_openssl.c(429): fatal error C1083: Can ...

  9. 写一些封装part1 (事件绑定移除,圆形矩形碰撞检测)

    var EventHandle = { addEvent:function(ele,type,handle){ if (ele.addEventListener) { ele.addEventList ...

  10. commons-httpclient中的超时设置

    connectionTimeout与soTimeout的差异,前者指创建一个有效的客户端到服务端链接的最大允许时间,后者指socket接收data的时间. connectionManager.getP ...