pglogical及GCP Database Migration Service对源库public schema有哪些修改?
pglogical与GCP Database Migration Service对PostgreSQL public schema的修改说明
pglogical 对public schema的默认修改
- 会在public schema下创建元数据表,核心包括
pglogical.node、pglogical.node_interface、pglogical.local_sync_status、pglogical.queue等,用于存储节点身份信息、同步状态、待复制的临时队列数据 - 若未显式指定pglogical元数据存储的schema,默认所有内部函数、视图、触发器相关的元数据对象都会创建在public schema下
- 针对要复制的public schema内的表,会自动添加复制触发器,用于捕获数据变更写入WAL日志,触发器关联的函数默认也会存储在public schema
GCP Database Migration Service(DMS)结合pglogical时的额外修改
- 会在public schema下创建DMS专属的元数据表,用于记录复制任务的心跳信息、checkpoint位点、DDL变更跟踪记录,常见表名前缀为
gcp_dms_ - 若开启了DDL复制支持,DMS会在public schema下创建临时DDL捕获触发器,用于拦截待同步的DDL语句并传递到目标库
- 首次全量同步阶段如果开启了一致性校验,会在public schema下创建临时校验用的哈希表,全量同步完成后会自动清理,但如果同步过程中断可能残留
故障处理方案
- 部署pglogical前执行
pglogical.create_node时显式指定schema_name参数,将pglogical的所有元数据对象存放到单独创建的专用schema(比如单独建pglogical_metaschema),避免占用public schema - 在源库的public schema变更检查规则中,添加前缀为
pglogical_、gcp_dms_的对象白名单,允许这类复制相关的元数据对象存在 - 若已经出现复制中断,先停止源库的public schema清理逻辑,恢复pglogical和DMS所需的元数据对象后再重启复制任务,确认复制正常后再调整清理规则
内容的提问来源于stack exchange,提问作者alek6dj
相关产品推荐
相关产品推荐

