今天,在某个演示环境中,我们的产品经历过整个机房断电后,出现了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. BackTrack5-r3安装VMware Tools

    bt login:root //默认的BT系统账号password:toor //默认的BT系统密码,这里的密码是不显示的.root@bt:~#startx //进入图形模式 启动BT虚拟机系统-在V ...

  2. 操作系统学习笔记(五)--CPU调度

    由于第四章线程的介绍没有上传视频,故之后看书来补. 最近开始学习操作系统原理这门课程,特将学习笔记整理成技术博客的形式发表,希望能给大家的操作系统学习带来帮助.同时盼望大家能对文章评论,大家一起多多交 ...

  3. VC

    原子锁 临界区 互斥量 信号量 事件

  4. 关于discuz“终于解决“头像保存过程中发生网络错误,请重试"”的解决方法

    1 php.ini里面allow_url_fopen = On2 将php.ini中的;upload_tmp_dir = 该行的注释符,即前面的分号“:”去掉,使该行在php.ini文档中起作用.up ...

  5. Linux标准出错重定向导出

    ~$ ls han >1.txt 2>&1

  6. rtmp转m3u8

    不是所有的地址改成这样都能播 需要自己测试 先说一下rtmp的其中rtmp的常见的差不多是3种 1.一种是wowza服务器的 比如这个地址rtmp://116.55.245.135:8096/live ...

  7. Less函数说明

    索引 escape(@string); // 通过 URL-encoding 编码字符串 e(@string); // 对字符串转义 %(@string, values...); // 格式化字符串 ...

  8. Ibator的配置和使用

    1.     Ibator介绍 Ibator是iBATIS的代码发生器,其原名叫abator,后来更名为Ibator,同时代码结构也做了相应的一些修改,所以两者的配置也有所不同.Ibator可以生成一 ...

  9. iOS开发之APP上线

    APP 上线有两种途径: 一种是 Xcode->openDeveloperTool->applicationLoader,这种打开后登陆appleID就可以选取并且交付您的应用程序了.这种 ...

  10. Python数学函数

    1.Python数学函数 1.abs(x):取绝对值,内建函数 2.math.ceil(x):向上取整,在math模块中 3.cmp(x,y):如果 x < y ,返回-1:如果 x == y ...