5.patroni手册—YAML Configuration Settings

YAML Configuration Settings

Dynamic configuration settings

动态配置存储在DCS(分布式配置存储)中,并应用于所有群集节点。一类参数只能在动态配置中设置,例如loop_waitttlpostgresql.parameters.max_connectionspostgresql.parameters.max_worker_processes等。一些参数,例如postgresql.listenpostgresql.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:槽类型,可以为physicallogical。如果槽是逻辑槽,你需要额外定义databaseplugin
      • database:逻辑槽应该被创建的数据库名称
      • plugin:逻辑槽的插件名

Global/Universal

  • name:主机名。在集群中必须是唯一的
  • namespace:patroni将在路径下保留有关集群的配置信息。默认配置为"/service"
  • scope:集群名

Log

  • level:设置常规日志记录级别,默认是"INFO"(详情参见:the docs for Python logging)
  • traceback_level:设置显示日志回溯的级别,默认值是"ERROR"。如果仅在启用后查看回溯信息,可以将其设置为DEBUGPATRONI_LOG_LEVEL=DEBUG
  • format:设置日志格式文本串,默认值为`%(asctime)s %(levelname)s: %
  • dateformat:设置时间格式。(详见formatTime() documentation
  • max_queue_size:patroni使用两步日志记录的方式。日志被写入内存队列中,并且有一个单独的现成将其从队列中拉出并写入到stderr或文件中。默认情况下,内部队列的最大大小受到1000条记录的限制,足以保留过去1h20min的日志记录。
  • dir:应用日志的写入目录。这个目录必须存在并且patroni的执行用户必须对此用户有可写权限。如果设置此变量,则默认情况下该应用程序将保留4个25MB的日志。您可以使用file_numfile_size来调整这些保留值。
  • file_num:应用日志的保留数量
  • file_size:触发patroni.log文件轮转的文件大小(bytes)
  • loggers:重新定义每个python模块的日志记录级别。
    • patroni.postmaster: WARNING
    • urllib3: DEBUG

Bootstrap configuration

  • dcs:初始化新集群后,此部分江北写入到给定的配置存储///config中。集群的全局动态配置。在bootstrap.dcs下,你可以
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Patroni是一种开源的工具,用于管理PostgreSQL集群的高可用性。它是一个容器化的解决方案,可以实现自动化的集群管理和故障转移。以下是使用Patroni实现PG数据库高可用的步骤: 1. 安装Patroni 可以使用pip命令安装Patroni: ``` pip install patroni ``` 2. 配置Patroni Patroni的配置文件是YAML格式的,可以根据需要进行修改。以下是一个简单的示例: ``` scope: postgres namespace: /db/ name: pg-cluster restapi: listen: 0.0.0.0:8008 connect_address: $NODE1_IP:8008 etcd: host: $ETCD_IP:2379 bootstrap: dcs: ttl: 30 loop_wait: 10 retry_timeout: 10 maximum_lag_on_failover: 1048576 postgresql: use_pg_rewind: true parameters: max_wal_senders: 10 wal_keep_segments: 10 pg_hba: - host replication replicator 0.0.0.0/0 md5 - host all all 0.0.0.0/0 md5 synchronous_mode: off synchronous_commit: off archive_mode: off archive_command: false recovery_conf: restore_command: cp /var/lib/postgresql/backup/%f %p recovery_target_timeline: latest pgpass: /tmp/pgpass pgpassfile_mode: 600 bin_dir: /usr/lib/postgresql/9.6/bin pg_ctl: /usr/lib/postgresql/9.6/bin/pg_ctl use_slots: true create_replica_methods: - basebackup - pg_rewind ``` 在这个示例中,我们使用etcd作为DCS(分布式协调服务)来管理集群状态。我们还配置了一些PostgreSQL参数,如max_wal_senders和wal_keep_segments。这些参数都可以根据需要进行修改。 3. 启动Patroni 可以使用以下命令启动Patroni: ``` patroni postgres.yml ``` 这将启动一个PostgreSQL集群,并将其注册到etcd中。您可以使用以下命令检查集群状态: ``` curl http://$NODE1_IP:8008/patroni ``` 这将返回一个JSON格式的响应,其中包含有关集群状态的信息。 4. 测试故障转移 为了测试故障转移,您可以杀死主节点上的PostgreSQL进程。Patroni将检测到主节点已经下线,并自动将一个从节点提升为新的主节点。 您可以使用以下命令检查新主节点的状态: ``` curl http://$NODE2_IP:8008/patroni ``` 这将返回有关新主节点的信息。 总的来说,使用Patroni实现PostgreSQL集群的高可用性相对简单。它可以自动管理故障转移,并提供一些其他有用的功能,如DCS和可插拔的备份存储后端。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值