隨筆 - 0, 文章 - 264, 評論 - 170, 引用 - 0
          數據加載中……

          正確關閉mongodb的方法,轉載于http://www.cnblogs.com/buro79xxd/archive/2011/03/23/1993220.html

          如何正確關閉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 數據文件損壞的情況下,可以使用此日志來進行恢復。據說其對性能的影響不大。

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

          主站蜘蛛池模板: 紫阳县| 阳新县| 阿城市| 井陉县| 安义县| 无极县| 恩施市| 军事| 武平县| 华容县| 绵阳市| 西和县| 高尔夫| 乌拉特前旗| 揭阳市| 远安县| 嘉鱼县| 双峰县| 开江县| 固镇县| 鄂伦春自治旗| 岱山县| 读书| 基隆市| 南川市| 锦州市| 田东县| 宣化县| 若羌县| 龙游县| 甘谷县| 衡阳县| 喜德县| 香河县| 荥阳市| 西林县| 红河县| 天水市| 伊吾县| 大荔县| 霍州市|