1. 生成示例配置
```bash
patroni --generate-sample-config [configfile]
```
**功能**:生成YAML格式的Patroni示例配置文件
**特点**:
-
使用环境变量值,未设置则用默认值或`#FIXME`标记
-
自动基于本地设置定义:
-
`postgresql.listen`:主机名对应的IP + 5432端口
-
`restapi.listen`:主机名对应的IP + 8008端口
-
PostgreSQL ≥11时自动配置`authentication.rewind`
2. 为运行中的PostgreSQL实例生成配置
```bash
patroni --generate-config [--dsn DSN] [configfile]
```
**功能**:为本地运行的PostgreSQL实例生成Patroni配置
**配置来源**:
-
**优先**:提供的DSN连接字符串
-
**备选**:PostgreSQL环境变量(密码缺失时会提示输入)
-
**信息收集**:从源PostgreSQL实例获取所有非内部GUC参数
**自动映射的配置项**:
-
`scope` ← `cluster_name` GUC
-
`postgresql.listen` ← `listen_addresses`和`port` GUC
-
`postgresql.datadir` ← `data_directory` GUC
-
`postgresql.parameters` ← 多个命令类GUC(archive_command等)
-
`bootstrap.dcs` ← 其他所有收集的PostgreSQL GUC
**其他规则**:
-
`name`:PATRONI_NAME环境变量或主机名
-
`postgresql.bin_dir`:从运行实例获取的PostgreSQL二进制路径
-
`postgresql.pg_hba/ident`:从源实例的对应文件读取内容
3. 验证配置
```bash
patroni --validate-config [configfile] [--ignore-listen-port | -i] [--print | -p]
```
**功能**:验证Patroni配置并显示失败检查信息
**参数**:
-
`configfile`:配置文件路径(未提供时从PATRONI_CONFIG_VARIABLE环境变量读取)
-
`-i/--ignore-listen-port`:忽略监听端口已被占用的绑定失败
-
`-p/--print`:验证成功后打印本地配置(包括环境变量覆盖)
关键信息要点
-
**配置文件输出**:所有命令中,未指定`configfile`参数时,结果输出到stdout
-
**环境配置优先级**:环境变量配置值优先于生成的默认值
-
**自动检测**:命令会根据本地系统和运行实例自动检测和填充值
-
**验证灵活性**:可忽略端口占用问题,并支持配置预览