1、基础环境
操作系统:CentOS 7.7
PostgreSQL:12.1
主节点:192.168.196.129 从节点:192.168.196.130
注意:低于pg12版本配置有所不同
2、部署主从
2.1 安装postgreSQL
主节点与从节点均安装postgreSQL,安装方法参考: Centos7 安装 postgreSQL
2.2 主节点
创建用户提供从节点复制流操作(postgres=#)
CREATE ROLE replica login replication encrypted password 'replica的密码';
编辑 pg_hba.conf 追加内容允许从服务器使用replica用户来复制
- TYPE DATABASE USER ADDRESS METHOD
host replication replica 192.168.196.130/32 md5
编辑 postgresql.conf 新增或修改下列属性设置
- archive_mode = on # 开启归档
- archive_command =
'test ! -f /var/lib/pgsql/12/pg_archive/%f && cp %p /var/lib/pgsql/12/pg_archive/%f'
- wal_level = replica
- wal_keep_segments = 15
- wal_sender_timeout = 60s
- max_connections = 100 # 最大连接数,从机需要大于或等于该值
建立归档文件夹
- mkdir /var/lib/pgsql/12/pg_archive
重启 postgres
- systemctl restart postgresql-12
在从节点上验证是否可以访问主节点
- psql -h 192.168.196.129 -U postgres
2.3 从节点
停止从节点的 postgres
- systemctl stop postgresql-12
清空数据文件夹
- rm -rf /var/lib/pgsql/12/data
从主节点拷贝数据 * 需要使用postgres用户进行操作否则启动从节点将会有问题
- pg_basebackup -h 192.168.196.129 -D /var/lib/pgsql/12/data -p 5432 -U replica -Fp -Xs -Pv -R
确保用户正确:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200331151213810.png#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200331151558758.png?#pic_center)
如果用户不对执行如下代码:
chown -R postgres:postgres data
编辑 postgresql.conf 新增或修改下列属性设置
- primary_conninfo =
'host=主节点IP port=5432 user=replica password=replica用户的密码'
- recovery_target_timeline = latest
- max_connections = 150 #大于主节点
- hot_standby = on
- max_standby_streaming_delay = 30s
- wal_receiver_status_interval = 10s
- hot_standby_feedback = on
重新启动从节点
- systemctl restart postgresql-12
3、验证主从
登录主节点数据库执行如下命令
su postgres
psql
select client_addr,sync_state from pg_stat_replication;
结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200331153455167.png#pic_center)