Patroni 4.1.5
Patroni 4.1.5 中文文档
Patroni PostgreSQL 高可用模板,v4.1.5 中文文档
在内存受限的系统上运行 Python 3.11+ 版本的 Patroni
如果系统设置了严格的内存限制,例如启用 PostgreSQL 推荐的 vm.overcommit_memory=2,并使用 Python 3.11 或更高版本,可能出现以下异常:
- Patroni 表面上保持健康;
- PostgreSQL 继续运行;
- Patroni REST API 失去响应;
- 操作系统仍显示 Patroni 正在监听 REST API 端口;
- Patroni 日志看似正常,但可能短暂出现
Exception ignored in thread started by: <object repr() failed>、MemoryError; - 内核日志可能出现
not enough memory for the allocation等消息。
该行为源于 Python 3.11+ 的缺陷 :在严格的内存约束下,如果可用内存不足,启动新线程可能会无限期挂起。
推荐方案
Patroni 4.1.1+ 与 4.0.8+ 会在启动早期、系统尚未承受内存压力时创建所需线程,从而降低该问题的影响。
其他建议(Linux、glibc)
使用 vm.overcommit_memory=2 时,建议通过以下环境变量启动 Patroni:
MALLOC_ARENA_MAX=1:减少 glibc 为多线程应用分配的虚拟内存;PG_MALLOC_ARENA_MAX=:为 Patroni 启动的 PostgreSQL 进程清除MALLOC_ARENA_MAX。
还可以调整以下 Patroni 参数:
thread_stack_size:Patroni 线程栈大小。调低可减少 Patroni 的内存用量;默认值为512kB。仅在线程栈相关崩溃时才建议调高;thread_pool_size:异步任务以及领导者竞选或故障安全检查期间 REST API 通信所用的线程池大小,默认值5足以满足三节点集群;restapi.thread_pool_size:处理 REST API 请求的线程池大小,默认值5。涉及 SQL 查询的请求会因为共用一个数据库连接而实际串行执行,因此调高该值通常没有收益。
Patroni 是一个基于 Python 的 PostgreSQL 高可用(HA)解决方案模板。为了最大程度地兼容各种环境,Patroni 支持多种分布式配置存储后端,包括 ZooKeeper 、etcd 、Consul 和 Kubernetes 。希望在数据中心或任何其他环境中快速部署 PostgreSQL 高可用的数据库工程师、DBA、DevOps 工程师和 SRE 们,都能从中受益。
我们将 Patroni 称为"模板",是因为它远非一套放之四海而皆准的即插即用复制系统,使用时需要结合实际情况量力而行。实现 PostgreSQL 高可用的方案有很多,详情可参阅 PostgreSQL 文档 。
目前支持的 PostgreSQL 版本:9.3 至 18。
Citus 用户注意:从 3.0 版本起,Patroni 已与 PostgreSQL 扩展 Citus 深度集成。如需了解如何将 Patroni 高可用与 Citus 分布式集群结合使用,请参阅文档中的 Citus 支持页面 。
Kubernetes 用户注意:Patroni 可原生运行在 Kubernetes 之上。请参阅文档中的 Kubernetes 章节。
Patroni 简介、快速上手以及高可用核心概念。
在各支持平台上安装和升级 Patroni 的详细说明。
Patroni 配置模型、优先级规则与验证工具。
Patroni REST API 端点与操作行为参考。
patronictl 的配置说明、语法参考与子命令完整参考。
从库镜像、引导及自定义从库创建工作流。
Patroni 管理的异步与同步复制模式。
备用集群的搭建、行为及从远程主库复制的说明。
Patroni 集群的 watchdog 集成与隔离(fencing)注意事项。
Patroni 集群管理中的暂停与恢复模式行为说明。
DCS 故障安全模式的行为机制、启用条件与操作注意事项。
结合 Kubernetes 对象、标签和服务发现使用 Patroni。
Patroni 与 Citus 协调节点及工作节点组的集成详情。
将现有 PostgreSQL 数据迁移并转换为 Patroni 集群的操作步骤。
Patroni 与外部备份及编排工具的集成方法。
DCS、REST API 及凭据处理的安全注意事项。
基于 Patroni 复制的多数据中心高可用架构模式。
关于 Patroni 运维与故障排查的常见问题解答。
Patroni 各版本发布说明与变更历史。
贡献工作流程、支持渠道与开发指南。
来源与许可
文档取自 pig.center · 上游文档
- 版本
- 4.1.5
- 许可
- MIT
- 来源修订
d7e5839711c06b72e00f8d20abb0792c8ee0e1bcd872812599bc9769f4d6e932- 译文修订
d7e5839711c06b72e00f8d20abb0792c8ee0e1bcd872812599bc9769f4d6e932