文档首页/ 云数据库 RDS_云数据库 RDS for PostgreSQL/ 最佳实践/ 使用Replication Slot创建数据订阅
更新时间:2025-08-28 GMT+08:00
分享

使用Replication Slot创建数据订阅

功能介绍

PostgreSQL原生支持使用复制槽(Replication Slot)开启数据订阅(Change Data Capture,简称CDC)。Replication Slot是用于逻辑复制的核心机制,主要作用如下:

  1. 确保主库的WAL日志(预写日志)不会被过早清理,直到从库或订阅者消费完日志。
  2. 记录订阅者的消费位置(LSN),避免数据丢失或重复消费。
  3. 支持通过逻辑解码插件(例如test_decoding和wal2json)将WAL日志解析为可读的变更数据(例如INSERT、UPDATE、DELETE操作),实现数据订阅。

本文介绍在RDS for PostgreSQL实例上开启数据订阅的配置方法。

前提条件

注意事项

  • 仅支持在主实例上开启数据订阅并消费,不支持只读实例。
  • RDS for PostgreSQL支持Logical Replication Slot Failover,主备切换操作不会影响数据订阅。更多介绍,请参见逻辑订阅故障转移(Failover Slot)
  • 开启数据订阅前需要修改RDS for PostgreSQL实例参数,并重启RDS for PostgreSQL实例。请在业务低峰期进行修改,避免对业务造成影响。

开启数据订阅

关闭数据订阅

开启了数据订阅的RDS for PostgreSQL实例,需要使用更多的WAL日志存储空间,当不再需要数据订阅时,需通过以下步骤彻底关闭,避免复制槽持续占用WAL日志空间:

  1. 使用root账号连接RDS for PostgreSQL实例。
    psql -h <实例连接地址> -p 5432 -U root -d testdb
  2. (可选)确认复制槽存在。
    SELECT slot_name FROM pg_replication_slots WHERE slot_name = 'cdc_replication_slot';
  3. 删除复制槽。该操作不可逆,请谨慎操作。
     SELECT pg_drop_replication_slot('cdc_replication_slot');
  4. 验证数据订阅已关闭。
    SELECT slot_name FROM pg_replication_slots;

    如果查询结果中没有cdc_replication_slot,表示已关闭。

相关文档