PG逻辑复制介绍

在PostgreSQL 10 之前的流复制都是基于wal日志进行的物理复制,PostgreSQL 10版本中新增了一个逻辑复制的特性,逻辑复制是基于逻辑解析进行复制。它使用类似消息队列的发布者、订阅者的模型,利用复制槽的技术,发布者将wal日志解析成一定格式的数据流,订阅者对解析后的wal日志数据流进行回放应用,从而实现数据的同步。但是需要注意的是,PG的逻辑复制不是“SQL”复制,而是复制SQL操作的结果。

一、逻辑复制概念

逻辑复制的适用场景

  • 将多个数据库的数据合并到一个数据仓库的数据库中,用于数据仓库的数据分析
  • 逻辑复制不依赖版本限制,可以在不同大版本的PG数据库之间进行数据复制
  • 捕获本机数据库的增量更新,发送给指定数据库或通知其他应用(数据订阅功能)
  • 多个数据库之前共享部分数据

逻辑复制的优势

  • 在进行发布时,可以选择发布 insert 、 delete 、 update,比如只发布insert、不发布update、delete
  • 一个数据库可以有多个发布,保证发布不重名即可,可同规格pg_publication查看
  • 允许一次性发布所有表
  • 一个发布允许有多个订阅者

逻辑复制的缺陷

  • 目前仅支持数据库表逻辑复制,其他对象如函数、视图不支持
  • 仅仅支持复制DML操作,不支持Truncate和DDL操作

逻辑复制注意事项

  • 逻辑复制的前提必须将数据库的wal_level设置为logical,同时保证有足够的 max_logical_replication_workers 、 max_wal_senders
  • 逻辑复制的源数据库用户必须具有 replication 或 superuser 角色,并且保证订阅段可通过流复制协议连接到源数据库上(pg_hba.conf)
  • 当发布包含delete、update操作时,表必须设置replica identity用来标识旧行(pk、uk、full),对于无主键/唯一键的表逻辑同步,只允许发布端进行insert操作,无法执行delete、upadte操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值