PIGSTY

最新版本

Pigsty 最新的稳定版本 v3.6

v3.6.0

发布注记:https://github.com/pgsty/pigsty/releases/tag/v3.6.0

curl https://repo.pigsty.cc/get | bash -s v3.6.0

亮点特性

  • 全新文档站: https://doc.pgsty.com
  • 新增 pgsql-pitr 剧本与备份/恢复教程,改善 PITR 体验,
  • 新增内核支持:Percona PG TDE (PG17)
  • 优化 Supabase 自建体验,更新至最新版本,并解决了一系列官方模板的问题
  • 简化安装步骤,默认使用在线安装,更加高效简单,bootstrap 过程(安装ansible)嵌入安装脚本中

设计改进

  • 改善了 Etcd 模块的实现,新增独立的 etcd-rm.yml 剧本与扩缩容 SOP 脚本。
  • 改善了 MinIO 模块的实现,支持 HTTP 模式,创建不同属性的三个桶供开箱即用
  • 重新调整梳理了所有配置模板,使用更为便利
  • 针对中国大陆使用速度更快的 Docker Registry 镜像站
  • 优化了 tuned 操作系统参数模板,针对现代硬件与 NVMe 磁盘优化
  • 新增扩展 pgactive 用于多主复制与亚秒级故障切换
  • 调整 pg_fs_main / pg_fs_backup 默认值,简化文件目录结构设计

问题修复

  • 修复了 pgbouncer 配置文件的错误 by @housei-zzy
  • 修复了 OrioleDB 在 Debian 平台上的问题
  • 修复了 tuned shm 配置参数的问题
  • 离线软件包直接使用 PGDG 源,避免使用断开同步的镜像站点
  • 修复了 IvorySQL libxcrypt 依赖的问题
  • 替换了破损与缓慢的 EPEL 软件仓库站点
  • 修复了 haproxy_enabled 标记位的功能

基础设施软件包更新

新增 Victoria Metrics / Victoria Logs 相关包

  • genai-toolbox 0.9.0 (new)
  • victoriametrics 1.120.0 -> 1.121.0 (重构)
  • vmutils 1.121.0 (重命名 victoria-metrics-utils)
  • grafana-victoriametrics-ds 0.15.1 -> 0.17.0
  • victorialogs 1.24.0 -> 1.25.1 (重构)
  • vslogcli 1.24.0 -> 1.25.1
  • vlagent 1.25.1 (新增)
  • grafana-victorialogs-ds 0.16.3 -> 0.18.1
  • prometheus 3.4.1 -> 3.5.0
  • grafana 12.0.0 -> 12.0.2
  • vector 0.47.0 -> 0.48.0
  • grafana-infinity-ds 3.2.1 -> 3.3.0
  • keepalived_exporter 1.7.0
  • blackbox_exporter 0.26.0 -> 0.27.0
  • redis_exporter 1.72.1 -> 1.77.0
  • rclone 1.69.3 -> 1.70.3

数据库软件包更新

  • PostgreSQL 18 Beta2 更新
  • pg_exporter 1.0.1,更新至最新依赖并提供 Docker 镜像
  • pig 0.6.0,更新了最新扩展与仓库列表,带有 pig install 子命令
  • vip-manager 3.0.0 -> 4.0.0
  • ferretdb 2.2.0 -> 2.3.1
  • dblab 0.32.0 -> 0.33.0
  • duckdb 1.3.1 -> 1.3.2
  • etcd 3.6.1 -> 3.6.3
  • ferretdb 2.2.0 -> 2.4.0
  • juicefs 1.2.3 -> 1.3.0
  • tigerbeetle 0.16.41 -> 0.16.50
  • pev2 1.15.0 -> 1.16.0

PG扩展包更新

  • OrioleDB 1.5 beta12
  • OriolePG 17.11
  • plv8 3.2.3 -> 3.2.4
  • postgresql_anonymizer 2.1.1 -> 2.3.0
  • pgvectorscale 0.7.1 -> 0.8.0
  • wrappers 0.5.0 -> 0.5.3
  • supautils 2.9.1 -> 2.10.0
  • citus 13.0.3 -> 13.1.0
  • timescaledb 2.20.0 -> 2.21.1
  • vchord 0.3.0 -> 0.4.3
  • pgactive 2.1.5 (new)
  • documentdb 0.103.0 -> 0.105.0
  • pg_search 0.17.0

