黑田隼人:PGConf.dev 2024 - PostgreSQL 17中的新逻辑复制功能

黑田隼人:PGConf.dev 2024 - PostgreSQL 17中的新逻辑复制功能

💡 原文英文,约1000词,阅读约需4分钟。
📝

内容提要

我参加了2024年在加拿大温哥华举行的PostgreSQL开发会议,介绍了逻辑复制的新功能和PostgreSQL 17中的新功能。会议强调促进PostgreSQL开发人员和社区经理之间的互动和创新想法的分享。我希望在以后的会议上继续为PostgreSQL的发展做出贡献。

🔎

延伸解读

逻辑复制与流复制的关键差异

文章通过对比表格指出,流复制要求节点间物理数据一致,因此无法跨操作系统或大版本进行复制;而逻辑复制以发布/订阅模型工作,发送的是从WAL提取的复制消息,支持异构环境和不同大版本,且订阅端可执行读写查询。这种灵活性使逻辑复制更适合构建多样化的系统架构。

大规模环境下的初始同步瓶颈

在大型数据库中建立逻辑复制时,初始同步需对每个表执行COPY命令,耗时与表数量成正比。同时,同步期间必须保留生成的WAL,若同步时间过长,WAL可能占满磁盘导致服务器进程崩溃。文章指出这是逻辑复制在大规模场景下面临的主要挑战之一。

pg_createsubscriber 如何简化初始同步

PostgreSQL 17引入的pg_createsubscriber可将已有的物理备用服务器转换为逻辑订阅者。它先确认备用已同步到正确的时间点,然后在备用上定义订阅。这样无需从头COPY大量数据,既缩短了初始同步时间,又避免了因保留WAL而导致的磁盘耗尽问题。

pg_upgrade 对逻辑复制的改进

逻辑复制依赖复制槽和复制原点等节点特定对象来记录状态,这些对象在pg_upgrade升级时不会被迁移,用户以往需手动重建。PostgreSQL 17改进了pg_upgrade,使其能引用并重建这些内部对象,从而在升级节点后自动恢复逻辑复制,减少了运维负担。

❓

Q&A

PGConf.dev 2024会议的主要内容是什么?

PGConf.dev 2024会议主要介绍了PostgreSQL 17中的新逻辑复制功能,并强调了开发人员与社区经理之间的互动与创新想法的分享。

什么是逻辑复制,它与流复制有什么区别?

逻辑复制是一种将数据更改提取并复制到另一个PostgreSQL服务器的机制,允许不同操作系统和版本之间的复制,而流复制要求节点间数据物理表示一致。

PostgreSQL 17中新增了哪些逻辑复制的功能?

PostgreSQL 17新增了创建逻辑备用服务器的应用程序pg_createsubscriber,并改进了pg_upgrade,使其能够在升级时自动恢复逻辑复制。

在大规模环境中设置逻辑复制有哪些挑战?

在大规模环境中设置逻辑复制的挑战包括初始数据同步耗时较长和需要额外的磁盘资源,可能导致WAL存储满而崩溃。

pg_createsubscriber的作用是什么?

pg_createsubscriber是一个新应用程序,可以将物理备用转换为逻辑订阅者,从而简化初始同步过程。

如何简化逻辑复制集群的升级过程?

PostgreSQL 17通过改进pg_upgrade,使其能够自动恢复逻辑复制所需的内部对象,从而简化逻辑复制集群的升级过程。

🏷️

标签

➡️

继续阅读