mongodb備份方式有三種node
mongodb的簡單備份通常使用mongoexport便可,只要你裝了mongodb就有的命令,上面說的其餘方式適合dba,而非程序員linux
基本用法git
mongoexport -d xxx-db -c activities -o activities.csv
說明程序員
其實還有jsonArray
,query
等其餘高級用法,盡在github
mongoexport --help
幫助文檔裏。mongodb
以前的作法是寫一個shell腳本,把上面的每個collection拷貝一行,而後crontab定時去執行shell
若是collection太多呢?真是又臭又長。。。數據庫
若是再加個日誌,若是再xxxexpress
那感受才叫一個刺激。。。npm
以上是我寫mmb的動機
如今說說個人解決方案,即mmb
mmb是moa mongodb backup,很直白的說它是備份mongodb數據的。
readme裏我是這樣寫的
mmb = moa mongodb backup, backup data to a dirname that generated by momentjs's date format
它能夠根據配置項裏的dirname選項,按照時間去生成目錄,也就是說我想按照天去備份,就寫成
"dirname":"YYYY-MM-DD"
我想按照秒備份
"dirname":"YYYY-MM-DD HH:mm:ss"
[sudo] npm install -g mmb
第一步初始化一個配置文件,執行
mmb init
此時,用任何編輯器打開mongo.config.json
,按須要修改裏面的配置文件便可,而後就能夠備份數據了:
mmb
會讀取當前目錄下的mongo.config.json
文件,根據文件內的配置信息,備份所有數據到指定目錄。
當執行 mmb init
, 會建立mongo.config.json文件,它就是mmb的配置文件
mongodb服務器配置項
備份數據目錄名稱配置項
說明:
"dirname":"YYYY-MM-DD HH:mm:ss"
這樣的format裏有空格沒法生成目錄名,因此空格會替換爲_
若是不瞭解crontab,請移步https://www.baidu.com/s?wd=crontab&rsv_spt=1&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=3&rsv_sug1=3
第一步:初始化
mmb init
第二步:修改配置文件,假定個人mongodb信息不變,我須要修改dirname,按分鐘生成,具體以下:
{ "host": "127.0.0.1", "port": "27017", "db": "xbm-wechat-api", "dirname":"YYYY-MM-DD HH:mm" }
第三步:測試
mmb
看看,生成的目錄是否正常,以及目錄裏的數據是否正常
➜ mongodbbackup date Sun Aug 23 22:42:14 CST 2015 ➜ mongodbbackup mmb ➜ mongodbbackup ls 2015-08-23_22:42 2015-08-23_22:42.log export.sh mongo.config.json
這樣就表明是正確的。
第四步:集成crontab,寫一個腳本cron.sh
➜ mongodbbackup cat cron.sh #!/bin/bash cd /Users/sang/test/mongodbbackup mmb
而後,給cron.sh增長執行權限
chmod +x cron.sh
配置crontab,定時執行cron.sh
➜ mongodbbackup touch cron-mmb.conf
填寫如下內容
* * * * * sh /Users/sang/test/mongodbbackup/cron.sh
保存便可。
➜ mongodbbackup sudo crontab -u root cron-mmb.conf
這樣每分鐘都會執行cron.sh,即每分鐘備份一次了
五個星星表示
crontab簡單用法說明
照理說mongoexport是支持導出csv,可是那個東西基本不能看,不是人讀的
那麼有沒有更好一點的作法呢?
➜ mongodbbackup mongoexport -d xbm-wechat-api -c senddeliveryhistories -o senddeliveryhistories.json --jsonArray --query "{'user_to_name' : 'ywiwfi'}" 2015-08-23T23:12:45.668+0800 connected to: localhost 2015-08-23T23:12:45.670+0800 exported 1 record ➜ mongodbbackup cat senddeliveryhistories.json [{"__v":0,"_id":{"$oid":"55bf208846b246fa238ff4d7"},"created_at":{"$date":"2015-08-03T08:04:24.648Z"},"date":"20150803","delivery_number":"","express":{"$oid":"5559a7edcb20cb272f412d96"},"express_company":"sfjowj","express_remark":"wifyiwfi","items":[],"last_modified_at":{"$date":"2015-08-03T08:04:24.648Z"},"last_modified_user":"","remark":"jjjj","status":2,"user_from_address":"kjwiji","user_from_id":{"$oid":"5559944fa56f3f192e22d2d4"},"user_from_mobile":"ijfij","user_from_name":"lwlfl","user_to_address":"uwyfuwi","user_to_id":{"$oid":"555993e7c3ab570c2eb23687"},"user_to_mobile":"uyfowhohi","user_to_name":"ywiwfi"}]
把拷貝json文件裏的內容,放到文本框裏
➜ mongodbbackup j2csv
若是你有更好的辦法請不吝賜教 shiren1118@126.com
全文完
歡迎關注個人公衆號【node全棧】