pg_copy_logical_replication_slot()
是一个用于复制现有 逻辑复制 槽位的系统函数。
pg_copy_logical_replication_slot()
在 PostgreSQL 12 中添加。
用法
pg_copy_logical_replication_slot (src_slot_name
name
,dst_slot_name
name
[,temporary
boolean
[,plugin
name
]] ) →
record ( slot_name name, lsn pg_lsn )
复制的逻辑槽位从相同的LSN开始,与源逻辑槽位相同。如果省略,则 temporary
和 plugin
参数将从源槽位复制。
变更历史
- PostgreSQL 12
- 添加 (提交 9f06d79e)
示例
基本用法示例
postgres=# SELECT * FROM pg_create_logical_replication_slot('test_slot_1', 'test_decoding'); slot_name | lsn -------------+----------- test_slot_1 | 0/14A6458 (1 row) postgres=# SELECT * FROM pg_copy_logical_replication_slot('test_slot_1', 'test_slot_2'); slot_name | lsn -------------+----------- test_slot_2 | 0/14A6458 (1 row)
尝试复制逻辑复制槽位时,目标槽位已存在
postgres=# SELECT * FROM pg_copy_logical_replication_slot('test_slot_1', 'test_slot_2'); ERROR: replication slot "test_slot_2" already exists
尝试复制不存在的逻辑复制槽位
postgres=# SELECT * FROM pg_copy_logical_replication_slot('test_slot_99', 'test_slot_3'); ERROR: replication slot "test_slot_99" does not exist
参考文献
- PostgreSQL 文档: 复制管理函数