pig patroni

使用 pig patroni 子命令管理 Patroni 服务与集群

pig patroni 命令(别名 pig pt)用于管理 Patroni 服务和 PostgreSQL HA 集群。它封装了常用的 patronictlsystemctl 操作,提供简化的集群管理体验。

命令概览

集群操作(patronictl 封装):

命令别名描述实现方式
pt listls, l列出集群成员patronictl list -e -t
pt restartreboot, rt重启 PostgreSQL 实例patronictl restart
pt reloadrl, hup重载 PostgreSQL 配置patronictl reload
pt reinitri重新初始化成员patronictl reinit
pt switchoversw计划内主从切换patronictl switchover
pt failoverfo手动故障切换patronictl failover
pt pausep暂停自动故障切换patronictl pause
pt resumer恢复自动故障切换patronictl resume
pt configcfg, c查看或修改集群配置patronictl show-config / edit-config

服务管理(systemctl 封装):

命令别名描述实现方式
pt startboot, up启动 Patroni 服务systemctl start patroni
pt stophalt, dn, down停止 Patroni 服务systemctl stop patroni
pt statusst, stat显示服务状态systemctl status patroni
pt logl, lg查看 Patroni 日志journalctl -u patroni

服务子命令pt svc):

命令别名描述
pt svc startboot, up启动 Patroni 服务
pt svc stophalt, dn, down停止 Patroni 服务
pt svc restartreboot, rt重启 Patroni 服务
pt svc reloadrl, hup重载 Patroni 服务
pt svc statusst, stat显示服务状态

快速入门

# 查看集群成员状态
pig pt list                    # 列出默认集群成员
pig pt list pg-meta            # 列出指定集群成员
pig pt list -W                 # 持续监视模式
pig pt list -w 5               # 每 5 秒刷新一次

# 查看和修改集群配置
pig pt config                  # 显示当前集群配置
pig pt config ttl=60           # 修改单个配置项(直接生效)
pig pt config ttl=60 loop_wait=15  # 修改多个配置项

# 集群运维操作
pig pt restart                 # 重启所有成员的 PostgreSQL
pig pt restart pg-test-1       # 重启指定成员
pig pt switchover              # 计划内主从切换
pig pt pause                   # 暂停自动故障切换
pig pt resume                  # 恢复自动故障切换

# 管理 Patroni 服务
pig pt status                  # 查看服务状态
pig pt start                   # 启动服务
pig pt stop                    # 停止服务
pig pt log -f                  # 实时查看日志

全局参数

以下参数适用于所有 pig pt 子命令:

