YAML Configuration Settings
Dynamic configuration settings
动态配置存储在DCS(分布式配置存储)中,并应用于所有群集节点。一类参数只能在动态配置中设置,例如loop_wait
,ttl
,postgresql.parameters.max_connections
,postgresql.parameters.max_worker_processes
等。一些参数,例如postgresql.listen
,postgresql.data_dir
,只能在本地设置,即在Patroni配置文件中或通过配置变量设置。在大多数情况下,本地配置将覆盖动态配置。为了更改动态配置,您可以使用patronictl edit-config工具或Patroni REST API。
- loop_wait:循环休眠周期,单位秒。默认值:10
- ttl:TTL获取领导锁(单位:秒)。将其视为启动自动故障转移过程之前的时间长度。 默认值:30
- retry_timeout:DCS和PostgreSQL操作重试超时(以秒为单位)。 短于这个时间间隔的DCS或网络问题不会导致Patroni降级领导者。 默认值:10
- maximum_lag_on_failover:follower可能落后参加leader选举的最大字节数
- max_timelines_history:DCS中保留的时间线历史记录项目的最大数量。 默认值:0。设置为0时,它将完整历史记录保留在DCS中。
- master_start_timeout: 在触发故障转移之前,允许主服务器从故障中恢复的时间(以秒为单位)。默认值是300秒。当我们把他设置为0时,将在检测到崩溃后立即进行故障转移。在使用异步复制时,故障转移会导致事务丢失。主服务器光长的最坏情况下,故障转移的时间是
loop_wait+master_start_timeout+loop_wait
,除非master_start_timeout
为0,在这种情况下,他只有loop_wait
.需要综合耐用性/可用性
来权衡设置这个配置 - master_stop_timeout:停止PostgreSQL时允许Patroni等待的秒数,仅在启动
sync_mode
时有效。当设置为>0并且启用了sync_mode时,如果停止操作运行的时间超过master_stop_timeout
设置的值,则Patroni将SIGKILL发送给postmaster。需要综合耐用性/可用性
来权衡设置这个配置。如果这个参数没有被配置或者设置的值<=0,master_stop_timeout
不生效。 - synchronous_mode:打开同步复制模式。在这个模式下,只有最新的领导者和同步从库才能够参加领导者选举。同步复制模式下可以确保成功提交的事务不会在故障转移时丢失,付出的代价是当patroni无法保证事务的持久性时,将不可以进行写入操作。详情参见replication modes documentation
- synchronous_mode_strict:防止在没有可用的同步副本情况下禁用同步复制,从而阻止所有客户端对主服务器的写操作。详情参见 replication modes documentation
- postgresql
- use_pg_rewind:是否使用pg_rewind.默认值:false
- use_slots:是否使用复制槽。在pg9.4+版本默认值:true
- recovery.conf:当配置从库是,会将配置写入到
recovery.conf
。在PostgreSQL 12版本后不再存在配置文件recovery.conf
,但是你还可以继续使用此部分,因为patroni会透明处理它 - parameters:列出PostgreSQL的配置设置
- standby_cluster:如果这部分被定义,你将初始化一个standby节点
- host:远端master的地址
- port:远端master的端口
- primary_slot_name:在远端master上用于复制的槽。这个参数是可选的,默认值是从实例名中派生出的(参阅函数
slot_name_from_member_name*
) - create_replica_methods:可用于从远端主服务器引导备用领导者的方法的有序列表,可以与PostgreSQL中定义的列表不同
- restore_command:将WAL记录从远程主服务器还原到备用领导服务器的命令,可以与PostgreSQL中定义的列表不同
- archive_cleanup_command:备用领导者的清理命令
- revocery_min_apply_delay:在待机领导者上实际应用WAL记录之前需要等待多长时间
- slots:定义复制槽参数,这个槽将在切换/故障转移期间保留。patroni尝试在打开与集群的连接之前创建槽
- my_slot_name:复制槽名称。如果槽名称参数和当前primary匹配,槽将不会被创建。操作者需要保证patroni自动为成员创建的复制槽和永久复制槽之间的名称没有冲突。
- type:槽类型,可以为
physical
和logical
。如果槽是逻辑槽,你需要额外定义database
和plugin
- database:逻辑槽应该被创建的数据库名称
- plugin:逻辑槽的插件名
- type:槽类型,可以为
- my_slot_name:复制槽名称。如果槽名称参数和当前primary匹配,槽将不会被创建。操作者需要保证patroni自动为成员创建的复制槽和永久复制槽之间的名称没有冲突。
Global/Universal
- name:主机名。在集群中必须是唯一的
- namespace:patroni将在路径下保留有关集群的配置信息。默认配置为"/service"
- scope:集群名
Log
- level:设置常规日志记录级别,默认是"INFO"(详情参见:the docs for Python logging)
- traceback_level:设置显示日志回溯的级别,默认值是"ERROR"。如果仅在启用后查看回溯信息,可以将其设置为
DEBUG
。PATRONI_LOG_LEVEL=DEBUG - format:设置日志格式文本串,默认值为`%(asctime)s %(levelname)s: %
- dateformat:设置时间格式。(详见formatTime() documentation)
- max_queue_size:patroni使用两步日志记录的方式。日志被写入内存队列中,并且有一个单独的现成将其从队列中拉出并写入到stderr或文件中。默认情况下,内部队列的最大大小受到1000条记录的限制,足以保留过去1h20min的日志记录。
- dir:应用日志的写入目录。这个目录必须存在并且patroni的执行用户必须对此用户有可写权限。如果设置此变量,则默认情况下该应用程序将保留4个25MB的日志。您可以使用
file_num
和file_size
来调整这些保留值。 - file_num:应用日志的保留数量
- file_size:触发patroni.log文件轮转的文件大小(bytes)
- loggers:重新定义每个python模块的日志记录级别。
- patroni.postmaster: WARNING
- urllib3: DEBUG
Bootstrap configuration
- dcs:初始化新集群后,此部分江北写入到给定的配置存储///config中。集群的全局动态配置。在
bootstrap.dcs
下,你可以