Ops Manager可以将快照数据作为数据块写入 S3 存储桶并跟踪Ops Manager应用程序数据库中的元数据,从而将快照存储在 S3 或 S3 兼容的对象存储中。通过不可变的 S3 快照, Ops Manager与 S3 对象锁或等效项集成,以提供以下功能:
快照数据和备份元数据一起存储在 S3 存储桶中。
保护快照对象不被删除或修改,直到定义的保留期到期(由对象存储强制执行)。
将快照从启用对象锁的存储桶导入到新的或重建的Ops Manager部署中,以进行灾难恢复或迁移。
使用此功能可保护备份免遭恶意或意外删除,例如勒索软件攻击或操作符错误。您可以仅使用存储在 S3 中的内容在新的Ops Manager实例中恢复备份。
本指南介绍了您直接在托管上安装和管理的Ops Manager部署的不可变 S3 快照。如果使用Kubernetes Operator (MCK) 的MongoDB控制器部署Ops Manager ,请参阅Ops Manager资源规范示例。
重要
此功能需要Ops Manager 8.0.19 或更高版本。
不可变 S3Atlas 备份快照的工作原理
使用启用了对象锁的存储桶配置 S3快照存储并启用不可变备份后:
Ops Manager将快照块和恢复所需的元数据写入 S3 存储桶,而不是仅将元数据保存在Ops Manager应用程序数据库中。
如果已配置, Ops Manager会延长每个快照的对象锁保留时间,以便对象存储在备份作业保留窗口结束之前防止删除或修改。
Ops Manager可以通过仅读取 S3 存储桶存储的内容,从预填充的存储桶中发现这些不可变的快照并将其导入到另一个Ops Manager实例中。
先决条件
要使用不可变的 S3 快照,请确保您具备以下条件:
Ops Manager 8.0.19 或更高版本,包括对快照不变性和 S3 导入的支持。
在Ops Manager中配置的 S3快照存储(块存储)。不可变快照仅支持基于 S3 的快照存储,而不支持MongoDB块存储或文件系统快照存储。
支持对象锁的对象存储,例如 AWS S3 或兼容设备,且在存储桶上启用了对象锁。大多数 S3 提供程序需要对象版本控制才能使对象锁正常运行,而某些提供程序仅允许在存储桶创建期间使用对象锁。
标准备份要求,例如在适当的节点上启用备份的MongoDB 助手以及用于时间点恢复 (PITR) 的oplog (操作日志)存储。
重要
不可变的 S3 快照仅保护快照数据。用于 PITR 的 oplog 切片继续使用您配置的oplog存储,该存储不支持对象锁。对 oplog 使用启用了对象锁的存储桶可能会导致oplog删除路径失败。
Considerations
规划不可变 S3 快照时,请考虑以下事项:
没有追溯不变性。启用不可变备份后, Ops Manager仅使用对象锁保护写入存储桶的快照。Ops Manager不会对现有快照对象应用对象锁定。
对象锁配置。Ops Manager不为不支持对象锁的 S3 存储桶提供不变性。您必须单独在存储桶上配置对象锁。在Ops Manager中配置对象锁设置或在创建存储桶后更新存储桶设置不会在存储桶上启用对象锁。
不会自动迁移现有数据。通过在 S3 存储之间迁移备份功能,您可以更改备份作业用于将来快照的 S3快照存储。它不会在存储桶之间复制或移动现有快照数据。
托管存储上的保留和对象锁定。当快照根据备份作业保留策略过期时, Ops Manager会停止公开快照并尝试删除相关对象。只有在对象锁定保留期到期后, Ops Manager才能删除对象。
导入存储上的保留。Ops Manager从不删除导入存储中的数据。保留只影响Ops Manager中的元数据可见性。
要求强读后写入一致性
MongoDB Ops Manager 要求您用于备份的 S3 兼容存储或 S3 兼容存储兼容对象存储提供强大的写入后读取一致性。MongoDB Ops Manager 将对象写入存储后,读取该对象必须返回最近写入的数据。仅提供最终一致性的存储可能会返回过时数据,并导致备份操作失败。
创建或更新 S3 兼容的存储存储配置时,MongoDB Ops Manager 会验证存储的一致性模型。如果存储在写入后未立即返回预期数据,验证将失败,MongoDB Ops Manager 也不会保存配置。
默认下,AWS S3 兼容存储提供强大的写入后读取一致性。如果您使用其他供应商提供的与 S3 兼容的存储兼容存储,请查阅该供应商的文档,以确认该存储为新对象和现有对象的覆盖提供强大的写入后读取一致性。某些存储仅保证新对象的一致性,并在覆盖时保持最终一致,这可能会导致间歇性验证失败。
配置不可变的 S3Atlas 备份快照
要配置不可变的 S3 快照,请完成以下任务:
在Ops Manager中启用不可变备份。
创建启用对象锁的 S3 存储桶。
在Ops Manager中配置新的 S3快照存储。
将现有备份作业切换到不可变的 S3存储。
启用不可变备份
应用程序设置控制不可变备份。在使用对象锁定配置 S3快照存储存储之前,全局管理员必须启用此设置。
创建启用对象锁的 S3 存储桶
注意
您无法在Ops Manager中为现有 S3快照存储启用对象锁。如果您已使用 S3 存储桶进行备份但需要不可变快照,请创建一个启用了对象锁的新存储桶并配置新的 S3快照存储。
在Ops Manager中配置新的 S3 快照存储
创建新的 S3快照存储。
按照添加一个 S3 兼容快照存储过程创建指向启用对象锁的存储桶的新 S3快照存储。根据 S3提供商的要求,指定存储桶名称、端点、地区和凭证。
重要
只有在创建新的 S3快照存储时才能选择这些设置。保存存储后就无法更改它们。
此快照存储用作不可变快照的目标。Ops Manager会将使用此存储的备份的快照块和元数据写入存储桶。
注意
如果使用 MongoDB Enterprise Kubernetes Operator 管理 Ops Manager,则还必须在 MongoDBOpsManager 资源中对应的 s3Stores 条目启用对象锁。将 spec.backup.s3Stores[].objectLockEnabled 字段设置为 true,以便 Kubernetes Operator 协调具有对象锁定意识的 Ops Manager。
您仍然需要一个MongoDB实例来充当Ops Manager操作的元数据存储。
将现有备份作业切换到不可变的 S3 存储
对于要使用不可变快照保护的每个备份作业:
当您切换存储时:
现有快照保留在旧存储中。Ops Manager不会移动切换之前拍摄的快照。根据您配置的保留策略,它们保留在原始 S3 存储桶中并从该存储中恢复,直到它们过期。
新存储上的第一个快照已满。这ACID 一致性保证Ops Manager将该快照的所有数据块存储在单个 S3快照存储中。每次恢复只从一个存储中获取数据。
后续快照是增量的。新存储上第一个完整快照之后的Atlas 备份快照使用增量备份行为。
验证快照不变性
Ops Manager自动将每个快照的数据和保护该数据的对象锁元数据写入 S3 存储桶。您无需手动导出数据。使用以下过程确认特定快照受对象锁保护。
导入Atlas 备份快照以进行灾难恢复
如果需要从包含不可变快照和备份元数据的预先存在的 S3 存储桶中恢复数据,则可以将这些快照导入到Ops Manager部署中。将此工作流程用于灾难恢复场景,例如在重建Ops Manager后恢复备份。
重要
导入的快照仅用于一次性恢复操作。Ops Manager不管理导入快照的生命周期,也不将其包含在活动备份计划中。
选择或添加外部 S3 存储桶。
选择一个现有存储桶,或选择 Add S3 bucket 定义一个新存储桶。存储桶名称和 S3 端点必须与快照的 S3存储上配置的值匹配。
重要
Add S3 bucket 表单要求提供与添加一个 S3 兼容快照存储过程相同的字段,包括数据存储类型和MongoDB托管列表或 URI。这些字段必须点此存储桶的专用元数据存储,而不是您要恢复的MongoDB 部署。
导入完成后,导入的快照将显示在将其分配到的项目下的 Continuous Backup 页面上。 Ops Manager仅显示完全导入的集群快照。
Ops Manager从不删除或groom导入的存储中的数据。您可以在对象存储层控制导入的快照对象的生命周期。
与 PITR 交互
时点还原(PITR) 将基线快照与存储在oplog存储中的oplog数据相结合。不可变快照仅影响基线快照组件:
当您切换到不可变的 S3快照存储时,PITR 会继续使用现有快照和oplog数据。旧快照保留在其原始存储中,并且oplog存储配置不会更改。
在新存储上完成第一个完整不可变快照后,PITR 可以使用该快照作为基准,并继续跟踪已配置oplog存储中的 oplog。
PITR 不适用于导入的快照。您只能将导入的快照恢复到Ops Manager创建快照时的确切点。
故障场景和恢复
当您切换快照存储时,不可变的 S3 快照不会引入额外的数据丢失情况。每个快照都从单个存储中恢复,因此恢复逻辑不需要为一个快照使用来自多个存储桶的数据。
在新存储上创建第一个快照之前崩溃
所有现有快照都保留在原始 S3存储中,并且可以完全恢复。
PITR 根据最近完成的快照和oplog数据进行工作。
在新存储上创建第一个完整快照期间发生崩溃
Ops Manager将正在进行的新存储快照标记为失败或不完整,并且不会将其用于恢复。
原始存储中的最后一个成功快照仍然是最新的可恢复快照。
Ops Manager和集群恢复后, Ops Manager会在下一个快照窗口将新的完整快照安排到不可变存储。
由于新存储上的第一个快照始终是完整快照,并且每个快照都从单个存储中恢复,因此恢复逻辑不依赖于为单个快照混合来自多个 S3 存储桶的数据。