PostgreSQL逻辑复制简介
PostgreSQL 10版本引入了逻辑复制特性,可在表级别进行复制,利用发布者和订阅者模型,基于复制槽技术,接收并回放WAL日志数据流,实现数据同步。逻辑复制不是SQL复制,而是复制SQL操作的结果。

逻辑复制实操
在源数据库上,首先定义发布和要复制的表。在目标端创建订阅,复制需要的表,在发布更新时立即开始复制。将表改为复制标识,利用ALTER TABLE进行修改。
具体操作步骤:
1. 创建发布和要复制的表:
CREATE PUBLICATION pub1 FOR TABLE text.yjxt_tf_fmc_payflow_fee_sync;
2. 创建到远程服务器的订阅,复制表:
CREATE SUBSCRIPTION sub1 CONNECTION host=133.0.xxx.xxx port=xxxx user=test dbname=test password=xxxxx PUBLICATION pub1;
3. 查看源端复制槽是否活跃:
SELECT slot_name,plugin,slot_type,database,active,restart_lsn FROM pg_replication_slots;
4. 在发布中新增需要逻辑复制的表:
ALTER PUBLICATION pub1 ADD TABLE text.commission_project_yj_sync;
5. 在目标端刷新订阅:
ALTER SUBSCRIPTION sub1 REFRESH PUBLICATION;
6. 查询两端数据验证逻辑复制。
注意事项
源数据库用户必须具有replication或superuser角色,保证订阅段可连接到源数据库上。当发布包含delete、update操作时,表必须设置复制标识以标识旧行。针对无主键/唯一键的表逻辑同步,只允许发布端进行insert操作,无法执行delete、upadte操作。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6435.html
