MongoDB创建备份和时间点恢复

时间:2017-03-09 14:11:56

标签: mongodb database-backups

我是一个尝试在某些特定情况下使用MongoDB的SQL Server DBA。我目前所拥有的是3节点副本集,其中包含2个数据承载节点和1个仲裁器。我现在正在努力的事情就是找到一个明确的答案来创建备份,这将允许我进行时间点恢复,类似于MS SQL中的FULL和LOG备份。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

Mongodb提供了不同的备份和恢复方法

<强> 1。备份Atlas(基于云的AWS服务)

<强> 2。备份MongoDB Cloud Manager或Ops Manager (仅限企业版。支持从图形用户界面备份和恢复MongoDB副本集和分片集群。)

第3。备份OS上的文件系统快照(在Linux上,逻辑卷管理器(LVM)可以创建快照。同样,Amazon的EC2 EBS存储系统支持快照) 要获取正在运行的mongod进程的正确快照,您必须启用日记功能。如果未启用日记功能,则无法保证快照的一致性或有效性。

要使用LVM创建快照,请按以下格式以root身份发出命令:

lvcreate --size 100M --snapshot --name mdb-snap01 / dev / vg0 / mongodb 此命令在vg0卷组中创建mongodb卷的名为mdb-snap01的LVM快照(使用--snapshot选项)。

此示例创建位于/ dev / vg0 / mdb-snap01的名为mdb-snap01的快照。根据操作系统的LVM配置,系统卷组和设备的位置和路径可能略有不同。

要恢复快照,请发出以下命令序列:

umount / dev / vg0 / mdb-snap01

lvcreate --size 1G --name mdb-new vg0

dd if = / dev / vg0 / mdb-snap01 of = / dev / vg0 / mdb-new

mount / dev / vg0 / mdb-new / srv / mongodb

了解更多详情https://docs.mongodb.com/manual/tutorial/backup-with-filesystem-snapshots/#back-up-and-restore-using-lvm-on-linux

4.回复mongodump(基于终端的Mongodb工具)

mongodump和mongorestore是用于备份和恢复小型MongoDB部署的简单而有效的工具

mongodump和mongorestore针对正在运行的mongod进程进行操作

如果您没有指定任何数据库,它会将所有数据库和副本与每个数据库的索引(json格式)一起捕获到单独的文件夹中

默认情况下,mongodump不备份本地数据库(包含Replicaset配置和oplog.rs集合)。

对于副本集,mongodump提供了--oplog选项,以在mongodump操作期间包含在其输出oplog条目中。这允许相应的mongorestore操作重放捕获的oplog。要恢复使用--oplog创建的备份,请使用带有--oplogReplay选项的mongorestore。

Mongorestore仅捕获数据库文件。恢复数据后必须重建索引。 https://docs.mongodb.com/manual/tutorial/backup-and-restore-tools/#

<强>命令:

mongodump --out / data / backup /(它备份所有数据库和索引)

mongodump --collection myCollection --db test(指定数据库和集合) mongorestore --port