安装

在各支持平台上安装和升级 Patroni 的详细说明。

原始页面: https://patroni.readthedocs.io/en/latest/installation.html


Mac OS 前置依赖

在 Mac 上安装依赖,执行以下命令:

brew install postgresql etcd haproxy libyaml python


Psycopg

psycopg2-2.8 开始,psycopg2 的二进制版本不再默认安装。从源码编译安装需要 C 编译器以及 postgres 和 python 的开发包。由于 Python 生态中无法将依赖声明为 psycopg2 OR psycopg2-binary,您需要自行选择安装方式。

可选方案如下:

  1. 使用发行版自带的包管理器:
sudo apt-get install python3-psycopg2  # 在 Debian/Ubuntu 上安装 psycopg2 模块
sudo yum install python3-psycopg2      # 在 RedHat/Fedora/CentOS 上安装 psycopg2
  1. 在通过 pip 安装 Patroni 时,在 依赖列表 中指定 psycopgpsycopg2psycopg2-binary 之一。


通过 pip 安装

Patroni 可以通过 pip 安装:

pip install patroni[dependencies]

其中 dependencies 可以为空,也可以是以下一个或多个选项的组合:

etcdetcd3
python-etcd 模块,用于将 Etcd 作为分布式配置存储(DCS)
consul
py-consul 模块,用于将 Consul 作为 DCS
zookeeper
kazoo 模块,用于将 Zookeeper 作为 DCS
exhibitor
kazoo 模块,用于将 Exhibitor 作为 DCS(与 Zookeeper 依赖相同)
kubernetes
kubernetes 模块,用于在 Patroni 中将 Kubernetes 作为 DCS
raft
pysyncobj 模块,用于将 Python Raft 实现作为 DCS
aws
boto3,用于支持 AWS 回调
jsonlogger
python-json-logger 模块,用于开启 JSON 格式的 日志记录
systemd
systemd-python,用于支持 sd_notify 集成
all
以上所有选项(psycopg 系列除外)
psycopg3
psycopg\[binary\]\>=3.0.0 模块
psycopg2
psycopg2\>=2.5.4 模块
psycopg2-binary
psycopg2-binary 模块

例如,以下命令将同时安装 Patroni、psycopg3、Etcd DCS 依赖以及 AWS 回调支持:

pip install patroni[psycopg3,etcd3,aws]

请注意,用于创建从库或自定义引导脚本的外部工具(如 WAL-E)需要独立于 Patroni 单独安装。


在 Linux 上通过包管理器安装

PostgreSQL 社区为以下操作系统提供了 Patroni 软件包:

  • RHEL、RockyLinux、AlmaLinux;
  • Debian 和 Ubuntu;
  • SUSE Enterprise Linux。

您也可以在这里找到 Patroni 直接依赖项(如官方 OS 仓库中未收录的 Python 模块)的软件包。

更多信息请参阅 PGDG 仓库 文档。

如果您使用的是 RedHat Enterprise Linux 衍生发行版,可能还需要 EPEL 中的软件包,请参阅 EPEL 仓库 文档。

为您的 OS 添加 PGDG 仓库后,即可安装 Patroni。

在 Debian 衍生发行版上安装

安装 PGDG 仓库(参见 上文)后,通过 apt 安装 Patroni:

apt-get install patroni

在 RedHat 衍生发行版上安装

安装 PGDG 仓库(参见 上文)后,在 RHEL 9(及其衍生版)上通过 dnf 安装 Patroni 和 etcd DCS:

dnf install patroni patroni-etcd

若您的 RedHat 衍生发行版未提供 etcd 软件包,可从 PGDG 安装。在承载 DCS 的节点上执行:

dnf install 'dnf-command(config-manager)'
dnf config-manager --enable pgdg-rhel9-extras
dnf install etcd

如需适配 RHEL 8,将仓库名中的版本号替换为 8 即可,即 pgdg-rhel8-extras。在 RockyLinux、AlmaLinux、Oracle Linux 等发行版上,仓库名仍为 pgdg-rhelN-extras

在 SUSE Enterprise Linux 上安装

部分依赖可能需要启用 SUSE PackageHub 仓库,请参阅 SUSE PackageHub 文档。

在已安装 PGDG 仓库(参见 上文)的 SLES 15 上,可通过以下命令安装 Patroni:

zypper install patroni patroni-etcd

启用 SUSE PackageHub 仓库后,还可安装 etcd:

SUSEConnect -p PackageHub/15.5/x86_64
zypper install etcd

升级

升级 Patroni 非常简单:更新软件包后,在集群每个节点上重启 Patroni 守护进程即可。

但请注意,重启 Patroni 守护进程会导致 PostgreSQL 数据库重启。在某些情况下,这可能触发主库的故障转移。因此,建议在重启 Patroni 守护进程之前,先将集群置于维护模式。

在任意一个 Patroni 节点上执行以下命令,将集群切换至维护模式:

patronictl pause --wait

然后在集群的每个节点上执行对应 OS 所需的软件包升级操作:

apt-get update && apt-get install patroni patroni-etcd

在每个节点上重启 Patroni 守护进程:

systemctl restart patroni

最后,恢复 Patroni 对 PostgreSQL 的监控,退出维护模式:

patronictl resume --wait

至此,集群已使用新版 Patroni 恢复完整运行。


最后修改 2026-03-02: polish patroni docs (a8f3057)