API变更

  • pg_fs_backup:重命名为 pg_fs_backup,默认值为 /data/backups
  • pg_rm_bkup:重命名为 pg_rm_backup,默认值为 true
  • pg_fs_main:现在默认值调整为 /data/postgres
  • nginx_cert_validity:新增参数,用于控制 Nginx 自签名证书的有效期,默认为 397d
  • minio_buckets:默认值调整为创建名为 pgsqlmetadata 的三个桶。
  • minio_users:移除 dba 用户,新增 s3user_metas3user_data 用户,分别对应 metadata 桶。
  • minio_https:新增参数,允许配置 MinIO 使用 HTTP 模式。
  • minio_provision:新增参数,允许跳过 MinIO 置备阶段(跳过桶和用户的创建)。
  • minio_safeguard:新增参数,启用后会在执行 minio-rm.yml 时中止操作。
  • minio_rm_data:新增参数,控制在执行 minio-rm.yml 时是否删除 minio 数据目录。
  • minio_rm_pkg:新增参数,控制在执行 minio-rm.yml 时是否卸载 minio 软件包。
  • etcd_learner:新增参数,允许 etcd 以学习者身份初始化。
  • etcd_rm_data:新增参数,控制在执行 etcd-rm.yml 时是否删除 etcd 数据目录。
  • etcd_rm_pkg:新增参数,控制在执行 etcd-rm.yml 时是否卸载 etcd 软件包。

校验和

ab91bc05c54b88c455bf66533c1d8d43  pigsty-v3.6.0.tgz
cea861e2b4ec7ff5318e1b3c30b470cb  pigsty-pkg-v3.6.0.d12.aarch64.tgz
2f253af87e19550057c0e7fca876d37c  pigsty-pkg-v3.6.0.d12.x86_64.tgz
0158145b9bbf0e4a120b8bfa8b44f857  pigsty-pkg-v3.6.0.el8.aarch64.tgz
07330d687d04d26e7d569c8755426c5a  pigsty-pkg-v3.6.0.el8.x86_64.tgz
311df5a342b39e3288ebb8d14d81e0d1  pigsty-pkg-v3.6.0.el9.aarch64.tgz
92aad54cc1822b06d3e04a870ae14e29  pigsty-pkg-v3.6.0.el9.x86_64.tgz
c4fadf1645c8bbe3e83d5a01497fa9ca  pigsty-pkg-v3.6.0.u22.aarch64.tgz
5477ed6be96f156a43acd740df8a9b9b  pigsty-pkg-v3.6.0.u22.x86_64.tgz
196169afc1be02f93fcc599d42d005ca  pigsty-pkg-v3.6.0.u24.aarch64.tgz
dbe5c1e8a242a62fe6f6e1f6e6b6c281  pigsty-pkg-v3.6.0.u24.x86_64.tgz

Pigsty v3.6:全能PG发行版的关键一步

朋友们,Pigsty v3.6 RC 已经发布了,这个版本经过长达两个月的烤制,即将新鲜出炉。这将是 Pigsty v4.0 之前的最后一个主要版本,进行了许多重构与改进,为终极全能 PostgreSQL 发行版奠定了一个坚实的基础。

在 v3.6 中,针对 PostgreSQL,MinIO,Etcd 的部署任务进行了深度优化与重构,支持了一种全新的 PostgreSQL 内核:Percona PG TDE 内核,带有开箱即用的透明加密功能。 此外,我们还优化了 Supabase 的自建体验,跟进至最新的官方模板,并且解决了一些官方模板中存在的问题。

针对一些用户遇到的实际问题,我们彻底移除了幂等剧本中的 “删库” 功能,剥离为单独的删库剧本。 并且新增了用于执行时间点恢复的 pgsql-pitr 剧本,帮助您傻瓜式地全自动完成 PITR 恢复。

此外,安装流程也进一步进行了简化与加速,从原来的 下载-引导-配置-安装,变为三步走: 下载,配置,安装。而且现在默认使用在线安装,可以跳过本地软件仓库的构建过程。


全新内核支持

最近 Percona (那个专业做 MySQL 服务的公司)的 pg_tde 扩展在经过了几年长跑之后终于正式发布 1.0 GA 版本了。 许多 “企业级” PostgreSQL 发行版都以 “透明加解密” 特性作为一个核心卖点,而 pg_tde 扩展可能是第一个足够成熟的开源透明加密扩展,为开源 PostgreSQL 提供了一个真正意义上的企业级透明加密解决方案。

不过美中不足的是,目前这个扩展需要在打补丁的 PostgreSQL 内核上才能运行 —— 也就是 Percona 的 Postgres 发行版。当然这可难不倒 Pigsty,我们在它们官宣的第二天就支持了这个内核分支。 你只需要两行命令,就可以启用并安装它,并且实用 Pigsty 提供的完整 RDS 能力 —— 监控,高可用,PITR,IaC,等等……

然后, Pigsty 支持的 PostgreSQL 内核数量已经来到了惊人的 10 个。Pigsty 已经成为了 PostgreSQL 发行版的发行版,一个 “元发行版”。


强力扩展更新

