隨筆 - 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、消息隊列等

          主站蜘蛛池模板: 沐川县| 昆明市| 达州市| 垣曲县| 霍城县| 锡林浩特市| 洛隆县| 巴南区| 隆安县| 新邵县| 封开县| 平阴县| 平湖市| 阿拉善盟| 曲水县| 潮安县| 黄山市| 壤塘县| 边坝县| 中方县| 稷山县| 彭州市| 新竹市| 秦安县| 安阳市| 杂多县| 德江县| 麻阳| 济阳县| 柳州市| 金川县| 康马县| 霍林郭勒市| 中西区| 伽师县| 白水县| 宁晋县| 建平县| 武清区| 左权县| 隆子县|