原文链接: https://postgres.fun/20200602160100.html
前两篇文章介绍了Patroni + Etcd高可用部署和高可用测试,其中Patroni用来接管对PostgreSQL实例的管理,例如PostgreSQL的初始化、启动、停止、参数配置等,并将配置信息存储到etcd集群。
如果想修改PostgreSQL实例的参数,需通过Patroni统一管理,单独修改postgresql.conf参数不再生效,本文介绍Patroni + Etcd高可用方案中PostgreSQL的参数设置。
通过Patroni统一管理PostgreSQL的配置参数具有以下优点:
- 对于不需要重启生效的参数,可在任意Patroni节点配置,修改后对其它节点也生效。
- 所有Patroni节点都可以进行参数配置。
- 减少配置工作量,减少人为配置错误。
通过Patroni统一管理PostgreSQL的配置参数也有让人不习惯的地方,例如:
- Patroni新生成postgresql.base.conf配置文件,并将原有postgresql.conf的配置全部导入到此文件,之后重新生成postgresql.conf配置文件。
- postgresql.conf配置文件不可手工修改,由Patroni管理。
总之,Patroni接管PostgreSQL的参数配置,对PostgreSQL维护体系侵入较大,使用时需注意。
通过etcdctl查看参数
查看数据库参数配置的方法有多种,单实例或主从架构下,可登录数据库查看,也可通过postgresql.conf查看。
Patroni + Etcd高可用方案中可以登录数据库查看,但每个节点的postgresql.conf或postgresql.base.conf文件中参数的配置并不一定生效。
由于Patroni参数存储在etcd中,因此可通过etcdctl
命令查看,也可通过patronictl
命令查看。
下面介绍下etcdctl
查看数据库配置参数,在.bash_profile
中设置以下环境变量:
export ETCDCTL_API=2
export ENDPOINTS="http://192.168.2.11:2379,http://192.168.2.12:2379,http://192.168.2.13:2379"
由于安装的是etcd3.4,etcd3.4默认使用API 3 版本,Patroni1.6 不支持 API 3版本,因此,使用API 2版本,设置ETCDCTL_API环境变量,同时设置ENDPOINTS环境变量。
使用etcdctl
查看配置参数,如下:
[pg12@ydtf01 patroni]$ etcdctl --endpoints=$ENDPOINTS get /service/pg_ydtf/config | jq .
{
"loop_wait": 10,
"master_start_timeout": 300,
"maximum_lag_on_failover": 1048576,
"postgresql": {
"use_pg_rewind": true,
"use_slots": true,
"parameters": {
"archive_command": "/bin/date",
"archive_mode": true,
"autovacuum": true,
"autovacuum_max_workers": 3,
"bgwriter_delay": "10ms",
"checkpoint_timeout": "30min",
"full_page_writes": true,
"hot_standby": true,
"listen_addresses": "*",
"log_autovacuum_min_duration": -1,
"log_checkpoints": true,
"log_connections": true,