1.级联复制简介
PostgreSQL 支持备库既可以接收主库发送的 wal,也支持将 wal 发送给其他备库,这一特性称为级联复制。级联复制的主要作用是降低主库压力。级联复制一个典型应用场景为一主两备,其中一个备库和主库同机房部署以实现本地高可用,另一个备库跨机房部署以实现异地容灾。
2. 级联复制架构
3.搭建级联复制
提前条件:安装好postgresql
- 主库配置
--配置 postgresql.conf 参数
listen_addresses = '*'
wal_level = replica
wal_log_hints = on
logging_collector = on
archive_mode=on
archive_command='cp %p /home/postgres/archives/%f'
--启动数据库
pg_ctl start
--创建复制用户
create user repl replication password 'repl';
--配置 pg_hba.conf,运行主库接受流复制连接,这里配置 2 条是因为主库和备库的角色
是可以互换的
host replication repl 192.168.86.141/32 scram-sha-256
host replication repl 192.168.86.142/32 scram-sha-256
-
Master=>Slave1 异步流复制配置
pg_basebackup -h pg01 -Urepl -R -Fp -P -D /home/postgres/pgdata16
--启动备库
pg_ctl start
-
Slave1=>Slave2 异步流复制配置
pg_basebackup -h pg02 -Urepl -R -Fp -P -D /home/postgres/pgdata16
--启动备库
pg_ctl start
-
查看级联复制状态
#主库执行
postgres=# select usename,client_addr,state,sync_state,sync_priority from
pg_stat_replication;
#slave1上执行
postgres=# select usename,client_addr,state,sync_state,sync_priority from
pg_stat_replication;
- 验证数据
#主库执行
postgres=# create table t1(id int);
CREATE TABLE
postgres=# insert into t1 values(1);
INSERT 0 1
postgres=# select * from t1;
#从库查询
select * from t1;