MongoDB备份和恢复

前面两篇文章介绍了mongodb的搭建与使用:http://msiyuetian.blog.51cto.com/8637744/1720559

以及mongodb的副本集部署:http://msiyuetian.blog.51cto.com/8637744/1722406

下面我们来介绍mongodb的备份和恢复

一、MongoDB备份



1、准备工作

1)创建库、集合

> use mydb                                                             //创建库

switched to db mydb

> db.createCollection(‘test1‘)                                   //创建集合test1

{ "ok" : 1 }

> show dbs                                                             //查看所有库


local  0.078GB

mydb   0.078GB

> show tables                                                          //查看当前库中的集合


system.indexes

test1

> db.test1.insert({id:1,name:"tpp",age:20})                //向test1集合中插入数据

WriteResult({ "nInserted" : 1 })

> db.test1.insert({id:2,name:"linux",age:15})

WriteResult({ "nInserted" : 1 })

> db.test1.find()                                                      //查看test1集合中的数据


{ "_id" : ObjectId("566de4441b2778d299e8f3a5"), "id" : 1, "name" : "tpp", "age" : 20 }

{ "_id" : ObjectId("566de45a1b2778d299e8f3a6"), "id" : 2, "name" : "linux", "age" : 15 }

同理我们再创建一个mydb2库,这里省略这个过程。

2、备份指定库

语法:mongodump -h ip -d dbname -o dir


参数说明

-h:后跟服务器ip

-u:后跟数据库用户

-p:后跟用户密码

-d:后跟 database 名字,不加则备份所有库

-o:后指备份到哪里,它是个目录

示例

[[email protected] ~]# mongodump -d mydb -o /tmp/mongodbbackup


2015-12-14T05:42:06.867+0800    writing mydb.test1 to /tmp/mongodbbackup/mydb/test1.bson

2015-12-14T05:42:06.867+0800    writing mydb.system.indexes to /tmp/mongodbbackup/mydb/system.indexes.bson

2015-12-14T05:42:06.869+0800    writing mydb.test1 metadata to /tmp/mongodbbackup/mydb/test1.metadata.json

2015-12-14T05:42:06.871+0800    done dumping mydb.test1 (2 documents)

[[email protected] ~]# ls /tmp/mongodbbackup/

mydb

[[email protected] ~]# ls /tmp/mongodbbackup/mydb/

system.indexes.bson  test1.bson  test1.metadata.json

注意:test1.bson是二进制文件,是数据库文件;test1.metadata.json是集合文件

2、备份所有库

语法:mongodump -h ip -o dir

示例

[[email protected] ~]# mongodump -o /tmp/mongodbbackup_2


2015-12-14T05:57:48.456+0800    writing mydb.system.indexes to /tmp/mongodbbackup_2/mydb/system.indexes.bson

2015-12-14T05:57:48.456+0800    writing mydb.test1 to /tmp/mongodbbackup_2/mydb/test1.bson

2015-12-14T05:57:48.457+0800    writing mydb2.system.indexes to /tmp/mongodbbackup_2/mydb2/system.indexes.bson

2015-12-14T05:57:48.465+0800    writing mydb2.test2 to /tmp/mongodbbackup_2/mydb2/test2.bson

2015-12-14T05:57:48.467+0800    writing mydb.test1 metadata to /tmp/mongodbbackup_2/mydb/test1.metadata.json

2015-12-14T05:57:48.469+0800    done dumping mydb.test1 (2 documents)

2015-12-14T05:57:48.473+0800    writing mydb2.test2 metadata to /tmp/mongodbbackup_2/mydb2/test2.metadata.json

2015-12-14T05:57:48.475+0800    done dumping mydb2.test2 (0 documents)

[[email protected] ~]# ls /tmp/mongodbbackup_2/

mydb  mydb2

[[email protected] ~]# ls /tmp/mongodbbackup_2/mydb2/

system.indexes.bson  test2.bson  test2.metadata.json

3、备份指定集合

