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