PostgreSQL 来自欧罗巴Patroni Patroni 管理下的POSTGRESQL 怎么修改参数 7

2020-11-25 17:00:08 浏览数 (1)

目前Patroni 系列已经更新到了7 , 本次的重点在于看如何在Patroni的管理下,修改系统的配置参数.

首先我们在修改配置参数的情况下,确认几点的先行需要知道的知识

1 POSTGRESQL 本身的配置文件在PATRONI 生效后,不会在对服务器配置生效

2 在修改了Patroni 中的 POSTGRESQL 的配置信息后,会对所在所有的集群的POSTGRESQL 的服务器生效,(仅仅不需要重启的配置)

3 修改配置需要通过patroni 来进行修改配置,而不能直接在postgresql.conf中修改

patronictl -c /etc/patroni.yml show-config

上面通过命令可以查看当前的集群中的POSTGRESQL 的配置信息,在以上的配置的基础上我们可以添加相关配置.

如我们添加几个配置

首先我们通过命令进入到POSTGRESQL的配置的编辑页面

patronictl -c /etc/patroni.yml edit-config pg_au

我们将shared_buffers 修改相关配置

点击Y 系统就会将这个配置分发到每个POSTGRESQL 的服务器,并且RELOAD到系统中.修改配置也会对之前的配置和修改后的配置,进行特殊展示.

但实际上根本不起作用

折腾了半个上午,到底是哪里有问题, 其中做了以下事情

1 在postgresql.conf 中修改了一些配置,然后reload 可以加载(我真没有想到)

2 删除postgresql.conf, postgresql.base.conf 然后重启动POSTGRESQL ,系统无法启动了,只能从其他数据库拷贝postgresql.conf 和 postgresql.base.conf 到原来的位置,在此启动系统,但原来希望能有变化的值,还是没有变化.

最终在一个国外的网站上看到下面的一个正确的配置,

错误的配置

在正确的配置中修改保存后,在patroni 的日志中,会显示下面的内容

patronictl -c /etc/patroni.yml show-config

这里需要明确的几个点是

1 通过edit-config 来配置的的信息必须要符合 YAML的格式,其中

配置选项在左面, 配置值在右面,并且通过冒号来分割,同时PATRONI 会检查你的配置,如果配置和值有误将不会保存你的配置.

loop_wait: 10

master_start_timeout: 300

maximum_lag_on_failover: 1048576

postgresql:

parameters:

archive_command: /bin/true

archive_mode: 'on'

autovacuum_max_workers: '6'

autovacuum_vacuum_scale_factor: '0.1'

autovacuum_vacuum_threshold: '50'

client_min_messages: WARNING

effective_cache_size: 512MB

hot_standby: 'on'

hot_standby_feedback: 'on'

listen_addresses: '*'

log_autovacuum_min_duration: 60s

log_checkpoints: 'on'

log_connections: 'on'

log_directory: pg_log

log_disconnections: 'on'

log_duration: 'on'

log_filename: postgresql-%a.log

log_line_prefix: '%m - %l - %p - %h - %u@%d - %x'

log_lock_waits: 'on'

log_min_duration_statement: 30s

log_min_error_statement: NOTICE

log_min_messages: WARNING

log_rotation_age: '1440'

log_statement: ddl

log_temp_files: '0'

log_timezone: PRC

log_truncate_on_rotation: 'on'

logging_collector: 'on'

maintenance_work_mem: 128MB

max_replication_slots: 10

max_wal_senders: '20'

port: 5432

shared_buffers: 2048MB

retry_timeout: 10

synchronous_mode: false

ttl: 30

修改相关的配置后会列出,然后直接在确认后就可以reload

这里我们需要确认那些配置可以立即被应用,那些不能,需要重启动可以通过pg_settings 来查看,其中 sighup 基本上都是可以通过reload 加载的,internal 则是不能修改的配置

例如我们修改postgresql 中有关数据库归档方面的配置,在更改完毕,并不会被Reload ,这里需要重新启动POSTGRESQL 才能将配置进行加载. 我们注意星号,星号的位置是说明有有一些配置是需要重启动patroni 才能被执行的.

我们通过patroni 的命令来重启动机器,结束后相关的星号就会消失详见下图

挨个重启动每台postgresql 然后

今天到这里先总结一下,首先patroni 修改配置还是比较方便的,并且靠谱的,并且对配置有检查,如果不合理或字符错误,则不能被保存. 同时不能reload的系统参数. 有些需要重启动的配置,需要在修改配置后,通过list 查看是否需要重启动,如果需要通过patroni的命令来将系统重启动.

另外如果对配置有特殊需求的可以参考上面的提出的 postgresql.custom_conf 来进行更定制化的一些配置.

0 人点赞