Amazon Aurora PostgreSQL 引入逻辑复制写穿透缓存
Amazon Aurora PostgreSQL 兼容数据库最近引入了逻辑复制写穿透缓存,旨在减少逻辑解码期间的存储 I/O 操作。这一新功能显著降低了复制延迟,改善了读取 I/O 和事务追赶时间。
主要优势
- 降低复制延迟:默认配置下,写穿透缓存比上一版本减少了 44% 的复制延迟。如果将缓存大小增加到 2 GB,复制延迟可进一步减少 59%。
- 保持高事务处理能力:该功能在显著提升性能的同时,未导致每秒事务处理量(TPS)的下降。
- 减少 CPU 开销:通过优化逻辑复制的 CPU 使用,进一步降低了延迟。
工作原理
逻辑复制采用发布/订阅模式,将预写日志(WAL)解码为可被订阅者消费的记录流。写穿透缓存在 Aurora PostgreSQL 集群中,将 WAL 记录同时写入 Aurora 存储和 WAL 缓存。如果缓存已满(由 rds.logical_wal_cache 参数定义),则移除最旧的记录并追加新记录(遵循 FIFO 队列原则)。
应用场景
逻辑复制可用于多种场景,例如:
- 将数据导出到 AWS 托管服务,如 Database Migration Service 和 Kinesis。
- 在云迁移项目中,将数据复制到外部数据库。
缓存管理函数
Aurora 提供了三个函数来评估和管理写穿透缓存:
aurora_stat_logical_wal_cache():返回每个插槽的缓存使用信息。aurora_stat_reset_wal_cache():重置写入实例的指标计数器。get_oldest_wal_cache_ptr():返回逻辑 WAL 缓存中最旧的页面。
默认启用版本
写穿透缓存默认在以下 Aurora PostgreSQL 版本中启用:
- 11.17
- 12.12
- 13.8
- 14.5
版本支持变更
AWS 计划于 2024 年 1 月停止对 Aurora PostgreSQL 11.x 版本的支持。由于未提供基于逻辑复制的原生迁移流程,这一决定引发了社区的担忧,特别是关于如何在不中断服务的情况下完成迁移的问题。
总结
Amazon Aurora PostgreSQL 的逻辑复制写穿透缓存通过优化存储 I/O 和降低复制延迟,显著提升了数据库性能。该功能在保持高 TPS 的同时,提供了灵活的缓存管理工具,适用于多种数据迁移和复制场景。然而,即将停止支持 11.x 版本的决定需要用户提前规划迁移策略。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。