mongodump与mongorestore


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

  • mongoexport/mongoimport导入/导出的是JSON格式,而mongodump/mongorestore导入/导出的是BSON格式。
    JSON可读性强但体积较大,BSON则是二进制文件,体积小但对人类几乎没有可读性。
    在一些mongodb版本之间,BSON格式可能会随版本不同而有所不同,所以不同版本之间用mongodump/mongorestore可能
    不会成功,具体要看版本之间的兼容性。当无法使用BSON进行跨版本的数据迁移的时候,使用JSON格式即mongoexport/mongoimport是一个可选项。跨版本的mongodump/mongorestore个人并不推荐,实在要做请先检查文档看两个版本是否兼容(大部分时候是的)。
    JSON虽然具有较好的跨版本通用性,但其只保留了数据部分,不保留索引,账户等其他基础信息。使用时应该注意。

mongodump命令脚本语法如下:

>mongodump -h dbhost -d dbname -o dbdirectory
 -h:
    MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d:
    需要备份的数据库实例,例如:test
-o:
    备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,
    系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。 

mongodump –host HOST_NAME –port PORT_NUMBER 该命令将备份所有MongoDB数据
mongodump –host runoob.com –port 27017

[root@www1 mongodb]# mongodump -h localhost -u u1 -p 123qwe -d data -o data_mongo.tar

mongodump –dbpath DB_PATH –out BACKUP_DIRECTORY
mongodump –dbpath /data/db/ –out /data/backup/

mongodump –collection COLLECTION –db DB_NAME 该命令将备份指定数据库的集合。
mongodump –collection mycol –db test

mongorestore

mogorestore命令脚本语法如下:

>mongorestore -h <hostname><:port> -d dbname <path>

--host <:port>, -h <:port>:
MongoDB所在服务器地址,默认为: localhost:27017

--db , -d :
需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2

--drop:
恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!

path:
mongorestore 最后的一个参数,设置备份数据所在位置,例如:c:\data\dump\test。

你不能同时指定 <path> 和 --dir 选项,--dir也可以设置备份目录。
--dir:

指定备份的目录

你不能同时指定 <path> 和 --dir 选项。

mongoexport

参数
    -h:指明数据库宿主机的IP

    -u:指明数据库的用户名

    -p:指明数据库的密码

    -d:指明数据库的名字

    -c:指明collection的名字

    -f:指明要导出那些列

    -o:指明到要导出的文件名

    -q:指明导出数据的过滤条件

    root@mongo:~/cas.mongo# mongorestore -h mongo:27017 -uadmin -pPassw0rd  -d admin admin
    root@mongo:~/cas.mongo# mongorestore -h mongo:27017 -ucas -pPassw0rd  -d cas cas



[root@localhost mongodb]# ./bin/mongoexport -d test -c students -o students.dat  

    -d:指明使用的库,本例中为test

    -c:指明要导出的集合,本例中为students

    -o:指明要导出的文件名,本例中为students.dat


./bin/mongoexport -d test -c students --csv -f classid,name,age -o students_csv.dat 

    -csv:指明要导出为csv格式

    -f:指明需要导出classid、name、age这3列的数据 

mongoimport

参数
    -h:指明数据库宿主机的IP

    -u:指明数据库的用户名

    -p:指明数据库的密码

    -d:指明数据库的名字

    -c:指明collection的名字

    -f:指明要导入那些列

./bin/mongoimport -d test -c students students.dat 

    参数说明:

    -d:指明数据库名,本例中为test

    -c:指明collection名,本例中为students

    students.dat:导入的文件名

./bin/mongoimport -d test -c students --type csv --headerline --file students_csv.dat   

    -type:指明要导入的文件格式

    -headerline:指明第一行是列名,不需要导入

    -file:指明要导入的文件

–备份单个表

mongodump -u  superuser -p 123456  --port 27017 --authenticationDatabase admin -d myTest -c d -o /backup/mongodb/myTest_d_bak_201507021701.bak

–备份单个库

mongodump  -u  superuser -p 123456 --port 27017  --authenticationDatabase admin -d myTest -o  /backup/mongodb/

–备份所有库

mongodump  -u  superuser -p 123456 --authenticationDatabase admin  --port 27017 -o /root/bak 

–备份所有库推荐使用添加–oplog参数的命令,这样的备份是基于某一时间点的快照,只能用于备份全部库时才可用,单库和单表不适用:

mongodump -h 127.0.0.1 --port 27017   --oplog -o  /root/bak 

–同时,恢复时也要加上–oplogReplay参数,具体命令如下(下面是恢复单库的命令):

mongorestore  -d swrd --oplogReplay  /home/mongo/swrdbak/swrd/

–恢复单个库:

mongorestore  -u  superuser -p 123456 --port 27017  --authenticationDatabase admin -d myTest   /backup/mongodb/

–恢复所有库:

mongorestore   -u  superuser -p 123456 --port 27017  --authenticationDatabase admin  /root/bak

–恢复单表

mongorestore -u  superuser -p 123456  --authenticationDatabase admin -d myTest -c d /backup/mongodb/myTest_d_bak_201507021701.bak/myTest/d.bson
坚持原创技术分享,您的支持将鼓励我继续创作!