MongoDB 创建备份和时间点恢复

MongoDB Creating Backups and Point In Time Restores

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

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

1.使用 Atlas 备份(基于云的 AWS 服务)

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

3。在 OS 上使用文件系统快照备份(在 Linux 上,逻辑卷管理器 (LVM) 可以创建快照。同样,用于 EC2 的 Amazon 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 配置,系统卷组和设备的位置和路径可能略有不同。

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

卸载/dev/vg0/mdb-snap01

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

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

挂载/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.Back 使用 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