一个事务内可以包含任意个表和任意行数据的变化。 输出的数据的格式和对应表的定义和REPLICA IDENTITY相关。
如果修改的表有primary key, 则表的变化的逻辑数据只会包括该表变化的列和pk列数据,如果pk列被修改,则还会输出老的pk列数据。 如果修改的表没有primary key,则可以使用alter table指定一个REPLICA index,同时需要这个索引列为非空,其产生的效果和1相同。 如果修改的表不满足上面的两个条件,而又要做同步,可以使用alter table设置这个表的REPLICA IDENTITY为FULL。于是系统在表修改时会记录修改行的所有列,不会做任何的优化。
同步任务的高可用也是基于zookeeper实现而成,同步任务节点启动初始化时将机器节点信息注册至zookeeper,同步管理节点监听注册的机器节点,当机器节点发生down机或异常挂掉后,注册至zookeeper的临时节点将发生变更,管理节点监听变化后读取该节点执行的同步任务,将该任务下发至其他可工作的节点。下发时存在下发失败的可能性,需做好下发队列的重试工作。
通过复制槽的confirmed_flush_lsn进行消费数据成功的确认,confirmed_flush_lsn是逻辑插槽的consumer已确认接收数据的地址(LSN),超过此时间的数据将不再可用。
数据发送至kafka,发送成功后flush lsn,通过自动创建消费kafka的任务同步至其他数据源,如ES、Hbase、Hive等,保证同步服务的性能与可靠性。
利用正则表达式对表名进行匹配,满足分库分表或一定规则的通用配置 只匹配需要的字段,对于敏感字段进行过滤 指定并匹配主键
文章转载自开源软件联盟PostgreSQL分会,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。