一、Master配置

1、修改postgresql.conf文件

1
2
3
4
5
6
listen_addresses = '*'   #监听的IP地址
wal_level = hot_standby #启用热备模式
synchronous_commit = on #开启同步复制
max_wal_senders = 2 #同步最大的进程数量
wal_sender_timeout = 60s #流复制主机发送数据的超时时间
max_connections = 100 #最大连接数,从库的max_connections必须要大于主库的

2、创建同步账号,用于流复制

1
create user replica with password '123456' replication;

3、修改pg_hba.conf,允许从库地址通信

1
2
host replication replica 主机ip/32 md5   #在master上可以执行pg_basebackup
host replication replica 备机ip/32 md5 #slave可以和master正常通信

4、重新加载配置文件

1
pg_ctl -D /data/pg_data/data reload

二、Slave配置

1、在slave上运行pg_basebackup命令

1
pg_basebackup -D /data/pg_data/data -h <主节点IP> -p 5432 -U replica -X stream -P

2、创建recovery.conf文件,修改如下配置

1
2
3
standby_mode = on     #声明此节点为从库
primary_conninfo = 'host=<主节点IP> port=5432 user=replica password=123456' #对应主库的连接信息
recovery_target_timeline = 'latest' #流复制同步到最新的数据

3、修改postgresql.conf文件

1
2
3
4
5
max_connections = 1000             # 最大连接数,从节点需设置比主节点大
hot_standby = on # 开启热备
max_standby_streaming_delay = 30s # 数据流备份的最大延迟时间
wal_receiver_status_interval = 1s # 从节点向主节点报告自身状态的最长间隔时间
hot_standby_feedback = on # 如果有错误的数据复制向主进行反馈