PostgreSQL 之 同步流复制的实现

作者:瀚高PG实验室 (Highgo PG Lab) - 波罗

同步复制要求在数据写入Standby数据库后,事务的commit才返回,所以Standby库出现问题时,会导致主库被hang住。

解决这个问题的方法是启动两个Standby数据库,这两个standby数据库只要有一个是正常的,就不会让主库hang住。所以在实际应用中,同步流复制,总是有1个主库和2个以上的Standby库。

同步复制的主要配置

实现同步复制主要是在主库上设置postgresql.conf配置参数synchronous_standby_names

这个参数指定多个Standby的名称,各个名称通过逗号分隔,而Standby名称是在Standby连接到主库时,由连接参数"application_name"指定的。

示例:主库修改postgresql.conf

vi postgresql.conf

synchronous_standby_names = 'standby01,standby02'

同步复制的主要配置

要使用同步复制,在Standby数据库的recovery.conf里的primary_conninfo一定要指定连接参数"application_name"。

从节点recovery.conf的配置示例:

------

standby_mode = 'on'

primary_conninfo = 'application_name=standby01 user=repl password=111111 host=192.168.137.220 port=1921 sslmode=disable sslcompression=1'

会话级别控制异步、同步复制

当主库已配置参数synchronous_standby_names = standby01 或 * 时

会话执行:set synchronous_commit = off;  

当前会话可以取消同步复制,改为异步复制。

当主库注释配置参数synchronous_standby_names = 时

会话执行:set synchronous_commit = on ;  不起作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值