软件下载吧文章资讯

分类分类

分享分布式文档存储数据库MongoDB备份与恢复的实战操作

2024-02-05 12:47作者:下载吧

  前文我们聊了下分布式文档存储数据库之MongoDB访问控制,回顾请参考;今天我们来了解下mongodb的备份与恢复

  为什么要备份?

  备份的目的是对数据做冗余的一种方式,它能够让我们在某种情况下保证最少数据的丢失;之前我们对mongodb做副本集也是对数据做冗余,但是这种在副本集上做数据冗余仅仅是针对系统故障或服务异常等一些非人为的故障发生时,保证数据服务的可用性;它不能够避免人为的误操作;为了使得数据的安全,将数据损失降低到最小,我们必须对数据库周期性的做备份;

  常用备份方法

分享分布式文档存储数据库MongoDB备份与恢复的实战操作

  提示:上图主要描述了mongodb数据库上常用备份策略,我们可以逻辑备份,逻辑备份是将数据库中的数据导出成语句,通常使用专用工具导出和导入来完成一次备份与恢复;其次我们也可以物理备份,简单讲物理备份就是把数据库文件打包,备份;恢复时直接将对应的数据库文件解压恢复即可;另外一种快速物理备份的方式就是给数据拍快照,拍快照可以将数据保存为当前拍快照时的状态;如果我们要进行恢复直接恢复快照即可;

  mongodb逻辑备份和物理备份比较

分享分布式文档存储数据库MongoDB备份与恢复的实战操作

  提示:从上图描述可以看出总体上来看物理备份效率和恢复效率要高于逻辑;物理备份效率高于逻辑备份,其主要原因是逻辑备份是通过数据库接口将数据读取出来,然后保存为对应格式的文件,而物理备份只需要将数据文件直接打包备份,不需要一条一条的读取数据,然后写入到其他文件,这中间就省去了读写过程,所以物理备份效率高;恢复也是类似的过程,物理恢复也是省去了读写的过程;

  mongodb逻辑备份工具

  在mongodb中使用逻辑备份的工具有两组,第一组是mongodump/mongorestore,使用mongodump/mongorestore这组工具来逻辑的备份数据,它备份出来的数据是BSON格式,BSON是一种二进制格式,通常无法使用文本编辑器直接打开查看其内容,对人类的可读性较差,但它的优点是保存的文件体积要小;使用这组命令导出的数据,在恢复是依赖mongodb版本,不同版本导出的BSON格式略有不同,所以恢复时,可能存在版本不同而导致恢复数据失败的情况;另外一组是mongoexport/mongoimport,这组工具导出的数据是json格式的数据,通常我们可以使用文本编辑器打开直接查看,对人类的可读性较好,但体积相对BSON格式的数据要大,恢复时不依赖版本;所以跨版本备份要先查看下对应版本的兼容性,如果兼容使用mongodump/mongorestore,不兼容的话建议使用mongoexport/mongoimport;这里需要注意一点,JSON格式虽然可读性很好,也很通用,但是它只是保留了数据部分,而没有保留索引,账户等基础信息,在使用是应该注意;

  使用mongodump备份数据

  插入数据

> use testdb
switched to db testdb
> for(i=1;i<=1000;i++) db.test.insert({id:i,name:”test”+i,age:(i%120),classes:(i%25)})
WriteResult({ “nInserted” : 1 })
> show tables
test
> db.test.findOne()
{
“_id” : ObjectId(“5fb130da012870b3c8e3c4ad”),
“id” : 1,
“name” : “test1”,
“age” : 1,
“classes” : 1
}
> db.test.count()
1000
>

展开全部

相关文章

说两句网友评论
    我要跟贴
    取消