
随着数据量和频率以前所未有的速度不断扩展和加速,对象存储继续作为数据堆栈的支柱,推动各种数据产品的创新和效率。其中,MongoDB是NoSQL领域的领跑者,它提供了一个多功能且可扩展的解决方案,用于管理非结构化和半结构化数据,如JSON文件。它擅长满足应用系统提出的特定需求,这些系统始终如一地处理小型但关键任务的数据,例如由电子商务交易、研发、物联网传感器读数等创建的数据。
对于现代数据基础架构来说,唯一真正的备份存储是高性能、开源且可通过行业标准 S3 API 访问的对象存储。Veeam 和 Commvault 不断验证这一说法。
我们已经介绍了如何使用 MinIO Jumbo 加速 MongoDB 备份。此方法利用了 mongodump ,这是备份和恢复小型 MongoDB 部署的绝佳工具。但是,不建议使用此方法捕获大型企业部署的快照。这是因为 mongodump 当备份的数据大于系统内存时,可能会对性能产生负面影响。此外,它不适合与分片集群一起使用, mongodump 因为它不能保证跨多个分片的事务原子性。
鉴于这些限制,Ops Manager 是大规模备份的首选方法。Ops Manager 属于 MongoDB Enterprise Advanced 中提供的付费订阅工具套件。Ops Manager 专门用于通过读取 Oplog 数据以指定时间间隔创建快照来持续备份副本集和分片集群。它还提供时间点恢复功能。Ops Manager 与其他 MongoDB 备份工具的区别在于它的灵活性,因为它可以部署在您的基础架构上,从而实现一定程度的可移植性和潜在的成本节约。
了解 MongoDB 备份基础知识
Ops Manager 可以执行完整备份和增量备份,初始、删除后或块大小更改场景需要完整备份。完整备份后进行增量备份是一种非常常见的策略,因为它既能提供成本,又能提高网络效率。
为 MongoDB 部署启用备份时,您将创建一个工作流,用于从 MongoDB 副本集或分片集群拍摄数据的计划快照。
以下是该工作流程的一些关键要素:
数据快照:Ops Manager 会按照用户计划的时间间隔定期拍摄数据目录的快照。 监控:MongoDB 代理监控您的部署,并提供内置工具来评估查询和架构性能等指标。 数据传输:备份守护程序从 MongoDB 部署中复制这些快照,并将它们发送到 MinIO。 增量更改:为了使备份保持最新,Ops Manager使用WiredTiger的增量备份光标工具来捕获自每个副本集操作日志(Oplog)中的最后一个快照以来对数据所做的任何更改。这些日志由 MongoDB 代理跟踪,压缩的批处理或切片存储在 MinIO 中。 恢复:如果发生数据丢失或其他问题,Ops Manager 允许您从这些快照中恢复 MongoDB 数据。

当您处于备份过程的规划阶段时,MongoDB强烈建议您通过其支持门户创建票证。它们可以帮助您为部署制定适当的体系结构。在几乎所有情况下,对象存储都起着关键作用。
为 MongoDB 快照备份设置 MinIO
要利用 MinIO 满足您的备份需求,您需要启动并运行 MinIO Server。如果您尚未设置 MinIO,请继续将其安装在您选择的平台上。安装 MinIO 后,您可以使用 Web 控制台或 mc 命令行工具访问它。如果您选择 mc,以下是安装它的步骤。
创建一个存储桶来存储您的快照。不要创建子文件夹,因为 Ops Manager 不支持这些子文件夹。您需要先为 Snapshot Store 创建一个存储分段。

然后,为您的 Oplog 存储提供另一个存储桶。

