Bucardo能否实现PostgreSQL指定Schema全表及新增表自动同步?
Bucardo是否支持该需求
结论:原生Bucardo不支持自动识别同步Schema下新增的表。
Bucardo的同步规则依赖预先配置的同步对象(表、序列等),每次新增表后需要手动执行bucardo add table命令将表加入同步组,再重启同步任务才能生效,没有内置的自动监听Schema新增表并自动加入同步的能力。
如果一定要用Bucardo实现该需求,需要自行开发额外脚本:定时查询information_schema识别目标Schema下的新增表,再调用Bucardo的命令行接口自动添加到同步配置中,该方案需要额外处理增量一致性校验、冲突规避等问题,稳定性取决于自定义脚本的完善度。
可实现自动同步新增表的推荐工具
PostgreSQL原生逻辑复制
PostgreSQL 10及以上版本自带的逻辑复制功能,支持发布端配置FOR ALL TABLES IN SCHEMA 目标Schema名的发布规则,配置后该Schema下后续新增的表会自动加入发布范围,订阅端无需额外配置即可自动同步新增表的数据。
核心配置命令参考:-- 发布端创建指定Schema的发布 CREATE PUBLICATION schema_sync_pub FOR ALL TABLES IN SCHEMA your_target_schema; -- 订阅端创建订阅 CREATE SUBSCRIPTION schema_sync_sub CONNECTION 'dbname=源库 host=源IP port=端口 user=用户名 password=密码' PUBLICATION schema_sync_pub;优势是无第三方依赖,性能损耗低,逻辑复制本身支持DDL过滤、行级过滤等能力,是成本最低的实现方案。
Debezium
基于PostgreSQL逻辑解码的CDC工具,可配置监听指定Schema的所有变更,包括新增表的创建事件和后续的数据变更,自动将新增表的数据同步到下游目标端(支持Kafka、JDBC目标库、对象存储等多种下游),无需人工干预新增表的同步配置。pg_cron + 自定义同步脚本
如果同步场景有定制化需求,可配合PostgreSQL内置的pg_cron定时任务插件,定时扫描目标Schema的表变更,自动调用pg_dump、pg_copy或者逻辑复制接口完成新增表的同步初始化和增量同步,适合轻量、定制化的同步场景。
内容的提问来源于stack exchange,提问作者Alex

