选择合适的mongo备份方式

背景

mongo数据库常用备份还原

工具

1.mongoexport mongoimport
2.mongodump mongorestore

mongoexport/mongoimport与mongodump/mongorestore的对比: mongoexport/mongoimport导入/导出的是JSON格式, 而mongodump/mongorestore导入/导出的是BSON格式。

注意

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

JSON可读性强但体积较大,BSON则是二进制文件,体积小但对人几乎没有可读性。
在一些mongodb版本之间,BSON格式可能会随版本不同而有所不同,所以不同版本之间用mongodump/mongorestore可能不会成功,具体要看版本之间的兼容性。
当无法使用BSON进行跨版本的数据迁移的时候,使用JSON格式即mongoexport/mongoimport是一个可选项。跨版本的mongodump/mongorestore并不推荐,(至少4.*命令不支持1.*的备份)
实在要做请先检查文档看两个版本是否兼容。

常用

导出表:
/usr/local/mongodb/bin/mongoexport -u root -p **** --authenticationDatabase admin  
-d gold-pre-setting-service -c buyerprices 
-o /root/buyerprices.json_bak_20200820 --type json

导入表:
/usr/local/mongodb/bin/mongoimport -h 192.168.3.68 -u root -p ****  -
d gold-pre-setting-service --authenticationDatabase admin 
--file /root/buyerprices.json

#参数说明
-d, --db=<database-name>             # 指定数据库
-c, --collection=<collection-name>   # 指定集合      
-o, --out=<directory-path>  # 指定导出文件保存目录

-u, --username=<username>                   # 指定连接用户
-p, --password=<password>                   # 指定连接用户密码
--authenticationDatabase=<database-name>    # 指定连接用户验证数据库
--authenticationMechanism=<mechanism>       # 指定连接验证机制

-h                  指明数据库宿主机的IP
-q                  指明导出数据的过滤条件
--authenticationDatabase  验证数据的名称
--gzip              备份时压缩

#创建相应的管理用户
>use admin
>db.createUser(
  {
    user: "kemeadmin",
    pwd: "123456",
    roles: [ { role: "root", db: "admin" } ]
   }
   )
> exit

mongodump

进行全备
mongodump -h 10.0.0.160:27017 -u kemeadmin -p123456 --authenticationDatabase admin -o /data/backup/mongo/full20190611

备份test 库
mongodump -h 10.0.0.160:27017 -u kemeadmin -p123456 --authenticationDatabase admin -d test -o /data/backup/mongo

备份test库下的inventory 集合
mongodump -h 10.0.0.160:27017 -ukemeadmin -p123456 --authenticationDatabase admin -d test -c inventory -o /data/backup/mongo/

压缩备份单个库
mongodump -h 10.0.0.160:27017 -ukemeadmin -p123456 --authenticationDatabase admin -d school -o /data/backup/mongo/ --gzip
压缩备份某个集合也是一样的加上–gzip

mongorestore 恢复

--drop 恢复的时候把之前的集合drop掉(根据场景选择使用)

全库备份中恢复单库(基于之前的全库备份)

从全库中恢复test库
mongorestore -h 10.0.0.160:27017 -ukemeadmin -p123456 --authenticationDatabase admin 
-d test --drop  /data/backup/mongo/full20190611/test

测试

恢复某个库,不删除之前的集合看看数据有什么变化 (mongorestore恢复时不添加--drop)

原文摘录
做之前删除一条数据,好验证
> use test
switched to db test
> db.test.find()
{ "_id" : ObjectId("5cfdbd4bceada13ff76c3afa"), "name" : "keme", "age" : 18, "ad" : "北京市朝阳区" }
{ "_id" : ObjectId("5cfdbd4bceada13ff76c3afb"), "name" : "xiaoke", "age" : 17, "ad" : "北京市朝阳区" }
{ "_id" : ObjectId("5cfdbd4bceada13ff76c3afc"), "name" : "aaa", "age" : 20, "ad" : "北京市朝阳区" }
{ "_id" : ObjectId("5cff09d8ad4a9f4bf7ffb242"), "name" : "xiaojian", "age" : 20, "ad" : "北京市朝阳区" }
# 删除名字是aaa的数据
> db.test.deleteOne( {"name":"aaa"} )
{ "acknowledged" : true, "deletedCount" : 1 }
> db.test.find()
{ "_id" : ObjectId("5cfdbd4bceada13ff76c3afa"), "name" : "keme", "age" : 18, "ad" : "北京市朝阳区" }
{ "_id" : ObjectId("5cfdbd4bceada13ff76c3afb"), "name" : "xiaoke", "age" : 17, "ad" : "北京市朝阳区" }
{ "_id" : ObjectId("5cff09d8ad4a9f4bf7ffb242"), "name" : "xiaojian", "age" : 20, "ad" : "北京市朝阳区" }
 
恢复test库,看看有没有aaa这个数据
[root@mongo-160 ~]# mongorestore -h 10.0.0.160:27017 -ukemeadmin -p123456 --authenticationDatabase admin -d test /data/backup/mongo/full20190611/test/
#登录查看
[root@mongo-160 ~]# mongo localhost:27017 -uadmin -p123456
> use test
switched to db test
> db.test.find()
{ "_id" : ObjectId("5cfdbd4bceada13ff76c3afa"), "name" : "keme", "age" : 18, "ad" : "北京市朝阳区" }
{ "_id" : ObjectId("5cfdbd4bceada13ff76c3afb"), "name" : "xiaoke", "age" : 17, "ad" : "北京市朝阳区" }
{ "_id" : ObjectId("5cff09d8ad4a9f4bf7ffb242"), "name" : "xiaojian", "age" : 20, "ad" : "北京市朝阳区" }
{ "_id" : ObjectId("5cfdbd4bceada13ff76c3afc"), "name" : "aaa", "age" : 20, "ad" : "北京市朝阳区" }
ok ,恢复成功

以下RDS备份MongoDB数据 https://help.aliyun.com/document_detail/55008.html?spm=a2c4g.11186623.6.677.4039d6afePr5YU
link

注意事项
当实例的数据库版本为3.2或3.4时,实例中集合加索引的数量需控制在1万以内,
否则可能造成物理备份失败。如果您的业务可能会超过此限制,建议升级数据库版本至4.0及以上,
您也可以在创建实例时选择数据库版本为4.0或4.2。
数据库版本升级后,原版本的MongoDB备份文件无法用于新版本的数据恢复。

本文说明,主要技术内容来自互联网技术大佬的分享,还有一些自我的加工(仅仅起到注释说明的作用)。如有相关疑问,请留言,将确认之后,执行侵权必删

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值