本文档用于说明PostgresSQL数据库流复制(Streaming Replication)配置和主从切换过程。
参考博客地址:https://blog.csdn.net/ywd1992/article/details/81698556
主:192.168.57.4
安装目录:/home/postgres/9.6/
Data目录:/home/postgres/9.6/data
备:192.168.57.3
安装目录:/home/postgres/9.6/
Data目录:/home/postgres/9.6/data
vi postgresql.conf
wal_level = hot_standby ##WAL日志信息的输出级别,minimal、replica、logical三种模式
max_wal_senders = 10 ##默认为10,一个流复制备库通常只需要消耗流复制主库一个WAL 发送进程,必须小于max_connections
wal_keep_segments = 512 ##越大越好,根据归档存储空间定,默认单个WAL文件大小为16M,这里为512×16MB=8GB
hot_standby = on ##开启流复制
logging_collector = on ##开启日志
log_directory = 'pg_log' ##开启日志路径
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' ##开启日志文件名
synchronous_commit = off ##只能为off,否则主库会一直等待备机响应,备机故障时主机也会出问题
psql:进入psql执行
create user repli replication LOGIN password '123456';
添加以下配置,考虑到主备角色互换,建议pg_hba.conf主备完全一样
host replication repli 192.168.1.128/32 md5
host replication repli 192.168.1.129/32 md5
$ pg_ctl stop -m fast
$ pg_ctl start
psql -h 192.168.57.4 -U postgres
连接成功后停掉从库的服务,清空从节点数据
rm –rf /nh_sdap/postgres/9.6/data/*
pg_basebackup -h 192.168.57.4 -U repli -D /home/postgres/9.6/data -X stream -P
复制share目录下的recovery.conf.sample文件
cp $PGHOME/share/recovery.conf.sample $PGDATA/recovery.conf
修改以下配置
standby_mode='on'
recovery_target_timeline = 'latest'
primary_conninfo='host=10.251.9.39 port=5432 user= repli password=123456' ##配置主机的ip、用户、端口等,repli即主库创建的用于流复制的用户
##trigger_file='/opt/PostgreSQL/9.3/data/trigger'
$ pg_ctl stop -m fast
$ pg_ctl start
在主库执行
说明192.168.57.4服务器是从节点,在接收流,而且是异步流复制
select pg_is_in_recovery();--主库是false 备库是true
通过建表、插入数据测试即可
1、停掉主库
2、pg_ctl promote 从库执行切换,执行之后发现recovery.conf变为recovery.done文件,代表 切换成功
3、mv recovery.done recovery.conf 在原主库(当前从库)执行(修改其中的ip为当前的主库ip)
4、启动原主库(当前从库)
5、观察主、备库是否正常