PostgreSQL 的主从同步(通常叫 流复制,Streaming Replication)常见做法如下,以 一主一从(Primary + Standby) 为例,基于 PostgreSQL 12+(差异不大)。
postgresql.conf# 监听地址(从库要能连)
listen_addresses = '*'
# 开启 WAL
wal_level = replica
max_wal_senders = 10
wal_keep_size = 1GB # PostgreSQL 13+(12 是 wal_keep_segments)
# 可选:同步复制(强一致)
# synchronous_commit = on
# synchronous_standby_names = 'standby1'
pg_hba.conf允许从库通过 replication 连接:
# host db user slave_ip/32 method
host replication repl_user 192.168.1.2/32 md5
CREATE ROLE repl_user WITH REPLICATION LOGIN PASSWORD 'password';
pg_ctl restart
pg_ctl stop
pg_basebackup 克隆主库pg_basebackup \
-h 192.168.1.1 \
-U repl_user \
-D /var/lib/postgresql/data \
-Fp -Xs -P
standby.signaltouch /var/lib/postgresql/data/standby.signal
postgresql.conf(从库)primary_conninfo = 'host=192.168.1.1 port=5432 user=repl_user password=password'
(可选)
hot_standby = on
pg_ctl start
SELECT * FROM pg_stat_replication;
SELECT pg_is_in_recovery(); -- 返回 t 表示从库
| 类型 | 配置 | 特点 |
|---|---|---|
| 异步 | 默认 | 性能高,可能丢数据 |
| 同步 | synchronous_commit=on |
不丢数据,性能略低 |
如果你告诉我:
我可以给你一份 可直接用的配置示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。