postgresql_同步流复制配置

 

 

在postgresql.conf文件中的参数

 synchronous_commit参数详解

此参数是指:数据库提交事务时是否需要等待wal日志写入硬盘后才向客户端返回成功

 

 

这几个参数的含义:

场景1:单实例环境

  on:当数据库提交事务时,wal先写入wal buffer在写入wal日志,设置为on时需等待本地wal写入wal日志之后才向客户端返回成功,安全数据库性能有损耗

  off:不需要等待本地wal buffer写入wal日志,返回成功,数据库宕机时,最新提交的少量事务可能会丢失,但重启数据库会认为这些事务异常终止,off能提高数据库性能

  local:与on类似

场景2:流复制

  remote_write:本地wal已落盘,备库还在备库的操作系统缓存中,只有一份持久化的wal,事务响应时间较低

  on:两份持久化wal,主备两库wal已经落盘,响应时间较高

  remote_apply:本地已落盘,且备库已落盘也完成了重做,事务响应时间最高

配置同步流复制

备库recovery.conf中添加

primary_conninfo = 'host=192.168.12.10 port=1921 user=repuser application_name=node2'

主库的postgresql.conf的synchronous_standby_names参数可引用备库application_name选项设置的值,这里是node2

主库上postgresql.conf上设置,红色添加的其余和异步流复制设置一样

wal_level = replica
archive_mode = on
archive_command ='/bin/date'
max_wal_senders = 10
wal_keep_segments = 512
hot_standby = on
synchronous_standby_names = 'node2'
synchronous_commit = on

主库执行pg_ctl reload使得修改生效,备库调整了recovery.conf文件需要重启备库才能生效pg_ctl restart

在主库查看sync_state 字段已经变成了sync,同步流复制配置完成

postgres=# select usename,application_name,client_addr,sync_state from pg_stat_replication ;
 usename | application_name |  client_addr  | sync_state
---------+------------------+---------------+------------
 repuser | node2            | 192.168.12.11 | sync
(1 row)

 

posted @ 2021-11-01 17:12  罗论明  阅读(399)  评论(0编辑  收藏  举报