隨筆 - 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 小一敗涂地 閱讀(935) 評論(0)  編輯  收藏 所屬分類: mongdb、redis、memcache、消息隊列等

          主站蜘蛛池模板: 靖西县| 秀山| 赣榆县| 加查县| 衡阳市| 孝义市| 高安市| 金川县| 怀柔区| 朝阳县| 乐平市| 永清县| 朝阳区| 巴马| 万山特区| 措勤县| 泸州市| 沁阳市| 晋江市| 崇文区| 娄底市| 平度市| 新巴尔虎右旗| 香河县| 芷江| 衡南县| 隆回县| 葵青区| 塔城市| 调兵山市| 于田县| 乐亭县| 温泉县| 南平市| 通城县| 大渡口区| 临夏市| 依安县| 牡丹江市| 旌德县| 青州市|