概述逻辑复制适用于跨版本与选择性表同步场景。通过合理的发布与订阅配置、资源参数与监测指标,可以控制延迟并确保数据一致性。关键实践与参数参数:`wal_level=logical`、`max_replication_slots`、`max_wal_senders`发布:`CREATE PUBLICATION` 按表或全部订阅:`CREATE SUBSCRIPTION` 指向主库,选择复制入库策略监测:`pg_stat_subscription` 观察消息时间与LSN延迟治理:提升网络与I/O、批量提交与队列容量示例/配置/实现-- 主库 postgresql.conf ALTER SYSTEM SET wal_level = 'logical'; ALTER SYSTEM SET max_replication_slots = 16; ALTER SYSTEM SET max_wal_senders = 16; SELECT pg_reload_conf(); -- 创建发布 CREATE PUBLICATION pub_orders FOR TABLE orders; -- 从库创建订阅 CREATE SUBSCRIPTION sub_orders CONNECTION 'host=primary port=5432 dbname=shop user=replicator password=secret' PUBLICATION pub_orders; -- 监测复制 SELECT subname, pid, latest_end_lsn, latest_end_time, last_msg_send_time, last_msg_receipt_time FROM pg_stat_subscription; 验证初始同步:新建订阅后,目标表数据与主库一致延迟观测:在峰值写入下记录 `latest_end_time` 与 `last_msg_receipt_time` 差异故障恢复:断网后恢复复制,观察是否自动追赶至最新LSN一致性:比对关键行哈希或计数,保证无遗漏与重复注意事项逻辑复制不复制DDL,需在订阅端保持Schema一致大事务可能导致延迟上升,建议分批与合理提交复制用户权限需最小化与安全管理定期清理不再使用的复制槽,避免WAL积压

发表评论 取消回复