MongoDB-3.6版本多种方式备份恢复(mongo备份与恢复)

MongoDB备份恢复(介绍):

1、备份恢复工具介绍:

(1) mongoexport/mongoimport
(2) * mongodump/mongorestore

2、备份工具区别在哪里?

2.1.    mongoexport/mongoimport 导入/导出的是JSON格式或者CSV格式,
        mongodump/mongorestore导入/导出的是BSON格式。

2.2.    JSON可读性强但体积较大,BSON则是二进制文件,体积小但对人类几乎没有可读性。

2.3.    在一些mongodb版本之间,BSON格式可能会随版本不同而有所不同,所以不同版本之间用mongodump/mongorestore可能不会成功,
        具体要看版本之间的兼容性。当无法使用BSON进行跨版本的数据迁移的时候,
        使用JSON格式即mongoexport/mongoimport是一个可选项。
        跨版本的mongodump/mongorestore个人并不推荐,实在要做请先检查文档看两个版本是否兼容(大部分时候是的)。

2.4.    JSON虽然具有较好的跨版本通用性,但其只保留了数据部分,不保留索引,账户等其他基础信息。使用时应该注意。

mongoexport/mongoimport工具

1、异构平台迁移 mysql <—> mongodb
2、同平台,跨大版本:mongodb 2 —-> mongodb 3

mongodump和mongorestore介绍:

mongodump能够在Mongodb运行时进行备份,它的工作原理是对运行的Mongodb做查询,然后将所有查到的文档写入磁盘。
但是存在的问题时使用mongodump产生的备份不一定是数据库的实时快照,如果我们在备份时对数据库进行了写入操作,则备份出来的文件可能不完全和Mongodb实时数据相等。另外在备份时可能会对其它客户端性能产生不利的影响。

mongoexport具体用法如下所示:

集群数据备份与单节点配置一样

mongoexport –help

    -h:指明数据库宿主机的IP
    -u:指明数据库的用户名
    -p:指明数据库的密码
    -d:指明数据库的名字
    -c:指明collection的名字
    -f:指明要导出那些列
    -o:指明到要导出的文件名
    -q:指明导出数据的过滤条件
    –authenticationDatabase admin

mongoimport具体用法如下所示:

mongoimport –help

    -h:指明数据库宿主机的IP
    -u:指明数据库的用户名
    -p:指明数据库的密码
    -d:指明数据库的名字
    -c:指明collection的名字
    -f:指明要导入那些列
    -j:–numInsertionWorkers=  number of insert operations to run concurrently

MongoDB备份恢复(export命令):

备份olda库下的student表数据:

(默认json格式)(mongos节点)

#退出mongos连接,到命令行界面执行备份
mongoexport -h 10.0.0.40 –port 28017 -d olda -c student -o /tmp/mongodb_backup.json

MongoDB-3.6版本多种方式备份恢复(mongo备份与恢复)
 

备份oldb库下的student表数据:

(mongos节点)

#退出mongos连接,到命令行界面执行备份(要指定数据列的键)
#注意:想要备份哪一列,那就指定哪一列
mongoexport -h 10.0.0.40 –port 28017 -d oldb -c student –type=csv -f id,name,age,date -o /tmp/mongodb_backup.csv

 MongoDB-3.6版本多种方式备份恢复(mongo备份与恢复)

MongoDB-3.6版本多种方式备份恢复(mongo备份与恢复)

恢复olda库的student表数据:

(mongos节点)

mongodb恢复不会覆盖原有的数据,当前测试环境会产生数据冲突。
所以恢复数据到其他的表中(也可以直接恢复到其他 “库” )

mongoimport -h 10.0.0.40 –port 28017 -d olda -c student_source /tmp/mongodb_backup.json

MongoDB-3.6版本多种方式备份恢复(mongo备份与恢复)

MongoDB-3.6版本多种方式备份恢复(mongo备份与恢复)

恢复oldb库下的student表数据:

(mongos节点)

要指定第一列的id,name,age,date不为数据,mongodb没有数据格式束缚
本次恢复数据到wsp与wll库

#csv格式的文件第一行,没有数据对应列的名字(导入wsp库)
mongoimport -h 10.0.0.40 –port 28017 -d wsp  -c student –type=csv -f id,name,age,date –file /tmp/mongodb_backup.csv

MongoDB-3.6版本多种方式备份恢复(mongo备份与恢复)

MongoDB-3.6版本多种方式备份恢复(mongo备份与恢复)

#csv格式的文件第一行,有数据对应列的名字(导入wll库)
#–headerline:指明第一行是列名,不需要导入。
mongoimport -h 10.0.0.40  –port 28017 -d wll -c student –type=csv –headerline –file /tmp/mongodb_backup.csv

MongoDB-3.6版本多种方式备份恢复(mongo备份与恢复)

MongoDB-3.6版本多种方式备份恢复(mongo备份与恢复)

MongoDB备份恢复(dump命令):

mongodump全量备份:

(mongos节点)

mkdir /tmp/backup
mongodump -h 10.0.0.40 –port 28017 -o /tmp/backup/

MongoDB-3.6版本多种方式备份恢复(mongo备份与恢复)

MongoDB-3.6版本多种方式备份恢复(mongo备份与恢复)

MongoDB-3.6版本多种方式备份恢复(mongo备份与恢复)

备份指定world库:

(mongos节点)

mongodump -h 10.0.0.40 –port 28017 -d world -o /tmp/backup/

 MongoDB-3.6版本多种方式备份恢复(mongo备份与恢复)

备份指定city表:

(mongos节点)

mongodump -h 10.0.0.40 –port 28017 -d world -c city -o /tmp/backup/

MongoDB-3.6版本多种方式备份恢复(mongo备份与恢复)

备份city表并压缩:

(mongos节点)

mongodump -h 10.0.0.40 –port 28017 -d world -c city -o /tmp/backup/ –gzip

MongoDB-3.6版本多种方式备份恢复(mongo备份与恢复)

恢复world库:

(mongos节点)

#先删除world库
use world
db.dropDatabase()

#直接指定库的目录就可以
mongorestore -h 10.0.0.40 –port 28017 -d world /tmp/backup/world/

MongoDB-3.6版本多种方式备份恢复(mongo备份与恢复)

恢复world库city表:

(mongos节点)

#先删除world库
use world
db.dropDatabase()

mongorestore -h 10.0.0.40 –port 28017 -d world -c city /tmp/backup/world/city.bson

MongoDB-3.6版本多种方式备份恢复(mongo备份与恢复)

自动覆盖原有数据恢复city表:

(mongos节点)

#加了–drop参数会自动覆盖原有数据,不需要删除原有数据
mongorestore -h 10.0.0.40 –port 28017 -d world -c city –drop /tmp/backup/world/city.bson

MongoDB-3.6版本多种方式备份恢复(mongo备份与恢复)

正文完
 0