Azure Cosmos DB for PostgreSQL 中的只读副本

适用对象: Azure Cosmos DB for PostgreSQL(由 PostgreSQL 的 Citus 数据库扩展提供支持)

使用只读副本功能,可将数据从群集复制到只读群集。 副本通过 PostgreSQL 物理复制技术以异步方式更新。 可将主服务器中的数据最多复制到 5 个副本。

副本是新的群集,可以像管理常规群集一样对其进行管理。 每个只读副本按照预配计算资源的 vCore 数量以及每月 GiB 存储量计费。 副本群集的计算和存储成本与常规群集相同。

了解如何创建和管理副本

何时使用只读副本

只读副本功能可帮助改善读取密集型工作负荷的性能与规模。 “读取”工作负载可以隔离到副本,而“写入”工作负载可以定向到主服务器。

常见方案是让 BI 和分析工作负载将只读副本用作报告的数据源。

由于副本是只读的,因此它们不能直接减少主服务器上的写入容量负担。

注意事项

此功能适用于可接受复制滞后的方案,旨在减轻查询负担。 它不适用于同步复制方案,此类方案要求副本数据是最新数据。 主服务器与副本之间将存在明显的延迟。 延迟可以是几分钟甚至几个小时,具体取决于工作负荷以及主副本之间的延迟。 副本上的数据最终将与主服务器上的数据保持一致。 对于能够适应这种延迟的工作负荷,可以使用此功能。

创建副本

启动“创建副本”工作流时,将创建空白群集。 新群集中填充了主群集上的数据。 创建时间取决于主服务器上的数据量,以及自上次每周完整备份以来所经历的时间。 具体所需时间从几分钟到几小时不等。

只读副本功能使用 PostgreSQL 的物理复制,而不使用逻辑复制。 默认模式是使用复制槽位的流复制。 必要时,使用日志传送来跟上进度。

了解如何在 Azure 门户中创建只读副本

连接到副本

创建副本时,该副本不会继承主群集的防火墙规则。 必须单独为副本设置这些规则。

副本从主群集继承管理员 (citus) 帐户。 所有用户帐户将复制到只读副本。 只能使用主服务器上可用的用户帐户连接到只读副本。

可以使用主机名和有效的用户帐户连接到副本的协调器节点,就像在常规群集上连接一样。 例如,对于名称为“my replica”、管理员用户名为“citus”的服务器,可以使用 psql 连接到副本的协调器节点:

psql -h c.myreplica.postgres.database.chinacloudapi.cn -U citus@myreplica -d postgres

在提示符下,输入用户帐户的密码。

副本升级为独立群集

可以将副本提升为可读且可写的独立群集。 已升级的副本不再从其原始副本接收更新,且升级是无法撤销的。 升级后的副本可以具有其自己的副本。

有两种升级副本的常见方案:

  1. 灾难恢复。 如果主要区域或整个区域出现问题,则可以打开另一个群集作为应急方案来进行写入。

  2. 迁移到另一个区域。 如果要移动到另一个区域,请在新区域中创建副本,等待数据同步,然后升级副本。 为了避免在升级期间丢失数据,可能需要在副本同步后禁用对原始群集的写入。

    可以使用 replication_lag 指标查看副本的同步进度。 请参阅指标,获取详细信息。

注意事项

本部分汇总了有关只读副本功能的注意事项。

新副本

只读副本是作为新群集创建的。 无法将现有群集设为副本。 无法创建另一个只读副本的副本。

副本配置

副本从主服务器继承计算、存储和工作器节点设置。 你可以更改副本上的某些设置(但不是全部)。 例如,你可以更改计算、公共访问的防火墙规则以及专用访问的专用终结点。 不能更改存储大小或工作器节点数。

记住要保持副本足够强大,以便与来自主服务器的更改保持一致。 例如,如果你在主服务器上提升了计算能力,务必在副本上也提升该能力。

创建副本时或之后,防火墙规则和参数设置不会从主服务器继承到副本。

跨区域复制

可以在主群集的区域或任何其他 Azure Cosmos DB for PostgreSQL 支持的区域中创建只读副本。 每个群集五个副本的限制针对所有区域计数,这意味着是总共五个副本,而不是每个区域五个。

后续步骤