隨筆 - 0, 文章 - 264, 評論 - 170, 引用 - 0
          數(shù)據(jù)加載中……

          正確關(guān)閉mongodb的方法,轉(zhuǎn)載于http://www.cnblogs.com/buro79xxd/archive/2011/03/23/1993220.html

          如何正確關(guān)閉MongoDB

          由于被同事kill -9后導(dǎo)致MongoDB癱瘓
          錯誤:Error: error doing query: failed

          首先MongoDB使用mmap方式進(jìn)行數(shù)據(jù)文件管理,也就是說寫操作基本是在內(nèi)存中進(jìn)行,寫操作會被每隔60秒(syncdelay設(shè)定)的flush 到磁盤里。如果在這60秒內(nèi)flush處于停止事情我們進(jìn)行kill -9那么從上次flush之后的寫入數(shù)據(jù)將會全部丟失。
          如果在flush操作進(jìn)行時執(zhí)行kill -9則會造成文件混亂,可能導(dǎo)致數(shù)據(jù)全丟了,啟動時加了repair也無法恢復(fù)。

          避免方法
          第一種 使用正確的關(guān)閉方法
          官方文檔說明要使用 kill -15,killall mongod或者在client的shell里,use admin,執(zhí)行db.shutdownServer()即可!
          第二種
          通過replication 使用 一個slave,或者用replica set 來避免單結(jié)點數(shù)據(jù)丟失。
          第三種 1.7以后出現(xiàn)類似于binlog的功能
          在 MongoDB 1.7 版本的最新分支上,就出現(xiàn)了一個新的數(shù)據(jù)可靠性選項(–dur)的支持。并且在數(shù)據(jù)文件修復(fù)工具上也有了一些改進(jìn)。
          如果在啟動MongoDB時加上–dur 則MongoDB 會在進(jìn)行寫操作前記一份日志,這和在其他一些數(shù)據(jù)庫中的binlog 類似,在MongoDB 數(shù)據(jù)文件損壞的情況下,可以使用此日志來進(jìn)行恢復(fù)。據(jù)說其對性能的影響不大。

          posted on 2012-07-30 19:55 小一敗涂地 閱讀(935) 評論(0)  編輯  收藏 所屬分類: mongdb、redis、memcache、消息隊列等

          主站蜘蛛池模板: 宜宾市| 阜新市| 昌邑市| 黄陵县| 上饶市| 宁武县| 新民市| 岗巴县| 运城市| 南华县| 会东县| 闽清县| 碌曲县| 新建县| 金川县| 武隆县| 镇雄县| 张掖市| 孝义市| 大方县| 聂拉木县| 松桃| 安塞县| 泸州市| 定陶县| 蓬莱市| 汶上县| 徐州市| 迁西县| 海兴县| 田林县| 盖州市| 眉山市| 句容市| 平利县| 卫辉市| 平远县| 镇安县| 乌审旗| 岳阳市| 镇巴县|