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全栈】