语法:mongodump -h ip -d dbname -c collectionname -o dir

示例

[[email protected] ~]# mongodump -d mydb -c test1 -o /tmp/mongodbbackup_3


2015-12-14T06:08:25.404+0800    writing mydb.test1 to /tmp/mongodbbackup_3/mydb/test1.bson

2015-12-14T06:08:25.405+0800    writing mydb.test1 metadata to /tmp/mongodbbackup_3/mydb/test1.metadata.json

2015-12-14T06:08:25.408+0800    done dumping mydb.test1 (2 documents)

[[email protected] ~]# ls /tmp/mongodbbackup_3/

mydb

[[email protected] ~]# ls /tmp/mongodbbackup_3/mydb/

test1.bson  test1.metadata.json

[[email protected] ~]# cat /tmp/mongodbbackup_3/mydb/test1.metadata.json

{"options":{},"indexes":[{"v":1,"key":{"_id":1},"name":"_id_","ns":"mydb.test1"}]}

4、导出集合为json文件

[[email protected] ~]# mongoexport -d mydb -c test1 -o /tmp/mongodbbackup_4/test1.json


2015-12-14T06:14:53.735+0800    connected to: localhost

2015-12-14T06:14:53.736+0800    exported 2 records

[[email protected] ~]# cat /tmp/mongodbbackup_4/test1.json


{"_id":{"$oid":"566de4441b2778d299e8f3a5"},"id":1.0,"name":"tpp","age":20.0}

{"_id":{"$oid":"566de45a1b2778d299e8f3a6"},"id":2.0,"name":"linux","age":15.0}

二、MongoDB恢复



恢复之前我们要先删除之前建立的两个库:

> show dbs


local  0.078GB

mydb   0.078GB

mydb2  0.078GB

> use mydb

switched to db mydb

> db.dropDatabase()

{ "dropped" : "mydb", "ok" : 1 }

> use mydb2

switched to db mydb2

> db.dropDatabase()

{ "dropped" : "mydb2", "ok" : 1 }

> show dbs

local  0.078GB

1、恢复指定库

语法:mongorestore -d dbname dir/

说明:-d 跟要恢复的库名字;dir 就是该库备份时所在的目录

[[email protected] ~]# ls /tmp/mongodbbackup_2/mydb/

system.indexes.bson  test1.bson           test1.metadata.json

[[email protected] ~]# mongorestore -d mydb /tmp/mongodbbackup_2/mydb/


2015-12-14T07:22:12.821+0800    building a list of collections to restore from /tmp/mongodbbackup_2/mydb/ dir

2015-12-14T07:22:12.825+0800    reading metadata file from /tmp/mongodbbackup_2/mydb/test1.metadata.json

2015-12-14T07:22:12.826+0800    restoring mydb.test1 from file /tmp/mongodbbackup_2/mydb/test1.bson

2015-12-14T07:22:13.163+0800    restoring indexes for collection mydb.test1 from metadata

2015-12-14T07:22:13.163+0800    finished restoring mydb.test1 (2 documents)

2015-12-14T07:22:13.163+0800    done

2、恢复所有库

语法:mongorestore --drop dir/

说明:dir 是备份所在库的目录名字;--drop 可选,意思是当恢复之前先把现在数据库的数据删除,不建议使用(不过我们可以再次备份现在数据库中的数据库,然后使用--drop参数)。

[[email protected] ~]# mongorestore /tmp/mongodbbackup_2/


2015-12-14T07:25:17.126+0800    building a list of dbs and collections to restore from /tmp/mongodbbackup_2/ dir

2015-12-14T07:25:17.131+0800    reading metadata file from /tmp/mongodbbackup_2/mydb/test1.metadata.json

2015-12-14T07:25:17.131+0800    restoring mydb.test1 from file /tmp/mongodbbackup_2/mydb/test1.bson

2015-12-14T07:25:17.133+0800    reading metadata file from /tmp/mongodbbackup_2/mydb2/test2.metadata.json