除了 Percona 透明加密内核之外,PG 世界中的另一个新秀内核 —— OrioleDB 也发布了 1.5 beta12 版本,Supabase 的 CEO 透露很快就会正式 GA 了。 Pigsty 也在第一时间编译了 OrioleDB 补丁版本的 PG,以及 OrioleDB 扩展。

除此之外,还有一个有趣的扩展 pgactive,这是一个由 AWS 开发并开源的扩展,Jonathan Katz 吹嘘说它解决了亚秒级高可用切换的问题。 这个扩展依赖缺失的 pgfeutils ,编译起来还有点麻烦,所以我也替各位打好开箱即用的二进制包了!而 pigsty 可用的扩展数量也相应来到 423 个。

此外,PG18 beta2,OrioleDB,TimescaleDB,Citus,FerretDB & DocumentDB,DuckDB,ETCD 也都迎来例行版本更新。 另外值得一提的是,现在 Pigsty 的扩展目录也是用 Next 糊的,观感比以前好了很多,新地址在:https://ext.pgsty.com


更好的 Supabase

Pigsty v3.6 提供了更流畅的 Supabase 自建体验。还修复了一些 Supabase 官方模板中的问题,比如,logflare 复制槽不推进的问题, 大量打印错误日志的问题,以及 Studio 无法查看两项 Analytics 日志的问题。

想要自建一套生产级 Supabase 有多简单?只需要以下几行命令就可以完成,更详细的说明请参考 Pigsty 网站上的 Supabase 自建教程。 而且 Pigsty 现在默认使用由 1Panel 提供的的 Docker 镜像站点,在墙内的下载速度更快了。


更好的 PITR

在之前的版本中,Pigsty 提供了一个 pg-pitr 的脚本,用于 “半自动” 辅助用户完成 PITR 恢复。 在这个版本中,我们提供了专用的全自动 pgsql-pitr 剧本,用于执行一键时间点恢复。

Pigsty 会自动为你暂停高可用切换,关闭 PostgreSQL,生成并执行 pgbackrest PITR 恢复命令,到你指定的目标位点。 校验之后重新拉起 PostgreSQL,重新启用高可用切换。你还可以不断快速重试(因为是原地增量),便于找到真正需要恢复的位点。

此外,新的 PITR 剧本还支持了一种新的用例 —— 用户不希望在现有集群上原地进行 PITR (怕影响业务)。 而是希望新启动一个实例(或者摘一个从库下来)执行 PITR 恢复,然后在这个新实例上抽取数据,手工导入到现有集群中。


更好的 ETCD 管理

Pigsty v3.6 中,对 Etcd 模块进行了重构,新增了独立的 etcd-rm.yml 剧本与扩缩容 SOP 脚本。

在此前的版本里面,扩容 etcd / 缩容 etcd 涉及到一系列略显复杂的命令操作。而在这个版本中,一把梭干就完了:

bin/etcd-add              # 创建 etcd 集群,或者刷新现有集群状态
bni/etcd-add 10.10.10.11  # 扩容 etcd 集群,新增一个成员
bni/etcd-rm               # 移除整个 etcd 集群
bni/etcd-add 10.10.10.11  # 将 10.10.10.11 成员从集群中移除

此外, etcd.yml 剧本现在 不再清理现有 ETCD 集群,清理集群的工作现在放在了专门的 roles 与剧本中实现了。

因此,etcd 集群的维护变得更加简单明了,简单易用了。


更好的 MinIO

Pigsty v3.6 对 MinIO 模块进行了重构,新增了 Plain HTTP 模式,并且调整了默认的三个桶与默认用户。

在之前的版本中,Pigsty 默认为 MinIO 启用 HTTPS,这是通过本地 CA 签发自签名证书来实现的,能够避免内网流量窃听。 不过这也会带来一些烦恼,如果 Pigsty 管理节点之外的客户端,比如容器中的客户端,需要信任这个 CA 才能访问 MinIO。

因此在这个版本中,我们新增了一个开关,允许 MinIO 运行在纯 HTTP 模式下。 不过切记,PG 备份工具 pgbackrest 是不接受使用 HTTP 模式的 MinIO 的。 如果你还是要用本地 MinIO 来存储 PG 备份,那么还是需要使用 HTTPS 模式。 只有当你的 MinIO 纯粹是给外部服务用的时候,才适合使用 HTTP 模式。

另一个 MinIO 上的改进是默认桶与权限。之前 Pigsty 会默认为 MinIO 创建三个桶:pgsqlinfraredis, 不过实际用到的只有 pgsql 桶。现在 Pigsty 默认只创建三个桶:pgsqlmetadata,并且为 meta 桶与 data 桶创建了两个新的用户 s3user_metas3user_data。 此外,Pigsty 现在还会为每个定义的桶创建一个同名的策略,拥有对相应桶对完整权限,并分配到三个默认用户上,

