mongodb数据库备份和恢复(三)

Mongodb的安装及使用(一)
Mongodb 与 python 的交互(二)
mongodb数据库备份和恢复(三)

MongoDB官方提供了两套数据导入导出工具,一般来说,进行整库导出导入时使用mongodumpmongorestore,这一对组合操作的数据是BSON格式,进行大量dump和restore时效率较高。

进行单个集合导出导入时使用mongoexportmongoimport,这一对组合操作的数据是JSON格式,可读性较高。

windows下面mongodb数据库备份和恢复

1、mongodump(备份)及mongorestore(还原)

→说明:
mongodump是一个用于导出二进制数据库内容的实用工具,它导出的bson文档中只会包含着集合文档等信息,不包括索引信息(索引信息会单独导出),所以还原后,索引必须重建(这个不用担心,使用mongorestore会自动重建mongodump生成的索引信息)。3.4版本中添加了对只读视图的支持。

→参数(以下仅列举常用参数,更多请参考help,下同):

命令 全称 默认值 参考释义
--help 查看mongodump命令的使用帮助
--version 返回mongodump的版本号
-h --host <hostname><:port> localhost:27017 指定mongod要连接的主机名及端口号
--port <port> 27017 指定MongoDB实例监听客户连接的TCP端口号
-u --username <username> 指定用于向使用认证的MongoDB数据库认证的用户名,与--password和
--authenticationDatabase结合使用
-p --password <password> 指定用于向使用认证的MongoDB数据库认证的密码。与--username和 --
authenticationDatabase选项结合使用。
-d --db <database> 指定要备份的数据库。如果不指定,mongodump会将此实例中的所有数据库备份。
-c --collection <collection> 指定要备份的集合。如果不指定,则会将指定数据库或实例中的所有集合备份。
--gzip 3.2版本+,压缩输出,如果mongodump指定导出到目录,则该选项会将每个文件都压缩,
并添加.gz后缀;
如果mongodump指定导出到文档或标准输出流,则该选项会压缩到文档或输出流中
-o --out <path> 指定导出数据的目录路径,如不指定,则mongodump默认将文件输出到dump所在的工作目录中。
该选项不能和--archive一起使用

→举个栗子:

我可以将数据备份到D:\offer\data\dump目录下面,首先创建这个路径。然后进入到mongodb的bin目录下面
我的是:

D:\offer\mongod\bin

备份脚本是:

mongodump -h 127.0.0.1:27017 -d test -o D:\offer\data\dump

恢复脚本是:

 mongorestore -h 127.0.0.1:27017 -d test --directoryperdb  D:\offer\data\dump\test

2、mongoexport(导出)及mongoimport(导入)
2.1 mongoexport
→参数:

命令 全称 默认值 参考释义
--help 查看mongoexport的使用帮助
--version 查看mongoexport的版本号
-d --db <database> 指定要在哪个数据库上运行该命令
-c --collection <collection> 指定要导出的集合
-f --fields <field1[,field2]> 指定导出时只导出一个或多个字段,导出多个时,需要使用逗号分隔;
当字段中有空格时,需要用英文引号括起来。
-q --query <JSON> 提供查询文档作为导出数据源
--type<string> json 指定要导出的文件类型,可选值:json,csv
-o --out <file> 指定要导出的文件路径(含文件名),如果不指定,则会导出为标准输出(例如stdout)

→举个栗子:

导出mytest数据库中的user集合到user.json文件中

mongoexport -d mytest -c user -o D:\offer\data\dump\user.json 

2.2mongoimport
→参数:

命令 可选值 参考释义
--ignoreBlanks 忽略要导入文件中的空字段,如果不指定该参数,则默认会读取空字段并创建
--type <json|csv|tsv> json,csv,tsv 要导入的文件类型,另外支持tsv
--headerline 使用第一行作为字段名称
--mode <insert|upsert|merge> insert(插入),
upsert(替换数据库中的文档),
merge(合并) 指定导入过程中,如何应对数据库文档与导入文件中的文档匹配
(默认会使用_id字段对比)的情况

其他参数与mongoexport基本一致

→举个栗子:

从user.json文件导入到mytest数据库中的user集合,并在之前进行删除

mongoimport --drop -d mytest -c user --file D:\offer\data\dump\user.json  

linux下面mongodb数据库备份和恢复

linux下面我们可以创建一个自动备份脚本,可以设置定时任务,也可以手动备份。我是手动备份的。

首先创建一个sh命令,我是放在home下面的

vim /home/mongoBeiFen.sh

输入如下内容:

#!/bin/bash
shijie=`date +%Y%m%d%H`
backmongodbFile=mongodb$shijie.tar.gz
cd /home/mongoDbback/
/usr/local/mongo/bin/mongodump -h 127.0.0.1 --port 27017 -u mongo -p 123456  -d my_mongodb -o my_mongodb_dump/
tar czf $backmongodbFile  my_mongodb_dump/
rm my_mongodb_dump -rf 

解释:

存放备份的文件夹是/home/mongoDbback/

-u是数据库名用户名 -p是密码 -d是数据库名 具体和window差不多,大家可以看下上面windows的解释。

备份的时候只要运行一下

./mongoBeiFen.sh   

就可以了。

数据库恢复:

/usr/local/mongo/bin/mongorestore -d my_mongodb my_mongodb_dump/my_mongodb/*            指向每个文件
/usr/local/mongo/bin/mongorestore -h 127.0.0.1 --port 27017 -- drop --directoryperdb  my_mongodb_dump/my_mongodb 指向一个目录

有问题的话可以尝试window的写法:

  /usr/local/mongo/bin/mongorestore -h 127.0.0.1:27017 -d test --drop  --directoryperdb  my_mongodb_dump/my_mongodb
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容