安装
原始页面: 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,您需要自行选择安装方式。
可选方案如下:
- 使用发行版自带的包管理器:
sudo apt-get install python3-psycopg2 # 在 Debian/Ubuntu 上安装 psycopg2 模块
sudo yum install python3-psycopg2 # 在 RedHat/Fedora/CentOS 上安装 psycopg2
- 在通过 pip 安装 Patroni 时,在 依赖列表 中指定
psycopg、psycopg2或psycopg2-binary之一。
通过 pip 安装
Patroni 可以通过 pip 安装:
pip install patroni[dependencies]
其中 dependencies 可以为空,也可以是以下一个或多个选项的组合:
etcd或etcd3python-etcd模块,用于将 Etcd 作为分布式配置存储(DCS)consulpy-consul模块,用于将 Consul 作为 DCSzookeeperkazoo模块,用于将 Zookeeper 作为 DCSexhibitorkazoo模块,用于将 Exhibitor 作为 DCS(与 Zookeeper 依赖相同)kubernetes- kubernetes 模块,用于在 Patroni 中将 Kubernetes 作为 DCS
raftpysyncobj模块,用于将 Python Raft 实现作为 DCSawsboto3,用于支持 AWS 回调jsonloggerpython-json-logger模块,用于开启 JSON 格式的 日志记录systemdsystemd-python,用于支持 sd_notify 集成all- 以上所有选项(psycopg 系列除外)
psycopg3psycopg\[binary\]\>=3.0.0模块psycopg2psycopg2\>=2.5.4模块psycopg2-binarypsycopg2-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。
Patroni 软件包并非由 Patroni 开发团队维护,而是由 PostgreSQL 社区负责维护。如需支持,请优先在 Postgres Slack 上寻求帮助。
在 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 恢复完整运行。