通过这样的设计,像 Supabase / Dify 这样的应用就可以直接使用这两个桶了,而不需要再手动创建桶与用户了。


更简单的安装流程

在以前,Pigsty 的安装步骤分为四步:下载,引导,配置,安装。其中 “引导” 这一步指的是解压离线软件包或者配置上游软件仓库,从而安装 Ansible 与依赖的过程。

在 Pigsty v3.6 中,这个步骤被合并到下载中了。当你执行 Pigsty 安装脚本时,它会自动执行 ./bootstrap 脚本,尝试安装 Ansible。

所以你只需要三步就可以完成 Pigsty 的安装了。

curl -fsSL https://repo.pigsty.io/get | bash;
cd ~/pigsty; ./configure; ./install.yml;

在这个版本中,我们还把基本所有的配置模板都调整为 单节点 模式。因此,你可以很方便的选用自己想要的配置模板来快速上手。


跳过本地仓库

在这个版本中,默认的安装策略发生了变化。在以前,Pigsty 都会在安装过程中创建一个本地软仓库,将所有软件包都下载到本地,然后再从本地仓库安装软件包。 现在,绝大多数的配置模板都使用了另一种策略:不再先下载到本地,而是直接从互联网上游安装。

这里有一些非常明显的好处,许多用户反馈的安装报错都在本地 Repo 下载和 Nginx 服务拉起的阶段 —— 例如 el9.aarch64 系统下直接安装 patroni-etcd 是没有问题的。 但如果你尝试先下载再安装 patroni-etcd ,就会因为 PGDG 上游的愚蠢配置错误导致安装失败。 另外,用于提供本地仓库服务的 Nginx 也经常会因为各种安全策略,防火墙配置等问题导致无法正常启动。

另一个显著的好处是,安装速度显著提升,因为只有真正需要安装的包才会被下载安装,而不是一次性下载所有包。

一个明显的洞察是,大比例的用户安装 Pigsty 是在一台 Linux 单节点上,“不需要” 本地软件仓库提供的多节点一致性。 而需要本地软件仓库的用户,使用多节点高可用安装模式也可以通过简单的配置(repo_enabled, node_repo_modules)重新启用本地仓库。 或者直接使用默认就启用本地仓库的 rich / full 模板。


其他改进

在 Pigsty v3.6 中,我们还对很久没有更新的 tuned 模块进行了优化,针对现代硬件与 NVMe 磁盘进行了优化。 移除了一些过时的配置参数,并且新增了针对 NVMe / 虚拟化 SSD 的调度/预读参数优化。

另外,我还把 Google 新发布的 MCP Toolbox (数据库 MCP 工具箱)给打包整合到 Pigsty 中了。 这种预置模板 SQL 的方式解决了一部分数据库安全性的问题,应该可以在一些场景中试点使用。


全新的网站

另一个有趣的更新是 Pigsty 的文档站点,正如《数据库老司机勇闯前端大观园》所说,Pigsty 现在有了一个全新的文档站点:https://doc.pgsty.com。

这个站点是用 Next.js 与 Fumadocs 现代前端技术栈打造的。来自兰天游老板和 Claude Code 的强力助攻,糊出了一个像模像样的现代文档站点。

这个文档站点使用英文作为默认语言,目前已经基本完工,中文部分正在翻译建设中。如果有感兴趣的朋友可以直接在 Github 上 PR 或者提 Issue。


下一步是什么?

PostgreSQL 18 将于今年 9 月份发布,Pigsty 准备在 PG 18 发布后正式发布 v4.0 版本。 v4.0 版本主要计划有以下几个方面的改进:

  • 命令行工具 pig 完整封装 Ansible 剧本功能,接口初步定型
  • 监控系统全面升级,使用 VictoriaMetrics / VictoriaLogs 替代 Prometheus / Loki
  • 使用 vector 替代过时的 promtail 作为日志收集组件
  • 考虑使用 Caddy 替代 Nginx 作为网站门户,但还没决定

Pigsty v4 最大的改动就是日志收集部分,在数据库模块上的调整目前已经在 v3.6 完成了。

另一个目标是等新版的英文文档站足够成熟,我也准备在海外开始进行一些宣传与推广了。 目前来看,生态对 PostgreSQL 的需求非常旺盛,这是个极好的机会,抢占 PostgreSQL 中的 Debian / Ubuntu 发行版的生态位。

v4.x 的主旋律将会是 DBA Agent。 Pigsty 已经拥有了一个 DBA Agent 所需的完整上下文,核心就是这个 PG 最强监控系统。 等文档中沉淀的领域知识足够丰富,给 Pig 命令行工具套上 MCP,一个能打的全自动驾驶数据库 DBA Agent 就诞生了。