2015-12-14T07:25:17.133+0800    restoring mydb2.test2 from file /tmp/mongodbbackup_2/mydb2/test2.bson

2015-12-14T07:25:17.133+0800    restoring indexes for collection mydb2.test2 from metadata

2015-12-14T07:25:17.193+0800    error: E11000 duplicate key error index: mydb.test1.$_id_ dup key: { : ObjectId(‘566de4441b2778d299e8f3a5‘) }

2015-12-14T07:25:17.193+0800    restoring indexes for collection mydb.test1 from metadata

2015-12-14T07:25:17.193+0800    finished restoring mydb.test1 (2 documents)

2015-12-14T07:25:17.502+0800    finished restoring mydb2.test2 (0 documents)

2015-12-14T07:25:17.502+0800    done

注意:上面有个错误,是因为刚我们已经恢复了mydb库,要想不报错,加上--drop参数即可,如下:

[[email protected] ~]# mongorestore --drop /tmp/mongodbbackup_2/


2015-12-14T07:25:35.373+0800    building a list of dbs and collections to restore from /tmp/mongodbbackup_2/ dir

2015-12-14T07:25:35.376+0800    reading metadata file from /tmp/mongodbbackup_2/mydb/test1.metadata.json

2015-12-14T07:25:35.377+0800    restoring mydb.test1 from file /tmp/mongodbbackup_2/mydb/test1.bson

2015-12-14T07:25:35.630+0800    restoring indexes for collection mydb.test1 from metadata

2015-12-14T07:25:35.631+0800    reading metadata file from /tmp/mongodbbackup_2/mydb2/test2.metadata.json

2015-12-14T07:25:35.631+0800    restoring mydb2.test2 from file /tmp/mongodbbackup_2/mydb2/test2.bson

2015-12-14T07:25:35.631+0800    finished restoring mydb.test1 (2 documents)

2015-12-14T07:25:35.889+0800    restoring indexes for collection mydb2.test2 from metadata

2015-12-14T07:25:35.890+0800    finished restoring mydb2.test2 (0 documents)

2015-12-14T07:25:35.890+0800    done

3、恢复集合

语法:mongorestore -d dbname -c collectionname dir/dbname/collectionname.bson

说明:-c跟要恢复的集合名字;dir是备份dbname库时生成文件所在路径,这里是一个bson文件的路径

[[email protected] ~]# mongorestore --drop -d mydb /tmp/mongodbbackup_2/mydb/test1.bson


2015-12-14T07:30:29.023+0800    checking for collection data in /tmp/mongodbbackup_2/mydb/test1.bson

2015-12-14T07:30:29.028+0800    reading metadata file from /tmp/mongodbbackup_2/mydb/test1.metadata.json

2015-12-14T07:30:29.028+0800    restoring mydb.test1 from file /tmp/mongodbbackup_2/mydb/test1.bson

2015-12-14T07:30:29.093+0800    restoring indexes for collection mydb.test1 from metadata

2015-12-14T07:30:29.093+0800    finished restoring mydb.test1 (2 documents)

2015-12-14T07:30:29.093+0800    done

4、导入集合

语法:mongoimport -d dbname -c collectionname --file /tmp/collectionname.json

[[email protected] ~]# mongoimport --drop -d mydb -c test1 --file /tmp/mongodbbackup_4/test1.json


2015-12-14T07:33:52.671+0800    connected to: localhost

2015-12-14T07:33:52.672+0800    dropping: mydb.test1

2015-12-14T07:33:52.677+0800    imported 2 documents

时间: 2024-10-11 07:12:33

MongoDB备份和恢复的相关文章

MongoDB 备份(mongodump)恢复(mongorerstore) 导出 (Mongoexport) 导入( Mongoimport)

MongoDB 备份(mongodump) 在Mongodb中我们使用mongodump命令来备份MongoDB数据.该命令可以导出所有数据到指定目录中. mongodump命令可以通过参数指定导出的数据量级转存的服务器. 语法 mongodump命令脚本语法如下: mongodump -h dbhost -d dbname -o dbdirectory -h: MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017 -d: 需要备份的数据库实