配置 MongoDB 以将快照备份到 MinIO
本教程的先决条件是要备份的 Ops Manager 和副本集。如果您尚未安装 Ops Manager,请参考 MongoDB 的指南。
您可以使用 Ops Manager 创建新部署,但在本教程中,我们将假设您已经有一个现有的副本集。如果尚未这样做,请按照 MongoDB 的指南来监视现有部署。您需要将 Ops Manager 代理下载到运行 MongoDB 部署的服务器,但向导将引导您完成该过程。
接下来的几个配置可以在 Ops Manager 的“管理”面板中完成。单击“备份”面板以打开 Snapshot 存储选项。
在此配置中,快照将存储在 MinIO 中。正确配置后,您的 S3 存储应如下所示。您必须使用高级配置选项。
S3 存储桶名称 - 您为 Snapshot Storage 创建的 MinIO 存储桶
区域覆盖 - 设置为 us-east-1
S3 终端节点 - 在本教程中,请将 https 关闭 Minio 主机 URL。指定 MinIO S3-API 的端口号,而不是 MinIO 控制台的端口号。
路径样式访问 - 检查
AWS 访问密钥 – MinIO 用户名
AWS 私有密钥 - MinIO 密码
<主机名>:<端口> - 以逗号分隔的副本集成员列表
承认MongoDB无法提供对MinIO的支持 - 检查
虽然 Snapshot short 存储桶的必要性似乎很明显,但 Oplog Storage 选项可能不是。作为前面概述的工作流的解释和回顾,MongoDB Agent会持续监控副本集,并跟踪主副本集的Oplog(操作日志)中的任何更改。其他副本集将这些更改复制并应用于它们自己的 Oplog。MongoDB Agent 跟踪所有副本集的 Oplog,然后将这些新的 Oplog 条目传输到 Ops Manager。这些 Oplog 条目以称为 Oplog 切片的压缩包形式发送,这些压缩包需要存储才能使 Ops Manager 正常运行。
导航到“管理”面板,然后导航到“Oplog 存储”面板,为 Ops Manager 配置 Oplog 存储。选择 Add New s3 Oplog Store,然后选择高级配置面板。
正确配置后,Oplog S3 存储面板应类似于下面的屏幕截图。您绝对需要 Oplog 存储与快照存储不同的存储桶。在快照存储配置面板中,您应该熟悉所有其他必填字段。
您现在可以启用连续备份。
如果尚未启用 HEAD 目录,系统会首先要求你启用 HEAD 目录。这可以在“备份初始配置”下的“管理”中完成。默认目录是副本集 dbpath 的目录。
通过单击 Ops Manager 起始页上的 Continuous backup 来启动 Ops Manager 备份向导。
单击绿色的“开始设置”按钮开始该过程。
您需要先安装 MongoDB 代理。在本教程的前面部分,我们假设你已经完成了此操作,但如果你还没有,你现在必须这样做。最低要求是一个 Monitoring 实例和一个 Backup 实例。在生产环境中,这两者应在同一台服务器上激活,并且该服务器必须与将要监视 mongod 的实例不同。
阅读指南以安装代理,配置并验证后单击“下一步”按钮继续。
下一个屏幕将指导您在已添加到项目的副本集上启用备份。请注意,只能在 MongoDB Enterprise 上启用备份。如果使用社区版,则必须升级,或者使用前面提到的 mongodump .
如果成功,现在应该能够在部署上看到“已启用备份”。


首次配置 Ops Manager 时,系统会要求您配置 Ops Manager Snapshot 计划。如果您的需求已更改,您可以随时通过导航到“管理员”,然后导航到“Ops Manager 配置”来编辑计划。您无法创建按需快照,并且初始备份的功能已弃用。实质上,您启用备份,然后等待第一个备份运行。

如何还原备份
Ops Manager 使您能够从完整的计划快照或快照之间的特定时间点恢复数据,包括分片集群和副本集。基于快照的恢复是最简单的方法,涉及 Ops Manager 直接从 MinIO 读取数据。
相比之下,使用 Ops Manager 进行时间点恢复涉及从 MinIO 获取快照数据,将其应用于存储到指定点的 Oplog,然后将组合交付给 Ops Manager。Ops Manager 中的配置选项允许您指定每次备份要保留的 Oplog 数据量,这会影响可以进行时间点还原的持续时间。
要从“连续备份”面板配置 Ops Manager 以进行还原,只需单击部署并选择还原选项即可。按照向导的步骤选择还原点,并决定是还原到另一个群集还是下载文件
结论
本综合指南探讨了 MongoDB Ops Manager 和 MinIO 之间的协同作用,展示了它们在保护 MongoDB 数据方面的关键作用。虽然 mongodump 对于小型部署来说,Ops Manager 仍然是一个可行的选择,但它是大型企业方案的首选。它能够无缝创建和恢复 MongoDB 资源的快照,结合 MinIO 的高性能、开源和 S3 API 兼容存储,为强大的备份策略奠定了基础,确保 MongoDB 数据即使在面临意外挑战时也能保持安全和可访问性。
本文由MinIO中国提供翻译和修改。