AWS RDS PostgreSQL:PostgreSQL 复制延迟的承诺价值是多少?
Posted
技术标签:
【中文标题】AWS RDS PostgreSQL:PostgreSQL 复制延迟的承诺价值是多少?【英文标题】:AWS RDS PostgreSQL: what's the promised value for PostgreSQL replication lag? 【发布时间】:2021-04-03 08:54:29 【问题描述】:我有一个包含四个副本的主 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(小 交通)
主副本和只读副本之间的延迟超过 16 秒,没有任何高 IOPS,有时是 30 秒。
我花了很多精力来挖掘延迟的根本原因。
这是没有任何流量的副本的 CloudWatch 报告。
假设一:是IO信用造成的吗?
这是 IO 信用报告,过去 6 小时总是 100%,我认为不是 IO 问题造成的。
即使我认为不是 IO 造成的,我还是决定将数据库的磁盘从 GP2 升级到 IO1,并提供 3000 IOPS。
但它不起作用,滞后仍然存在。
假设二:是不是参数热备造成的?
replicas 中没有流量!与postgresql参数max_standby_streaming_delay
和hot standby
无关
假设三:是网络IO造成的吗?
流量始终小于1M/s
假设四:它是由我的应用程序中触发的长时间运行的查询引起的吗?
我创建了两个全新的 m5.large PostgreSQL 实例来验证这个假设,并使用 pgbench 进行基准测试。
主要:M5.large,预置 IOPS 为 3000。
副本:M5.xlarge,预置 IOPS 为 1000。
我很惊讶!延迟从 0 到 24 秒不等。
您可能会问为什么不将此问题发布到 aws?
我已经问过this question in aws forum,但没有人回答我。
我觉得被骗了,想从你的经验中了解复制滞后的真正价值。
问题
AWS Amazon Aurora 提供延迟的估计值 (under 100ms)。这是我的基准报告,延迟低于 25 毫秒。
对于 AWS RDS PostgreSQL:
谁能告诉我在野外 aws RDS PostgreSQL 复制延迟的正常值是多少?
AWS RDS PostgreSQL 的复制延迟的承诺估计值是多少?
【问题讨论】:
【参考方案1】:根据 RDS 文档中的Read replica limitations with PostgreSQL:
如果源数据库实例上没有发生任何用户事务,则 PostgreSQL 只读副本会报告最多五分钟的复制延迟。
当有一个每隔几毫秒写入数据库的脚本时,你能检查复制延迟吗?推荐in this answer?
【讨论】:
以上是关于AWS RDS PostgreSQL:PostgreSQL 复制延迟的承诺价值是多少?的主要内容,如果未能解决你的问题,请参考以下文章
AWS RDS PostgreSQL:PostgreSQL 复制延迟的承诺价值是多少?
将 CSV 导入到 postgreSQL 中的表中,忽略重复项 - 亚马逊 AWS/RDS
如何配置从 Vanilla Postgresql 9.6 DB 到 AWS RDS Postgresql 的流复制
AWS ElasticBeanstalk EC2 到 RDS postgresql 连接
出于开发目的,无法从本地主机连接到 AWS RDS Postgresql
Django/PostgreSQL 全文搜索 - 在 AWS RDS PostgreSQL 上使用 SearchVector 与 SearchVectorField 时的不同搜索结果