Linux系统中备份和恢复MongoDB数据的教程

版本:mongodb3.2.6 备份格式: /data/mongodb/bin/mongodump -h IP --port 端口号 -u 用户 -p 密码-d 数据库名-o 存储路径 恢复格式: /mnt/mongodb/bin/mongorestore -h IP --port 端口号 -u 用户名-p密码  -d 数据库名 备份的文件夹名/* 注意,如果mongodb开启了认证登录,那么需要加参数--authenticationDatabase=admin, 因为笔者使用的mongodb开

MongoDB备份(mongodump)和恢复(mongorestore)

MongoDB提供了备份和恢复的功能,分别是MongoDB下载目录下的mongodump.exe和mongorestore.exe文件 1.备份数据使用下面的命令: >mongodump -h dbhost -d dbname -o dbdirectory -h:MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017 -d:需要备份的数据库实例,例如:test -o:备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在

MongoDB导入、导出、备份、恢复、用户授权(四)

五:MongoDB导入.导出.备份.恢复.用户授权 一:数据导出,数据导入 作为DBA(管理员),经常会碰到导入导出数据的需求,下面介绍实用工具(自带的): 1:数据导入 mongoexport 导出csv格式的文件 ./mongoexport -d Test -c user1 -o /tmp/user1.out     --指定导出文件位置及文件名 数据库       集合(表) ./mongoexport -d my_mongodbTest -c user --csv -f uid,name

MongoDB整库备份与还原以及单个collection备份、恢复方法

mongodb数据库维护离不开必要的备份.恢复操作,而且一般不会出错,所以我们在使用的时候大部分时候使用备份和恢复操作就可以了 mongodump.exe备份的原理是通过一次查询获取当前服务器快照,并将快照写入磁盘中,因此这种方式保存的也不是实时的,因为在获取快照后,服务器还会有数据写入,为了保证备份的安全,同样我们还是可以利用fsync锁使服务器数据暂时写入缓存中. 高效开源数据库(mongodb)下载地址:http://www.jb51.net/softs/41751.html 备份前的检查

mongodb备份恢复,数据导入导出

数据导出 mongoexport 假设库里有一张apachelog表,里面有2 条记录,我们要将它导出 /test/mongodb/bin/mongo use wxdata switched to db wxdata db.apachelog.find(); { "_id" : ObjectId("53993357e0e73ac14b29da8a"), "host" : "66.249.69.194", "metho

MongoDB操作-备份和恢复

mongodb数据备份和恢复主要分为二种:一种是针对库的mongodump和mongorestore,一种是针对库中表的mongoexport和mongoimport. 一. mongodump备份数据库 1. 常用命令格式 mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表 -o 文件存放路径 参数说明:-h 指明数据库宿主机的IP--port 指明数据库的端口 -u 指明数据库的用户名-p 指明数据库的密码-d 指明数据库的名字-c 指明co

Mongodb备份恢复到任意时间点

描述: 根据技术反馈,上午有人误操作删除了线上mongodb表数据,用户已反馈到客服,现在需要给用户恢复数据. 首先要确定被删除数据的数据库架构是什么模式 1.1.单点:是否有备份,有备份情况下,启动一个实例将,将备份数据导入到新实例查找新实例是否有被删除掉的数据,使用mongodump导出数据,再导入到源被删除数据实例,恢复数据.详细见本章下边内容:2.2备份和 2.5恢复 单节点mongodb没有oplog的概念,如果没有备份,数据就会出现丢失,正式环境尽量使用复制集架构. 1.2.复制集:

mongodb 备份和还原

数据的备份非常中要,一下的两种方式,当然也可以利用快照: --------------------------------------------------------------------- 一.直接拷贝数据文件方式备份还原 ---------------------------------------------------------------------- 注:当调用db.fsyncUnlock()和db.fsyncLock()命令是不要关闭shell,因为如果你启用了身份验证或者