Patroni配置参数
### **配置类型及优先级**
1. **全局动态配置**:存储在DCS(如etcd、ZooKeeper)中,应用于所有集群节点。可通过`patronictl edit-config`或REST API修改。
2. **本地配置文件 (`patroni.yml`)**:优先级高于动态配置。可运行时重载(发送SIGHUP、POST /reload或`patronictl reload`)。
3. **环境变量配置**:可覆盖部分本地配置参数,适用于动态环境(如Docker)。
### **PostgreSQL参数管理规则**
- **必须主从一致的参数**(只能通过DCS动态配置修改):
- `max_connections` (默认100,最小25)
- `max_locks_per_transaction` (默认64,最小32)
- `max_worker_processes` (默认8,最小2)
- `max_prepared_transactions` (默认0,最小0)
- `wal_level` (默认`hot_standby`)
- `track_commit_timestamp` (默认`off`)
- **建议主从一致的参数**(也应通过动态配置设置):
- `max_wal_senders` (默认10,最小3)
- `max_replication_slots` (默认10,最小4)
- `wal_keep_segments` (默认8,最小1) / `wal_keep_size` (默认128MB,最小16MB)
- `wal_log_hints`: `on`
- **Patroni强制设置的参数**(覆盖其他配置):
- `listen_addresses`, `port`, `cluster_name`, `hot_standby: on`
### **配置应用顺序(优先级从低到高)**
1. `postgresql.base.conf` 或 `custom_conf` 指定的文件
2. `postgresql.conf`(包含动态配置)
3. `postgresql.auto.conf`(ALTER SYSTEM设置)
4. 命令行参数(-o --name=value,最高优先级)
### **涉及共享内存的参数重启注意事项**
影响共享内存的参数(如`max_connections`、`max_wal_senders`等):
- **增加参数值**:先重启所有备节点,再重启主节点。
- **减少参数值**:先重启主节点,再重启所有备节点。
- **重要警告**:必须通过`patronictl restart`或REST API `/restart`端点重启PostgreSQL。**直接重启Patroni服务(如`systemctl restart patroni`)可能导致主节点故障转移。**
### **仅支持动态修改的Patroni配置参数**
- `ttl` (默认30)
- `loop_wait` (默认10)
- `retry_timeout` (默认10)
- `maximum_lag_on_failover` (默认1048576)
- `max_timelines_history` (默认0)
- `check_timeline` (默认false)
- `postgresql.use_slots` (默认true)
### **关键机制**
- **待重启标志**:若需重启PostgreSQL才能应用的配置更改,节点会设置`pending_restart`标志,状态显示`"restart_pending": true`。
- **配置持久化**:节点将DCS中的动态配置状态转储到PostgreSQL数据目录下的`patroni.dynamic.json`文件中。仅领导者允许在DCS中缺少或配置无效时从磁盘恢复这些配置。
更多推荐
所有评论(0)