PgSQL一主二从(流式复制)

PgSQL集群(流式复制,CentOS 7)

参考:http://blog.itpub.net/30126024/viewspace-2672741/

https://blog.csdn.net/weixin_39950824/article/details/111193453

同步流复制

主机名ip地址角色路径版本
master192.168.246.130master/usr/pgsql12/data12.7
pgslave01192.168.246.129standby/usr/pgsql12/data12.7
pgslave02192.168.246.131standby/usr/pgsql12/data12.7
  • – 主库

1.修改postgres 密码:

alter user postgres with PASSWORD 'postgres';

2.配置允许主库接受流复制的连接(master)

#ipv4
host	all				all			0/0					turst
# replication
host	replication		postgres	192.168.246.129		turst
host	replication		postgres	192.168.246.130		turst
host	replication		postgres	192.168.246.131		turst

2.修改postgresql.conf(数据库实例路径下:$PGDATA)

listen_addresses = '*'
max_wal_senders = 10
wal_level = replica
hot_standby = on
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
  • – 备库

1.postgresql用户下(这里建议研究下pg_basebackup的参数含义,重点)

进行一次数据同步到备库

pg_basebackup -h 192.168.246.130 -p 5432 -U repl -w -Fp -Xs -Pv -R -D /usr/pgsql12/data/

pg_basebackup在备库data文件下存在数据情况下会默认失败,两个方法(备库不存在数据库实例忽略):

1)删除备库的data的数据

rm -rf /usr/pgsql12/data/
  1. 修改同步路径
pg_basebackup -h 192.168.246.130 -p 5432 -U repl -w -Fp -Xs -Pv -R -D /usr/pgsql12/data1/

–启动

主库启动

pg_ctl start
pg_ctl reload

master 主库

  1. master配置:
  • 在postgresql.conf 配置
synchronous_standby_names = 'pgslave01,pgslave02' # 指定application_name的名称
wal_keep_segments = 1024 # 这里设置1024表示为standby保留1024个WAL文件

配置完成启动

pg_ctl start

备库

  1. pgslave01 和 pgslave02的配置(操作相同,只是application_name 不同)
  • 在postgresql.conf 配置
primary_conninfo = 'application_name=pgslave01 passfile=''/home/postgres/.pgpass'' user=postgres password=postgres host=192.168.246.130 port=5432 sslmode=disable sslcompression=1'

这里会有一个坑,data目录下含有postgresql.conf和postgresql.auto.conf,而postgresql.auto.conf的优先级高于postgresql.conf,如果一个参数同时存在postgresql.auto.conf和postgresql.conf里面,系统会先读postgresql.auto.conf的参数配置

因此保险起见:在postgresql.auto.conf 也配置与postgresql.conf相同。

primary_conninfo = 'application_name=pgslave01 passfile=''/home/postgres/.pgpass'' user=postgres password=postgres host=192.168.246.130 port=5432 sslmode=disable sslcompression=1'

配置完成启动

pg_ctl start

3.最后在master同步复制

pg_ctl reload

结果:

postgres=# select application_name,client_addr,sync_state from pg_stat_replication;

 application_name |   client_addr   | sync_state 
------------------+-----------------+------------
 pgslave01        | 192.168.246.129 | sync
 pgslave02        | 192.168.246.131 | potential
(2 rows)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值