一、创建具有流复制权限用户:
create role 用户 login replication encrypted password '用户密码';
1、主库配置:
编辑postgresql.conf:
listen_addresses="*"
archive_mode=on
archive_command='test ! -f /var/lib/pgsql/12/data/pg_archive/%f && cp %p /var/lib/pgsql/12/data//pg_archive/%f'
wal_level=replica
max_wal_senders=2
wal_keep_segments=16
wal_sender_timeout=60s
max_connections=100
2、编辑pg_hba.conf:
最后添加:host replication repl(创建的用户) 从库的ip trust
host all all 192.168.130.0/24 md5
3、重启服务:systemctl restart postgresql-12
4、从库配置:
1)、验证在从库是否可以访问主节点:psql -h 192.168.130.128 -U postgres
2)、停止从服务器:systemctl top postgresql-12
3)、清除从数据库存储文件夹(建议移除到别的目录暂时保存):
rm -rf /var/lib/pgsql/12/data/*
4)、从主服务器上copy数据到从服务器,这一步叫做‘基础备份’:
pg_basebackup -h 主节点ip -p 5432 -U replica -Fp -Xs -pv -R -D /var/lib/pgsql/12/data
5)、此时data目录下会出现standby.signal文件,编辑次文件:
添加:standby_mode= 'on'
5、修改postgresql.conf文件:
primary_conninfo='host=主节点ip port=5432 user=replica password='密码''
recovery_target_timeline= latest
max_connections=120
hot_standby=on
max_standby_streaming_delay=30s
wal_receiver_status_interval=10s
hot_standby_feedback=on
6、重启从库:systemctl restart postgresql-12
7、链接主库执行:select client_addr,sync_state from pg_stat_replication;(有数据则代表成功)
8、select pg_is_in_recovery(); (结果显示f为主库,t为从库);