PostgreSQL 13 同步流复制(#2.4)-202104

PostgreSQL 13 同步流复制(#2.4)-202104

环境:

OS:RedHat 8.3

DB:PostgreSQL 13.1

Master:192.168.108.129

Replica:192.168.108.128

 

1.部署异步流复制环境

# 参考:PostgreSQL 13 异步流复制(#2.1)-202103

 

1.1 主库注意观察application_name和sync_state状态。(异步流复制部署完成后)

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

-[ RECORD 1 ]----+----------------

application_name | walreceiver

client_addr      | 192.168.108.128

sync_state       | async

 

2.部署同步流复制

# 同步流复制即在异步流复制的基础上,增加若干参数激活即可

 

2.1 增加参数

2.1.1 主库

# postgresql.conf文件中增加同步流复制参数

# 流复制环境下:主库本地WAL落盘一份;备库WAL也落盘一份后事务才提交commit

synchronous_commit = on # synchronization level

# 同步流复制的备考列表

synchronous_standby_names = 'dbstandby' # standby servers that provide sync rep method to choose sync standbys, number of sync standbys,

 

2.1.2 备库

# a) 除去postgresql.auto.conf中无需的参数,防止postgresql.conf配置后不生效的情况。

pg13@pgdb01-> cat postgresql.auto.conf 

# Do not edit this file manually!

# It will be overwritten by the ALTER SYSTEM command.

# primary_conninfo = 'user=repl passfile=''/home/pg13/.pgpass'' channel_binding=disable host=192.168.108.128 port=5432 sslmode=disable sslcompression=0 ssl_min_protocol_version=TLSv1.2 gssencmode=disable krbsrvname=postgres target_session_attrs=any’(已注释)

# b)postgresql.conf文件中增加同步流复制参数

# 同步流复制主库的连接信息;重点是application_name值主备库保持一致

primary_conninfo = 'user=repl passfile=''/home/pg13/.pgpass''  host=192.168.108.129 port=5432 application_name=dbstandby '

 

2.2 激活参数与查看状态

2.2.1 备库重启激活postgresql.conf配置中的primary_conninfo

# 其中application_name由walreceiver变为dbstandby说明primary_conninfo已经生效

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

-[ RECORD 1 ]----+----------------

application_name | dbstandby

client_addr      | 192.168.108.128

sync_state       | async

2.2.2 主库重启激活postgresql.conf配置中的synchronous_standby_names

# 主库sync_state由async变为sync说明现在已经是同步状态

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

-[ RECORD 1 ]----+----------------

application_name | dbstandby

client_addr      | 192.168.108.128

sync_state       | sync

 

3.同步流复制验证

# 主库创建一个syncdb数据库

postgres=# create database syncdb;

CREATE DATABASE

# 备库瞬间可以查看到主库创建的syncdb

postgres=# \l

                             List of databases

   Name    | Owner | Encoding |  Collate   |   Ctype    | Access privileges 

-----------+-------+----------+------------+------------+-------------------

 postgres  | pg13  | UTF8     | en_US.utf8 | en_US.utf8 | 

 syncdb    | pg13  | UTF8     | en_US.utf8 | en_US.utf8 | 

 template0 | pg13  | UTF8     | en_US.utf8 | en_US.utf8 | =c/pg13          +

           |       |          |            |            | pg13=CTc/pg13

 template1 | pg13  | UTF8     | en_US.utf8 | en_US.utf8 | =c/pg13          +

           |       |          |            |            | pg13=CTc/pg13

(4 rows)

 

至此同步流复制已经配置完成!

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值