参数简写说明
--dbsu-U数据库超级用户(默认:$PIG_DBSUpostgres

集群操作命令

pt list

列出 Patroni 集群成员状态。该命令封装了 patronictl list,并默认添加 -e(扩展输出)和 -t(显示时间戳)参数。

pig pt list                    # 列出默认集群成员
pig pt list pg-meta            # 列出指定集群
pig pt list -W                 # 持续监视模式
pig pt list -w 5               # 每 5 秒刷新一次
pig pt list pg-test -W -w 3    # 监视 pg-test 集群,3 秒刷新

选项:

参数简写说明
--watch-W启用持续监视模式
--interval-w监视刷新间隔(秒)

pt restart

通过 Patroni 重启 PostgreSQL 实例。这会触发 PostgreSQL 的滚动重启,而非重启 Patroni 守护进程本身。

pig pt restart                   # 重启所有成员(交互式)
pig pt restart pg-test-1         # 重启指定成员
pig pt restart -f                # 跳过确认直接重启
pig pt restart --role=replica    # 仅重启从库
pig pt restart --pending         # 重启待重启的成员

选项:

参数简写说明
--force-f跳过确认
--role按角色筛选(primary/replica)
--pending仅重启待重启的成员

pt reload

通过 Patroni 重载 PostgreSQL 配置。这会触发所有成员执行配置重载。

pig pt reload

pt reinit

重新初始化集群成员。这会从主库重新同步数据。

pig pt reinit pg-test-1          # 重新初始化指定成员
pig pt reinit pg-test-1 -f       # 跳过确认
pig pt reinit pg-test-1 --wait   # 等待完成

选项:

参数简写说明
--force-f跳过确认
--wait-w等待重新初始化完成

警告: 此操作会删除目标成员的所有数据并重新同步。

pt switchover

执行计划内的主从切换。

pig pt switchover                 # 交互式切换
pig pt switchover -f              # 跳过确认
pig pt switchover --leader pg-1   # 指定当前主库
pig pt switchover --candidate pg-2  # 指定新主库

选项:

参数简写说明
--force-f跳过确认
--leader指定当前主库
--candidate指定候选新主库

pt failover

执行手动故障切换。用于主库不可用时强制切换。

pig pt failover                   # 交互式故障切换
pig pt failover -f                # 跳过确认
pig pt failover --candidate pg-2  # 指定新主库

选项:

参数简写说明
--force-f跳过确认
--candidate指定候选新主库

pt pause

暂停 Patroni 的自动故障切换。

pig pt pause                      # 暂停自动故障切换
pig pt pause --wait               # 等待确认

选项:

参数简写说明
--wait-w等待操作完成

使用场景: 在执行维护操作(如大版本升级、存储迁移)时暂停自动故障切换,防止误触发。

pt resume

恢复 Patroni 的自动故障切换。

pig pt resume                     # 恢复自动故障切换
pig pt resume --wait              # 等待确认

选项:

参数简写说明
--wait-w等待操作完成

pt config

显示或修改集群配置。不带参数时显示当前配置,带 key=value 参数时修改配置。

pig pt config                           # 显示当前集群配置
pig pt config show                      # 显示配置(显式)
pig pt config edit                      # 交互式编辑配置
pig pt config set ttl=60                # 设置 TTL 为 60 秒
pig pt config set ttl=60 loop_wait=15   # 同时修改多个配置项
pig pt config pg max_connections=200    # 修改 PostgreSQL 参数

子命令:

子命令说明
show(默认)显示当前配置
edit交互式编辑配置
set key=value直接设置配置项
pg key=value设置 PostgreSQL 参数

常用配置项:

配置项说明默认值
ttlLeader 锁的生存时间(秒)30
loop_wait主循环休眠时间(秒)10
retry_timeoutDCS 和 PostgreSQL 操作超时(秒)10
maximum_lag_on_failover故障切换时允许的最大延迟(字节)1048576

注意: 此命令修改的是存储在 DCS(如 etcd)中的集群动态配置,而非本地配置文件 /etc/patroni/patroni.yml

服务管理命令

pt start

启动 Patroni 服务。

pig pt start                     # 启动 Patroni 服务
pig pt up                        # 别名
pig pt boot                      # 别名

等效于执行 sudo systemctl start patroni

pt stop

停止 Patroni 服务。

pig pt stop                      # 停止 Patroni 服务
pig pt down                      # 别名
pig pt halt                      # 别名

等效于执行 sudo systemctl stop patroni

注意: 停止 Patroni 服务会导致该节点上的 PostgreSQL 实例也被停止(取决于 Patroni 配置)。

pt status

显示 Patroni 服务的综合状态,包括:

  • systemd 服务状态
  • Patroni 进程信息
  • 集群成员状态
pig pt status

pt log

查看 Patroni 服务日志。

pig pt log                     # 显示最近 50 行日志
pig pt log -f                  # 实时跟踪日志输出
pig pt log -n 100              # 显示最近 100 行日志
pig pt log -f -n 200           # 显示最近 200 行并持续跟踪

选项:

参数简写默认值说明
--follow-ffalse实时跟踪日志输出
--lines-n50显示的日志行数

等效于执行 journalctl -u patroni [-f] [-n N]

pt svc 子命令

pt svc 提供与顶层服务命令相同的功能,用于明确操作的是 Patroni 守护进程:

pig pt svc start                 # 启动 Patroni 服务
pig pt svc stop                  # 停止 Patroni 服务
pig pt svc restart               # 重启 Patroni 服务
pig pt svc reload                # 重载 Patroni 服务
pig pt svc status                # 显示服务状态

别名对照:

命令别名
pt svc startboot, up
pt svc stophalt, dn, down
pt svc restartreboot, rt
pt svc reloadrl, hup
pt svc statusst, stat

设计说明

与 patronictl 的关系:

pig pt 封装了 patronictl 的常用操作:

  • 集群查询:listconfig show
  • 集群管理:restartreloadreinitswitchoverfailoverpauseresume
  • 配置修改:config setconfig edit
  • 服务管理命令(start/stop/restart/reload/status)调用 systemctl
  • log 命令调用 journalctl

默认配置路径:

配置项默认值
Patroni 配置文件/etc/patroni/patroni.yml
服务名称patroni

权限处理:

  • 如果当前用户已是 DBSU:直接执行命令
  • 如果当前用户是 root:使用 su - postgres -c "..." 执行
  • 其他用户:使用 sudo -inu postgres -- ... 执行

平台支持:

此命令专为 Linux 系统设计,依赖 systemctljournalctl


最后修改 2026-01-26: update pig docs (5c06905)