对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

备份 MongoDB Ops Manager 应用程序数据库

应用程序数据库存储您的 MongoDB Ops Manager 设置、操作历史记录和备份元数据。当您将应用程序数据库部署为外部应用程序数据库时,Kubernetes 操作符会将其作为标准 MongoDB 自定义资源进行托管,这意味着 Ops Manager 可以像管理 Kubernetes 操作符托管的任何其他 MongoDB 部署一样对其进行备份和恢复。

要部署外部应用程序数据库,请参阅以下步骤:

具有内部托管应用程序数据库的 MongoDB Ops Manager 部署将应用程序数据库存储在 MongoDB Ops Manager 自定义资源中,标准备份工具无法访问该资源。如果 MongoDB Ops Manager 本身发生故障,您可能会失去对它所托管的部署的控制。

备份外部应用程序数据库可满足以下需求:

  • 灾难恢复。在数据丢失、数据损坏或配置更改失败后恢复应用程序数据库。

  • 运行安全保障。将错误的批量写入回滚到发生之前的时刻。

  • 降低恢复目标。连续oplog捕获可以通过保留快照之间的更改来降低恢复点目标。

MongoDB Ops Manager 保留一份应用程序数据库数据和连续的 oplog 条目流,这使您可以执行以下操作:

  • 将应用程序数据库的完整快照恢复到新的或现有的部署中。

  • 通过将 oplog 重放到您选择的时间戳,将应用程序数据库恢复到快照之间的任意时间点。

  • 查询备份快照,无需恢复。要了解更多信息,请参阅配置 MongoDB Ops Manager 资源的可查询备份。

  • 满足保留和合规要求,并可选择使用不可变快照。

外部应用程序数据库部署使用以下资源:

Resource
说明

MongoDB Ops Manager 管理

MongoDB Ops Manager 资源,具有其自身内部托管的应用程序数据库。Ops Manager 管理实例不管理您的数据库。它托管包含外部应用程序数据库的项目,并且在您丢失主 MongoDB Ops Manager 实例时充当恢复引擎。将其部署到独立的故障域中,例如不同的可用区。

外部应用程序数据库

spec.role 设置为 AppDB 的 MongoDB 资源。要了解更多信息,请参阅 MongoDB 数据库资源规范。其名称必须为 <primary-om-name>-db。MongoDB Ops Manager 实例将此资源作为项目进行管理,因此,您可以同任何其他 MongoDB 资源一样在此资源上启用备份。

主 MongoDB Ops Manager

托管您的数据库的 MongoDB Ops Manager 资源。它省略了 spec.applicationDatabase 并引用了带有 spec.externalApplicationDatabaseRef 的外部应用程序数据库。

由于没有应用程序数据库,新的 MongoDB Ops Manager 实例无法启动;并且,在没有可用的 MongoDB Ops Manager 实例的情况下,将 spec.role 设置为 AppDB 的 MongoDB 资源无法协调。因此,管理 MongoDB Ops Manager 实例是外部应用程序数据库的前提。在部署外部应用程序数据库之前部署它。

如果丢失主节点 (primary node in the replica set) MongoDB Ops Manager 实例,则使用管理 MongoDB Ops Manager 实例恢复外部应用程序数据库,然后对恢复的应用程序数据库重新创建主节点 (primary node in the replica set) MongoDB Ops Manager 实例,最后恢复 MongoDB 工作负载。

MongoDB Ops Manager 将备份元数据存储在应用程序数据库中,MongoDB Ops Manager 应用程序和备份守护程序都连接到应用程序数据库。当您使用 spec.externalApplicationDatabaseRef 引用外部应用程序数据库时,Kubernetes Operator 会为您处理此连接:

  • Kubernetes Operator 解析引用的MongoDB资源的 TLS 配置和 CA,并将其应用于Ops Manager StatefulSet 和备份守护程序StatefulSet。备份守护程序信任启用 TLS 的外部应用程序数据库,就像信任内部托管的数据库一样。

  • 备份守护程序使用 Kubernetes 操作符为 MongoDB Ops Manager 应用程序计算的相同连接字符串连接。

启用备份保持不变。您在主节点 MongoDB Ops Manager 资源上设置了 spec.backup.enabled,就像对内部托管的应用程序数据库所做的那样。唯一的区别在于应用程序数据库运行的位置。

要备份外部应用程序数据库本身,请在管理 Ops Manager 实例托管的项目中,对代表该数据库的 MongoDB 资源启用备份。要了解更多信息,请参阅配置 MongoDB 数据库备份。

在内部托管的应用程序数据库与外部应用程序数据库之间的迁移过程中,Kubernetes 操作符会在应用程序数据库 StatefulSet 上设置注释,以记录 StatefulSet 已准备更改所有者。Kubernetes 操作符设置并读取这些注释。不要自己设置。

注解
说明

mongodb.com/appdb-migration-ready

MongoDB Ops Manager 资源释放了 StatefulSet,以便 MongoDB 资源可以获取其所有权。当您从内部托管的应用程序数据库迁移到外部应用程序数据库时,Kubernetes 操作符会设置此注释。如需了解更多信息,请参阅将应用程序数据库迁移到外部部署。

mongodb.com/appdb-reverse-migration-ready

MongoDB 资源释放了 StatefulSet,以便 MongoDB Ops Manager 资源可以回收它。当您将外部应用程序数据库恢复为内部管理时,Kubernetes Operator 会设置此注解。要了解更多信息,请参阅将外部应用程序数据库返回给 MongoDB Ops Manager。

在备份外部应用程序数据库之前,请完成以下任务:

外部应用程序数据库备份具有以下限制:

  • 外部应用程序数据库必须是单个 Kubernetes 集群上的 MongoDB 资源。Kubernetes Operator 会拒绝使用多集群拓扑结构的 MongoDBMultiCluster 资源和 MongoDB 资源。多集群支持计划在后续版本中推出。

  • 此功能不会复制应用程序数据库跨区域或跨 Kubernetes 集群。

  • 除了应用程序数据库本身,此功能不会备份或恢复 MongoDB Ops Manager 的状态。

  • 此功能不会改变您使用 MongoDB Ops Manager 管理的 MongoDB 部署的备份或恢复方式。

  • Kubernetes 操作符不支持对外部应用程序数据库的 automationConfig 覆盖,因为 MongoDB 资源没有相应的设置。

  • Kubernetes 操作符在迁移到外部应用程序数据库过程中不支持 spec.applicationDatabase.passwordSecretKeyRef。Kubernetes 操作符生成新密码,并轮换您提供的任何密码。

  • 当您将现有的 MongoDB 部署引用为外部应用程序数据库时,您将承担该部署的日常管理责任。Kubernetes 操作符不提供用于协调 MongoDB 资源配置与内部托管的应用程序数据库配置的工具。您必须自己设置该配置。