使用 Aurora 进行 PostgreSQL 逻辑复制的概述
通过将 PostgreSQL 的逻辑复制功能与 Aurora PostgreSQL 数据库集群结合使用,您可以复制和同步各个表而不是整个数据库实例。逻辑复制使用发布和订阅模型将更改从源复制到一个或多个接收者。它的工作原理是使用 PostgreSQL 预写日志(WAL)中的更改记录。源或发布者将指定表的 WAL 数据发送给一个或多个接收者(订阅者),从而复制更改并使订阅者的表与发布者的表保持同步。来自发布者的一组更改使用发布来识别。订阅者通过创建订阅(用于定义与发布者数据库及其发布内容的连接)来获取更改。复制插槽是该方案中用于跟踪订阅进度的机制。
对于 Aurora PostgreSQL 数据库集群,WAL 记录保存在 Aurora 存储中。在逻辑复制场景中充当发布者的 Aurora PostgreSQL 数据库集群从 Aurora 存储中读取 WAL 数据,对其进行解码,然后将其发送给订阅者,以便可以将更改应用于该实例上的表。发布者使用逻辑解码器对数据进行解码以供订阅者使用。原定设置情况下,Aurora PostgreSQL 数据库集群在发送数据时使用原生 PostgreSQL pgoutput
插件。提供了其他逻辑解码器。例如,Aurora PostgreSQL 还支持将 WAL 数据转换为 JSON 的 wal2json
插件。
从 Aurora PostgreSQL 版本 14.5、13.8、12.12 和 11.17 起,Aurora PostgreSQL 使用直写缓存增强了 PostgreSQL 逻辑复制过程以提高性能。WAL 事务日志本地缓存在缓冲区中,以减少磁盘输入/输出量,即在逻辑解码期间从 Aurora 存储中读取。每当您对 Aurora PostgreSQL 数据库集群使用逻辑复制时,原定设置情况下使用直写缓存。Aurora 提供了多种可用于管理缓存的函数。有关更多信息,请参阅 监控 Aurora PostgreSQL 逻辑复制直写缓存。
所有当前可用的 Aurora PostgreSQL 版本都支持逻辑复制。有关更多信息,请参阅《Aurora PostgreSQL 版本注释》中的 Amazon Aurora PostgreSQL 更新。
适用于 Aurora PostgreSQL 的 Babelfish 支持从以下版本进行逻辑复制:
15.7 及更高版本
16.3 及更高版本
注意
除了 PostgreSQL 10 中引入的原生 PostgreSQL 逻辑复制功能外,Aurora PostgreSQL 还支持 pglogical
扩展。有关更多信息,请参阅 使用 pglogical 跨实例同步数据。
有关 PostgreSQL 逻辑复制的更多信息,请参阅 PostgreSQL 文档中的逻辑复制