zoukankan      html  css  js  c++  java
  • 如何正确关闭MongoDB

    由于被同事kill -9后导致MongoDB瘫痪
    错误:Error: error doing query: failed

    首先MongoDB使用mmap方式进行数据文件管理,也就是说写操作基本是在内存中进行,写操作会被每隔60秒(syncdelay设定)的flush到磁盘里。如果在这60秒内flush处于停止事情我们进行kill -9那么从上次flush之后的写入数据将会全部丢失。
    如果在flush操作进行时执行kill -9则会造成文件混乱,可能导致数据全丢了,启动时加了repair也无法恢复。

    避免方法
    第一种 使用正确的关闭方法
    官方文档说明要使用 kill -15,killall mongod或者在client的shell里,use admin,执行db.shutdownServer()即可!
    第二种
    通过replication 使用 一个slave,或者用replica set 来避免单结点数据丢失。
    第三种 1.7以后出现类似于binlog的功能
    在 MongoDB 1.7 版本的最新分支上,就出现了一个新的数据可靠性选项(–dur)的支持。并且在数据文件修复工具上也有了一些改进。

    如果在启动MongoDB时加上–dur 则MongoDB 会在进行写操作前记一份日志,这和在其他一些数据库中的binlog 类似,在MongoDB 数据文件损坏的情况下,可以使用此日志来进行恢复。据说其对性能的影响不大。
    --EOF--
    作者:Buro#79xxd 出处:http://www.cnblogs.com/buro79xxd/ 文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Easyui 表格底部加合计
    jQuery设置checkbox 为选中状态
    HTML 列表中的dl,dt,dd,ul,li,ol区别
    jQuery的toggle事件
    EasyUI 的日期控件单击文本框显示日历
    HTML设置span宽度
    JQuery获取与设置select
    生命周期
    钩子函数
    组件
  • 原文地址:https://www.cnblogs.com/buro79xxd/p/1993220.html
Copyright © 2011-2022 走看看