MongoDB(四)备份恢复

MongoDB备份恢复

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>  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

img

备份oldb库下的student表数据:------------------------------------------------------(指定csv格式)(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

img
img

恢复olda库的student表数据:--------------------------------------------------------(指定json格式)(mongos节点)

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

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

img

img

恢复oldb库下的student表数据:------------------------------------------------------(指定csv格式)(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

img

img

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

img

img

MongoDB备份恢复(dump命令):

mongodump全量备份:---------------------------------------------------------------------------------(mongos节点)

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

img

img

img

备份指定world库:---------------------------------------------------------------------------------(mongos节点)

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

img

备份指定city表:---------------------------------------------------------------------------------(mongos节点)

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

img

备份city表并压缩:---------------------------------------------------------------------------------(mongos节点)

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

img

恢复world库:---------------------------------------------------------------------------------(mongos节点)

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

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

img

恢复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

img

自动覆盖原有数据恢复city表:---------------------------------------------------------------------------------(mongos节点)

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

img

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正在输入中…………

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值