AWS RDS PostgreSQL:PostgreSQL 复制延迟的承诺值是多少?

Rya*_* Lv 7 postgresql amazon-web-services amazon-rds

我有一个带有四个副本的主 RDS 实例。

  • 主数据库:Postgres、4 个 vCPU、16GB RAM、us-west-2a

  • Replica1:Postgres、4 个 vCPU、16GB RAM、us-west-2a、200G SSD(无流量,仅用于测试)

  • Replica2:Postgres、4 个 vCPU、16GB RAM、us-west-2b、200G SSD(无流量,仅用于测试)

  • Replica3:Postgres、2 个 vCPU、8GB RAM、us-west-2b、200G SSD(流量不大)

  • Replica4:Postgres、2 个 vCPU、8GB RAM、us-west-2b、200G SSD(流量很少)

在没有任何高 IOPS 的情况下,主数据库和只读副本之间的延迟超过 16 秒,有时甚至达到 30 秒。

我花了很多精力来挖掘滞后的根本原因。

以下是没有任何流量的副本的 CloudWatch 报告。

在此输入图像描述

假设一:是IO积分造成的吗?

这是 IO 信用报告,过去 6 小时始终为 100%,我不认为这是由 IO 问题引起的。

在此输入图像描述

即使我不认为这是由 IO 引起的,我还是决定将数据库磁盘从 GP2 升级到 IO1,并配置 3000 IOPS。

但这不起作用,滞后仍然存在。

假设二:是否是参数热备导致的?

回复没有流量!它与 postgresql 参数无关max_standby_streaming_delay并且hot standby

假设三:是否是网络IO引起的?

流量始终低于1M/s

假设四:是否是由我的应用程序中触发的长时间运行的查询引起的?

我创建了两个全新的 m5.large PostgreSQL 实例来验证这个假设,并使用 pgbench 进行基准测试。

  • 主要:M5.large,配置 3000 IOPS。

  • 副本:M5.xlarge,具有 1000 个预配置 IOPS。

我很惊讶!延迟范围为 0 到 24 秒。

在此输入图像描述

你可能会问为什么不把这个问题发布到aws上呢?

我在aws论坛上问过这个问题,但没有人回答我。

我感觉被欺骗了,想从您的经验中了解复制滞后的真正价值。

问题

AWS Amazon Aurora 提供延迟的估计值(低于 100 毫秒)。这是我的基准测试报告,延迟低于 25 毫秒。

在此输入图像描述

当谈到 AWS RDS PostgreSQL 时:

  • 谁能告诉我 aws RDS PostgreSQL 复制延迟的正常值是多少?

  • AWS RDS PostgreSQL 承诺的复制延迟估计值是多少?

小智 3

根据RDS 文档中PostgreSQL 的读取副本限制:

如果源数据库实例上没有发生用户事务,PostgreSQL 只读副本会报告最多五分钟的复制延迟。

当有一个每隔几毫秒写入数据库的脚本时,您是否可以按照本答案中的建议检查复制延迟?