流复制发布(Streaming Replication)
在流复制中,一个 PostgreSQL 节点可以充当主节点(Master)或从节点(Slave)。
1. 主节点:
- 主节点是数据的源头,接收客户端的写操作。主节点的 WAL 日志会传递给从节点,以便在从节点上重放这些修改。
2. 从节点:
- 从节点是主节点的副本,通过接收并应用主节点的 WAL 日志来保持与主节点数据一致。从节点可以用于备份、读操作负载分担以及在主节点故障时提供故障转移。
设置主节点:
# 主节点配置 (postgresql.conf)
wal_level = replica
max_wal_senders = 10
wal_keep_segments = 64
设置从节点:
# 从节点配置 (recovery.conf 或 postgresql.conf)
primary_conninfo = 'host=<主节点IP地址> port=5432 user=<用户名> password=<密码>'
逻辑复制发布(Logical Replication)
逻辑复制允许选择性地复制指定的数据库对象,例如表、数据库,而不是整个 WAL 流。它使用逻辑复制槽(Replication Slots)来跟踪订阅者的进度。
1. 创建逻辑复制槽:
-- 在主节点上创建逻辑复制槽
SELECT * FROM pg_create_logical_replication_slot('slot_name', 'pgoutput');
2. 创建订阅:
-- 在订阅者节点上创建订阅
SELECT * FROM pg_create_subscription('sub_name', 'slot_name', 'connection_string', create_slot := false);
逻辑复制通常用于数据集成、数据仓库、实时分析等场景,它提供了更灵活的控制和选择性复制的能力。
在选择流复制或逻辑复制时,需要根据具体业务需求和性能要求进行权衡。流复制提供了更快的复制速度,适用于整个数据库的备份和高可用性,而逻辑复制则更适用于选择性的数据复制和实时数据集成。
转载请注明出处:http://www.zyzy.cn/article/detail/8348/PostgreSQL