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)
至此同步流复制已经配置完成!
3219

被折叠的 条评论
为什么被折叠?



