• 售前

  • 售后

热门帖子
入门百科

MongoDB的备份与恢复

[复制链接]
顺势而为47 显示全部楼层 发表于 2021-8-14 15:25:39 |阅读模式 打印 上一主题 下一主题
目录


  • Mongodump工具
  • Mongorestore工具
  • 物理备份
    任何数据库都离不开一样平常的备份与规复,这二者是数据库安全的条件,MongoDB的备份与规复方法一样平常而言都采取自带的工具来举行。
     在开始讲述备份之前,需要起首相识两个概念,一个是规复点目标、一个叫规复时间目标,下面我们分别来看:
      
  • 规复点目标:
(也叫RPO,recovery point objective)
也就是数据可以规复到哪个时间点,可以承受多少损失。
      
  • 规复时间目标:
(也叫RTO,recover time objective),在发生故障的时候,数据库可以承受多长时间宕机。
有了这两个概念,就可以理解不同备份规复方法可以满足的RPO和RTO是多少了。
来看备份工具:

Mongodump工具

在MongoDB中,mongodump工具通常用来做备份使用。它有如下特点:
1、可以对mongos和mongod举行操纵
2、备份的是数据和数据结构,会以bson数据格式存储
3、不会备份索引,只会备份索引的元数据,只有在规复的时候才会重修索引。
4、备份的过程中,mongodump会批量的将数据加载到内存中,该方法在数据量比较大的时候,会持续占用内存资源,会增长IO负载压力。
5、可以备份整个数据库、整个聚集、部分聚集内容
该工具的缺点:
1、仅仅适合备份小型的、大概单一数据库的备份
2、数据量大的时候,备份时间较长
关于Mongodump的命令使用方法,各人可以mongodump --help去查察,常用选项如下:
-p,--port:端口
-h,--host:IP地点
-d,--db:数据库
-c,--collection:备份的聚集名称
-q,--query:备份数据的条件表达式
-o,--out:备份文件的存放位置
-u,--username:用户名
-p,--password:暗码
--authenticationDataBase:认证数据库
具体的使用方法,下面有例子。

Mongorestore工具

   数据备份和数据规复二者是不可分割的,因为数据的备份,本质上还是为了规复预备的,假如备份的数据不能规复,那么备份也就失去了意义。
    在MongoDB中,Mongorestore这个工具是用来做数据规复的,数据规复命令的常用参数如下:
与mongodump重复的部分不再赘述
-p,--port
-h,--host
-d,--db
-c,--collection
--dir:规复文件存放的位置,假如指定了数据库文件夹大概聚集文件,则只规复当前数据库大概当前聚集,假如没有指定,则规复当前目录下所有备份数据。
--drop:规复前会删除已有的数据库
-u,--user
-p,--password
--authenticationDatabase
下面来看样例:
数据备份举例
  1. 备份所有数据库
  2. mongodump --port=27017 -h 127.0.0.1 -o /data/mongodb_backup -u root -p 123456
  3. 2020-11-23T23:40:41.599+0800 writing admin.system.users to
  4. 2020-11-23T23:40:41.626+0800 done dumping admin.system.users (3 documents)
  5. 2020-11-23T23:40:41.626+0800 writing admin.system.roles to
  6. 2020-11-23T23:40:41.651+0800 done dumping admin.system.roles (1 document)
  7. 2020-11-23T23:40:41.651+0800 writing admin.system.version to
  8. 2020-11-23T23:40:41.680+0800 done dumping admin.system.version (2 documents)
  9. 2020-11-23T23:40:41.680+0800 writing test.yeyz to
  10. 2020-11-23T23:40:41.680+0800 writing yeyz.test to
  11. 2020-11-23T23:40:41.726+0800 done dumping yeyz.test (2 documents)
  12. 2020-11-23T23:40:41.727+0800 done dumping test.yeyz (3 documents)
  13. 备份yeyz这一个数据库
  14. [root@VM-0-14-centos ~]# mongodump -d yeyz --port=27017 -h 127.0.0.1 -o /data/mongodb_backup -u root -p 123456 --authenticationDatabase admin   
  15. 2020-11-23T23:41:58.991+0800 writing yeyz.test to
  16. 2020-11-23T23:41:59.050+0800 done dumping yeyz.test (2 documents)
  17. 备份yeyz数据库中的test集合中的name=ccc的记录
  18. [root@VM-0-14-centos ~]# mongodump -d yeyz -c test -q '{name:{$eq:"ccc"}}' --port=27017 -h 127.0.0.1 -o /data/mongodb_backup -u root -p 123456 --authenticationDatabase admin
  19. 2020-11-23T23:43:24.473+0800 writing yeyz.test to
  20. 2020-11-23T23:43:24.501+0800 done dumping yeyz.test (1 document)
复制代码
数据规复举例
  1. 恢复前
  2. > use yeyz
  3. switched to db yeyz
  4. > show tables;
  5. test
  6. > db.test.find()
  7. { "_id" : ObjectId("5fa7eae2515b814f18f2d474"), "name" : "ccc" }
  8. { "_id" : ObjectId("5fa7f00e523d80402cdfa326"), "name" : "bbb" }
  9. 恢复后
  10. > show tables;
  11. test
  12. test_recover
  13. > db.test_recover.find()
  14. { "_id" : ObjectId("5fa7eae2515b814f18f2d474"), "name" : "ccc" }
复制代码
我们乐成的将上面的yeyz数据库中的test集会集的name=ccc的纪录规复到了test_recover这个聚集当中。

物理备份

    物理备份的概念各人应该都理解,常用的方法是复制物理硬盘上的数据库文件。
    想要包管复制的物理文件和真实的数据库文件一致,需要包管当前数据库没有写入。假如数据库有写入,则复制的数据是不正确的。所以,物理复制必须在MongoDB实例停机状态大概锁定状态下举行。一样平常来讲,在MongoDB集群中,我们会使用锁定从库的办法来举行备份。
    通常环境下,使用:
db.fsyncLock()  锁定从数据库。
db.fsyncUnlock() 解锁数据库
    锁定从节点的数据库之后,在从节点上使用物理文件拷贝的方式举行备份即可。
    备份完成即可解锁数据库。
末了,数据备份的时候,假如有写入,那么备份的数据是否会不正确?比方下面如许:

假如我们的备份进度处在中间位置,即:
    A库备份完成的时候,B库没有开始备份
此时分别写入A库和B库两个文档,则终极的备份效果中,A库的数据没有新增的数据,B库的数据有新增的数据,就会产生数据的不一致。为相识决这个问题,备份一样平常都使用锁定命据库大概停止实例的方法来解决。
    在MongoDB中,可以在从库上举行锁定大概停止实例的备份操纵,不建议在线上环境使用MongoDB单库,因为这种环境,备份规复将会成为一个瓶颈问题。
以上就是MongoDB的备份与规复的详细内容,更多关于MongoDB 备份与规复的资料请关注脚本之家其它干系文章!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作