目前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 来进行更定制化的一些配置.