Azure Cosmos DB 中的定期备份和还原
适用对象: NoSQL MongoDB Cassandra Gremlin 表
Azure Cosmos DB 会定期自动备份数据。 自动备份不会影响数据库操作的性能或可用性。 所有备份单独存储在一个存储服务中并进行多区域复制,以便针对区域性灾难进行复原。 使用 Azure Cosmos DB,数据和数据备份都高度冗余,并且具有可复原性,能抵御区域性灾难。
Azure Cosmos DB 如何执行数据备份
以下步骤演示 Azure Cosmos DB 如何执行数据备份:
Azure Cosmos DB 每 4 小时自动完整备份数据库一次,默认情况下在任何时间点都只存储最新的 2 个备份。 如果默认间隔不能满足工作负荷要求,则可以从 Azure 门户更改备份间隔和保留期。 可以在创建 Azure Cosmos DB 帐户期间或之后更改备份配置。 如果已删除容器或数据库,Azure Cosmos DB 会将给定预置吞吐量容器或共享吞吐量数据库的现有快照保留 30 天。 如果在数据库级别预配吞吐量,会在整个数据库范围内执行备份和还原过程。
Azure Cosmos DB 将这些备份存储在 Azure Blob 存储中,而实际数据以本地形式驻留在 Azure Cosmos DB 中。
为保证低延迟,备份的快照将存储在 Azure Blob 存储中,且所在区域与当前写入区域(如果有多区域写入配置,则为其中一个写入区域)相同。 对于针对区域性灾难的恢复,Azure Blob 存储中备份数据的屏幕快照将通过异地冗余存储 (GRS) 再次复制到另一区域。 根据源区域以及与源区域关联的区域对确定备份复制的目标区域。 若要了解详细信息,请参阅 Azure 区域的异地冗余对列表一文。 不能直接访问此备份。 通过支持请求发出请求后,Azure Cosmos DB 团队会还原备份。
下图显示了 Azure Cosmos DB 容器如何使用中国北部的所有三个主要物理分区。 该容器在中国北部的远程 Azure Blob 存储帐户中备份,然后复制到中国东部:
备份不会影响应用程序的性能或可用性。 Azure Cosmos DB 在后台执行数据备份,不会消耗任何额外的预配吞吐量 (RU),也不会影响数据库的性能和可用性。
使用定期备份模式时,仅在 Azure Cosmos DB 帐户的写入区域中进行备份。 还原操作始终将数据还原到位于源帐户写入区域的新帐户中。
哪些内容将还原到新帐户中?
- 你可以选择还原预配的吞吐量容器、共享吞吐量数据库或整个帐户的任意组合。
- 还原操作会将所有数据及其索引属性还原到新帐户中。
- 还原的持续时间取决于需要还原的数据量。
- 新还原的数据库帐户的一致性设置将与源数据库帐户的一致性设置相同。
哪些内容不会还原?
执行时间点恢复后,不会还原以下配置。
- 无法还原共享吞吐量数据库下的容器子集。 整个数据库可作为一个整体进行还原。
- 数据库帐户密钥。 将使用新的数据库帐户密钥生成还原的帐户。
- 防火墙、VNET、数据平面 RBAC 或专用终结点设置。
- 区域。 还原的帐户将仅为单个区域帐户,即源帐户的写入区域。
- 存储过程、触发器、UDF。
- 基于角色的访问控制分配。 需要重新分配这些访问控制。
- 由于 TTL 过期而删除的文档。
- 启用 synapse 链接时的分析数据。
- 具体化视图
完成还原后,可将这些配置中的一些添加到已还原的帐户。
使用 Azure Synapse Link 进行 Azure Cosmos DB 备份
对于已启用 Azure Synapse Link 的帐户,分析存储数据不包含在备份和还原中。 启用 Azure Synapse Link 后,Azure Cosmos DB 将继续按计划的备份间隔自动对事务性存储中的数据执行备份。 目前不支持自动备份和还原分析存储中的数据。
了解备份成本
免费提供 2 个备份,额外备份需要根据备份存储定价中介绍的基于区域的备份存储定价付费。
例如,考虑这样的方案:备份保留期配置为 240 小时(或 10 天),备份间隔配置为 24 小时。 此配置意味着备份数据将会生成 10 个副本。 如果在某个 Azure 区域中存在 1 TB 数据,则给定月份中备份存储的成本将为:0.12 * 1000 * 8
管理保留或还原所需的权限
属于 CosmosdbBackupOperator、所有者或参与者角色的主体可以请求还原或更改保留期。
在 Azure Cosmos DB 中手动管理定期备份
通过 Azure Cosmos DB API for NoSQL 帐户,还可采用以下方法之一维护你自己的备份:
Azure 数据工厂
使用 Azure 数据工厂 定期将数据移到所选的存储解决方案中。
Azure Cosmos DB 更改源
使用 Azure Cosmos DB 更改源定期读取数据来进行完整备份或增量更改,并将其存储在自己的存储中。