发布注记

Pigsty 历史版本发布说明

Pigsty 当前文档对应版本为 v4.4.0

版本发布日期摘要发布页面
v4.4.02026-07-01531 扩展,PG 19beta 支持,PG/OS 小版本更新,压缩改进,pig 命令行改进v4.4.0
v4.3.02026-05-01510 扩展,Infra / PGSQL / 内核包批量更新,Ubuntu 26 支持v4.3.0
v4.2.22026-03-23Insforge 应用自建,Infra 包批量更新,新增 pdu,pgdog,tigerfsv4.2.2
v4.2.12026-03-06移除 PG13 支持,新增扩展,问题修复v4.2.1
v4.2.02026-02-28例行小版本更新,六大 PG 内核集中更新v4.2.0
v4.1.02026-02-12大小版本更新支持,Agent-Native CLI,默认防火墙安全策略收紧v4.1.0
v4.0.02026-01-28Victoria 可观测性,安全加固,JUICE/VIBE 模块,容器支持,Apache-2.0v4.0.0
v3.7.02025-12-02PG18 成为默认,437 个扩展,EL10 与 Debian13 支持,PGEXT.CLOUDv3.7.0
v3.6.12025-08-15例行 PG 小版本更新,PGDG 中国区域镜像,EL9,D13 存根v3.6.1
v3.6.02025-07-30pgactive,MinIO / ETCD 改进,安装简化,配置梳理v3.6.0
v3.5.02025-06-16PG18 beta,421 扩展,监控升级,代码重构v3.5.0
v3.4.12025-04-05OpenHalo & OrioleDB,MySQL 兼容,pgAdmin 改进v3.4.1
v3.4.02025-03-30备份改进,自动证书,AGE,Ivory 全平台,本地化,架构与参数改进v3.4.0
v3.3.02025-02-24404 扩展,扩展目录,App 剧本,Nginx 定制,DocumentDB 支持v3.3.0
v3.2.22025-01-23390扩展,Omnigres 支持,Mooncake,Citus13 与 PG17 支持v3.2.2
v3.2.12025-01-12350扩展,Ivory4,Citus 强化,Odoo 模板v3.2.1
v3.2.02024-12-24扩展管理 CLI,Grafana 强化,ARM64 扩展补完v3.2.0
v3.1.02024-11-24PG 17 升默认大版本,配置简化,Ubuntu24 与 ARM 支持,Supabase,MinIO 改进v3.1.0
v3.0.42024-10-30PG 17 扩展,OLAP 全家桶,pg_duckdbv3.0.4
v3.0.32024-09-27PostgreSQL 17,Etcd 运维优化,IvorySQL 3.4,PostGIS 3.5v3.0.3
v3.0.22024-09-07精简安装模式,PolarDB 15支持,监控视图更新v3.0.2
v3.0.12024-08-31例行问题修复,Patroni 4支持,Oracle 兼容性改进v3.0.1
v3.0.02024-08-25333个扩展插件,可插拔内核,MSSQL,Oracle,PolarDB 兼容性v3.0.0
v2.7.02024-05-20扩展大爆炸,新增20+强力扩展插件,与多款 Docker 应用v2.7.0
v2.6.02024-02-28PG 16 作为默认大版本,引入 ParadeDB 与 DuckDB 等扩展v2.6.0
v2.5.12023-12-01例行小版本更新,PG16 重要扩展支持v2.5.1
v2.5.02023-09-24Ubuntu/Debian 支持:bullseye, bookworm, jammy, focalv2.5.0
v2.4.12023-09-24Supabase/PostgresML 支持与各种新扩展:graphql, jwt, pg_net, vaultv2.4.1
v2.4.02023-09-14PG16,监控 RDS,服务咨询支持,新扩展:中文分词全文检索/图/HTTP/嵌入等v2.4.0
v2.3.12023-09-01带 HNSW 的 PGVector,PG 16 RC1, 文档翻新,中文文档,例行问题修复v2.3.1
v2.3.02023-08-20主机 VIP, ferretdb, nocodb, MySQL 存根,CVE 修复v2.3.0
v2.2.02023-08-04仪表盘 & 置备重做,UOS 兼容性v2.2.0
v2.1.02023-06-10支持 PostgreSQL 12 ~ 16betav2.1.0
v2.0.22023-03-31新增 pgvector 支持,修复 MinIO CVEv2.0.2
v2.0.12023-03-21v2 错误修复,安全增强,升级 Grafana 版本v2.0.1
v2.0.02023-02-28架构大升级,兼容性、安全性、可维护性显著增强v2.0.0
v1.5.12022-06-18Grafana 安全性修复v1.5.1
v1.5.02022-05-31Docker 应用程序支持v1.5.0
v1.4.12022-04-20错误修复 & 英文文档完整翻译v1.4.1
v1.4.02022-03-31MatrixDB 支持,分离 INFRA/NODES/PGSQL/REDIS 模块v1.4.0
v1.3.02021-11-30PGCAT 重整 & PGSQL 增强 & Redis Beta 支持v1.3.0
v1.2.02021-11-03默认 PGSQL 版本升级至 14v1.2.0
v1.1.02021-10-12主页,JupyterLab, PGWEB, Pev2 & pgbadgerv1.1.0
v1.0.02021-07-26v1 正式版,监控系统重整v1.0.0
v0.9.02021-04-04Pigsty 图形界面,命令行界面,日志集成v0.9.0
v0.8.02021-03-28服务置备,定制对外暴露的数据库服务v0.8.0
v0.7.02021-03-01仅监控部署,监控现有 PostgreSQL 实例v0.7.0
v0.6.02021-02-19架构增强,将 PG 与 Consul 解耦v0.6.0
v0.5.02021-01-07支持在配置中定义业务数据库/用户v0.5.0
v0.4.02020-12-14支持 PostgreSQL 13,添加官方文档v0.4.0
v0.3.02020-10-22虚拟机置备方案正式定稿v0.3.0
v0.2.02020-07-10PG 监控系统第六版正式发布v0.2.0
v0.1.02020-06-20在生产仿真测试环境中验证通过v0.1.0
v0.0.52020-08-19离线安装模式:无需互联网访问即可交付v0.0.5
v0.0.42020-07-27将 Ansible 剧本重构为 Rolev0.0.4
v0.0.32020-06-22接口设计改进v0.0.3
v0.0.22020-04-30首次提交v0.0.2
v0.0.12019-05-15概念原型v0.0.1

v4.4.0 (WIP)

v4.4.0 (WIP)

Pigsty v4.4.0 是一次围绕 PostgreSQL 18.4 / 19 beta、内核叉包、扩展目录、平台矩阵与生产可运维性的维护型版本。 相比 v4.3.0,本版本将可用 PostgreSQL 扩展数量从 510 提升到 531,新增 PostgreSQL 19 beta 配置模板。

亮点特性

  • PostgreSQL 18.4 / 19 beta:默认包图谱更新到 PostgreSQL 18.4 相关版本,并新增 PostgreSQL 19 beta1 试用模板 pg19.yml。PG19 模板接入 PGDG beta 仓库,使用最小运行时包集,并默认关闭 pgBackRest 与扩展包安装,避免把 beta 阶段能力误作为生产默认能力。
  • 扩展目录更新到 531 个:新增约 21 个 PostgreSQL 扩展,总可用数量达到 531 个;同步刷新 PG 14-18 的扩展包映射,并显著完善 Ubuntu 26 与 EL10 的可用扩展和仓库配置。
  • 内核叉包集中更新:OrioleDB 默认更新到 PG18 并支持 PG16/17/18;AgensGraph 更新到 PG17;Babelfish 模板覆盖 PG17/18;IvorySQL 进入 5.x;pgEdge 扩展到 PG15-18;Cloudberry 子包与安装前缀统一到 /usr/cloudberry;PolarDB 包路径调整为 /usr/polar-$v;移除 PolarDB-O 支持存根。
  • VIP 自动选择网卡vip_interfacepg_vip_interface 默认值改为 auto,部署时根据节点主 IP 自动解析实际网卡,Node VIP 与 PG VIP 不再要求手工填写 eth0 / eth1
  • 默认压缩策略调整:PostgreSQL 15+ 模板默认启用 wal_compression=lz4,pgBackRest 默认压缩算法从 lz4 切换为 zst#744
  • Patroni 日志回归文件采集:Patroni 日志从 syslog 采集改回本地 /pg/log/patroni 文件采集,Vector 使用独立 job=patroni,Grafana PostgreSQL / Patroni 仪表盘同步更新日志查询与跳转。
  • VIBE 模块添加 Codex:默认 Agent Runtime 面向 Codex,新增 Codex CLI 安装路径,CLAUDE.md 改为指向 AGENTS.md,并提供面向生产数据库环境的操作安全边界说明。
  • 应用模板更新:新增 Immich 自建照片相册模板,JumpServer 模板,Supabase 自建模板同步到 2026-06 组件线并使用独立的 _supabase 作为分析库。

问题修复

  • 修复 EL10 AppStream 仓库引入 PostgreSQL / libpq 同名包后与 PGDG / Pigsty 包产生 provider 冲突的问题。
  • 修复 EL10 EPEL 仓库路径处理,使用 10z 风格 releasever,并收紧 EL9.6+ / EL10 的 PGDG 小版本路径规则。#752
  • /www 目录已经存在时,bootstrap 与 repo 任务现在会保留并直接使用现有目录,不再强制搬移或软链接覆盖。 #753
  • 修复 Redis Sentinel HA auth 渲染时的密码拼接问题。 #748
  • 对齐 pg_httppg_gzipapache-age 的 RPM 包名规则,使其与 PGDG / Pigsty 仓库一致。 #750
  • 修复 Debian / Ubuntu policy-rc.d--quiet.service 与模板化 systemd unit 名称处理不完整的问题,避免包安装或升级阶段误启动 PostgreSQL、Patroni、Vector 等服务。
  • 改进 EL9 aarch64 PGDG Patroni 包名特殊处理逻辑,不再依赖写死版本。
  • 修复 VirtualBox 私有网络路由配置,改善本地 Vagrant / VirtualBox 默认网卡行为。
  • io_workers 参数现在只在 PG18 模板中渲染,避免 PG19 beta 配置误用不再适用的 GUC。
  • 加固 node / pglog profile 脚本,避免在 sh、dash、POSIX bash 或非交互 shell 中执行 bash-only 逻辑并产生异常输出。

设计变动与兼容性提示

  • pgbackrest.conf 默认压缩从 compress-type=lz4 改为 compress-type=zst。已有集群如果依赖 lz4 压缩策略,需要在配置中显式覆盖。
  • vip_interfacepg_vip_interface 默认值改为 auto。大多数部署可以减少配置,但多网卡、策略路由或非标准网络环境仍建议显式指定接口并先执行 --check
  • Patroni 日志查询条件从 job=syslog app=patroni 改为 job=patroni。自定义 VictoriaLogs 查询、Grafana 面板或告警规则如果硬编码旧条件,需要同步调整。
  • dbsu 的有限 sudo 权限新增受控 journalctl 日志查看能力,便于排查 PostgreSQL、Patroni、pgBackRest、PgBouncer、VIP 等组件。
  • EL 9/10 当前固定在 9.7 / 10.1 基线,并显式排除 AppStream PostgreSQL / libpq 包,规避上游包生态冲突。
  • PostgreSQL 19 模板仍是 beta 试用模板,不应视为完整生产模板;pgBackRest 尚未针对 PG 19 提供支持,也不安装扩展包。
  • dnsmasq 用于存放解析记录的目录从 /data/infra/hosts 调整为 /etc/dnsmasq.d/pigsty

PostgreSQL 与扩展包变更汇总

包名旧版本新版本备注
polardb-1717.9.1.017.10.1.0PG 17;RPM 补齐
agensgraph-172.16.02.17.0PG 17.10
openhalodb-141.0-beta1.0-2OpenHaloDB
babelfish-175.4.05.4.0PG 17.7,重构建
babelfish-18新增6.0.0PG 18.3
pgedge新增 / 17.9 / 18.315.18 / 16.14 / 17.10 / 18.4PG 15-18;15/16 新增;Spock 5.0.10
ivorysql-185.05.4PG 18;RPM 补齐
cloudberry2.1.0-12.1.0-2 / 2.1.0-3DEB/RPM 重构建;RPM 路径 /usr/cloudberry
cloudberry-backup2.1.0-12.1.0-2 / 2.1.0-3backup 子包
cloudberry-pxf2.1.0-12.1.0-2 / 2.1.0-3PXF 子包
pg_ducklake新增1.0.0新增,PG 14-18
psql_bm25s新增0.4.13新增,BM25 检索,PG 17-18,RPM only
mongo_fdw新增5.5.3新增,PG 14-18,DEB only
multicorn新增3.2新增,PG 14-18,DEB only
pg_orca新增1.0.0新增,PG 18 only
pg_sorted_heap新增0.14.0新增,PG 16-18
pg_stl新增1.0.0新增,PG 16-18
fsm_core新增1.1.0新增,PG 15-18
pg_projection新增1.0.0新增,PG 14-18
pg_task新增2.1.29新增,PG 14-18,pcre2grep 修复
pg_stat_backtrace新增1.0.0新增,PG 14-18,libunwind
pg_mockable新增1.1.0新增,PG 14-18
db2fce新增0.0.17新增,PG 14-18,RPM only
pg_uuid_v8新增1.0.0新增,PG 14-18
pg_extra_time新增2.1.0新增,PG 14-18
pg_pinyin新增0.0.4新增,PG 14-18
passwordpolicy新增2.0.5新增,PG 14-18,DEB only
pgdisablelogerror新增1.0新增,PG 14-18,DEB only
plpgsql_wrap新增1.0新增,PG 14-18,DEB only
timescaledb2.26.42.28.2PG 15-18
documentdb0.1100.113PG 15-18
citus14.0.0-414.1.0PG 16-18
pgvector0.8.20.8.4PG 14-18
orioledb1.7-beta151.8-beta16PG 16-18 构建
pg_search0.23.10.24.0PG 15-18
pg_textsearch1.1.01.2.0BM25 全文检索,PG 17-18,RPM only
storage_engine1.3.42.4.0PGXN 2.x,PG 15-18
pg_clickhouse0.2.00.3.2PGXN 更新,ClickHouse 集成
provsql1.2.31.10.0PGXN 更新,PG 14-18
pgclone4.0.04.3.2PGXN 更新,PG 14-18
biscuit2.2.22.4.1PG 16-18
pgmnemo0.7.20.12.1PG 14-18
rdf_fdw2.5.02.6.0PG 14-18,libcurl 兼容补丁
roaringbitmap1.1.01.2.0-2PG 14-18,llvm-lto 打包修复
plpgsql_check2.9.02.9.2PG 14-18
timescaledb_toolkit1.22.01.23.0PG 15-18,pgrx 0.18.1
wrappers0.6.00.6.1PG 14-18,pgrx 0.18.1
pgrdf0.5.00.6.4PG 14-17,pgrx 0.18.1
pg_graphql1.5.121.6.1PG 14-18,pgrx 0.18.1
pg_anon3.0.133.1.1PG 14-18,pgrx 0.18.1
pg_kazsearch2.0.02.2.0PG 16-18,pgrx 0.18.1
pg_session_jwt0.4.00.5.0PG 14-18,pgrx 0.18.1
pg_tzf0.2.40.3.0PG 14-18,pgrx 0.18.1
pg_vectorize0.26.10.26.2PG 14-18,pgrx 0.18.1
pglinter1.1.22.0.0PG 14-18,pgrx 0.18.1
pgmqtt0.1.00.3.0PG 14-18,pgrx 0.18.1
etcd_fdw0.0.00.0.1PG 14-18,pgrx 0.18.1
pg_http1.7.01.7.1PG 14-18,RPM 改名为 pgsql_http_$v
pg_gzip1.0.01.1.0PG 14-18,RPM 改名为 pgsql_gzip_$v
age1.7.01.7.0PG 17-18,RPM 改名为 age_$v
pg_trickle0.40.00.81.0PG 18 only
re20.1.10.3.0PG 16-18
pg_background1.9.22.0PG 14-18
firebird_fdw1.4.11.4.2PG 14-18
pg_net0.20.20.20.3PG 14-18,EL10 only
pg_dirtyread2.72.8PG 14-18,RPM only
pg_stat_ch0.3.60.3.6PG 16-18,EL9/EL10 only,重建
pggraph0.1.50.1.7PG 14-18
pgsql_tweaks1.0.21.0.3PG 14-18
pgfincore1.3.11.4.0PG 14-18,RPM only
toastinfo1.51.7PG 14-18,RPM only
pg_ivm1.141.15PG 14-18,DEB only
timeseries0.2.00.2.1PG 14-18

基础设施软件包更新

名称旧版本新版本备注
pig1.4.11.5.1Pigsty 4.4.0,531 个扩展;pgrx 0.18.1
pg_exporter1.2.21.3.0
pgschema1.9.01.12.0
pgstream1.0.11.1.1
pg-hardstorage新增1.0.8
codex0.125.00.144.1发布标签 rust-v0.144.1
claude2.1.1232.1.206通过 8118 代理下载并核验
opencode1.14.301.17.18
agentsview0.26.00.37.5上游迁移到 kenn-io/agentsview
genai-toolbox1.1.01.6.0外部构建产物,包名为 mcp-toolbox
crush0.64.00.84.0直链构建产物更新
code1.118.11.128.0直链构建产物更新
code-server4.117.04.127.0直链构建产物更新
victoria-metrics1.142.01.147.0VictoriaMetrics 主包
victoria-metrics-cluster1.142.01.147.0VictoriaMetrics 配套组件
vmutils1.142.01.147.0VictoriaMetrics 配套组件
victoria-logs1.50.01.51.0VictoriaLogs 主包
vlagent1.50.01.51.0VictoriaLogs 配套组件
vlogscli1.50.01.51.0VictoriaLogs 配套组件
victoria-traces0.8.20.9.4
prometheus3.11.33.13.1
alertmanager0.32.10.33.1
pushgateway1.11.21.11.3
node_exporter1.11.11.11.1补齐 tarball 缓存;修正版本元信息
redis_exporter1.82.01.86.0
mongodb_exporter0.50.00.51.0
grafana13.0.113.1.0直链构建产物更新
grafana-victorialogs-ds0.26.30.29.0
grafana-victoriametrics-ds0.24.00.25.2
vector0.55.00.56.0
minio2026041700000020260618000000
seaweedfs4.224.39
rustfs1.0.0-b11.0.0-b8预发布版本线
duckdb1.5.21.5.4
kafka4.2.04.3.1
etcd3.6.103.6.13
restic0.18.10.19.1
juicefs1.3.11.4.0
tigerbeetle0.17.20.17.9
tigerfs0.6.00.7.0
caddy2.11.22.11.4
cloudflared2026.2.02026.7.1直链构建产物更新
headscale0.28.00.29.2
v2ray5.48.05.51.2
nodejs24.15.024.18.0保持在 24.x 策略线
golang1.26.21.26.5
hugo0.161.10.164.0
uv0.11.80.11.28
rclone1.73.51.74.4直链构建产物更新
asciinema3.2.03.2.1
stalwart0.16.20.16.12
maddy0.9.30.9.5
dblab0.38.00.43.0
npgsqlrest3.12.03.20.0
postgrest14.1014.14
sabiql1.11.11.14.0
pev21.21.01.22.0
rainfrog0.3.180.3.19

校验和

7de8b932412f1863fd9c033a7be355d7  pigsty-pkg-v4.4.0.d12.aarch64.tgz
2e5006a8d35eb1c087dc0ed11cf14d14  pigsty-pkg-v4.4.0.d12.x86_64.tgz
955308c00d3890f6e82a6a83bc624760  pigsty-pkg-v4.4.0.d13.aarch64.tgz
350f31c66de0aafff3bd91c2c9d740a0  pigsty-pkg-v4.4.0.d13.x86_64.tgz
0b4817a8edbab0bdf37ecee730fb0412  pigsty-pkg-v4.4.0.el10.aarch64.tgz
4584a61e4456749e68d86e4817cfe526  pigsty-pkg-v4.4.0.el10.x86_64.tgz
21621daf510a532829c36464d48f9198  pigsty-pkg-v4.4.0.el9.aarch64.tgz
504afd5030e2738a25e1b4c570d0e654  pigsty-pkg-v4.4.0.el9.x86_64.tgz
461c999424dee587ca33fe1a63df40d7  pigsty-pkg-v4.4.0.u22.aarch64.tgz
20ccc5ab8f9f4648b05bcd304f9fb5fc  pigsty-pkg-v4.4.0.u22.x86_64.tgz
d092c48ee55116ed5e2c99a3d909ccdd  pigsty-pkg-v4.4.0.u24.aarch64.tgz
24fa5399d8421305961fcaf91325b382  pigsty-pkg-v4.4.0.u24.x86_64.tgz
36f69b699d8b3041d35384970e157631  pigsty-pkg-v4.4.0.u26.aarch64.tgz
330047d117b20f04317dce506edd5d9a  pigsty-pkg-v4.4.0.u26.x86_64.tgz
3077203c0c656ec99abc32b227f6566b  pigsty-v4.4.0.tgz

v4.3.0

亮点

  • 新增约 50 个 PostgreSQL 扩展,总可用数量达到 510 个
  • 支持 Ubuntu 26.04 x86_64/arm64 新架构,弃用 Ubuntu 20.04 支持;小版本更新至 Debian 13.4 / Ubuntu 24.04.4
  • 内核更新:Supabase 更新至最新版本,pgEdge 更新至 PG 18,PolarDB 更新至 PG 17
  • Grafana 更新至 13.0.1,MinIO 使用修复 CVE 后的 pgsty 分支。
  • vagrant 模板统一切换至 cloud-image 系列镜像。
  • 新增应用模板:immich, jumpserver

问题修复

  • PostgreSQL 用户名校验放宽,允许 @.- 几个字符出现在用户名中。
  • 修复 IPv6 nameserver 解析,避免 DNS 配置只匹配提取 IPv4 的旧 DNS Server。
  • VictoriaTraces Grafana 数据源路径改为 /select/jaeger
  • Vagrant 磁盘探测更稳健,新增 EL vagrant 镜像 guest 网络修复脚本 bin/el-fix。

PostgreSQL 与扩展包变更汇总

包名旧版本新版本备注
block_copy_command-0.1.5新增;PG 14-18;Rust/pgrx 0.17.0
cloudberry2.0.02.1.0内核包组;RPM release 2 修复 initdb errno 问题
cloudberry-backup-2.1.0新增 Cloudberry 备份工具包
cloudberry-pxf-2.1.0新增 Cloudberry PXF 包
credcheck4.64.7升级;PG 14-18;PGDG
datasketches-1.7.0新增;PG 14-18
ddl_historization0.0.70.2升级
documentdb0.1090.110升级到上游版本;PG 15-18
external_file-1.2新增;PG 14-18
logical_ddl-0.1.0新增;PG 14-18
nominatim_fdw1.1.01.2升级
onesparse-1.0.0新增;仅 PG 18
orioledbbeta15 1.7beta15 1.7配套 OriolePG 17.18
oriolepg17.1617.18内核补丁集更新
parray_gin-1.5.0新增后升级;PG 14-18
pg_accumulator-1.1.3新增;PG 14-18
pg_anon3.0.13.0.13升级;Rust/pgrx 0.16.1 -> 0.17.0
pg_background1.81.9.2仅 DEB
pg_bikram_sambat-0.1.0新增;Bikram Sambat 日期类型与 AD/BS 转换函数
pg_byteamagic-0.2.4新增;PG 14-18
pg_cardano1.1.11.2.0升级;Rust/pgrx 0.17.0
pg_clickhouse0.1.50.2.0升级
pg_datasentinel-1.0新增;PG 15-18
pg_dbms_job1.52.0升级;PG 14-18;PGDG
pg_dispatch-0.1.5新增;PG 14-18
pg_failover_slots1.2.01.2.1升级
pg_fsql-1.1.0新增;PG 14-18
pg_incremental1.4.11.5.0升级
pg_isok-1.4.1新增;PG 14-18
pg_ivm1.131.14升级;PG 14-18
pg_kazsearch-2.0.0新增;PG 16-18;Rust/pgrx 0.17.0
pg_liquid-0.1.7新增;PG 14-18
pg_pathcheck-0.9.1新增;PG 17-18;需 shared_preload_libraries
pg_query_rewrite-0.0.5新增;PG 14-18
pg_regresql-2.0.0新增;PG 14-18
pg_rrf-0.0.3新增;PG 14-17;Rust/pgrx 0.16.1 -> 0.17.0
pg_savior0.0.10.1.0升级;高风险 DDL/DML 防护 hook;需 preload 或 LOAD
pg_search0.22.20.23.1升级;PG 15-18;pgrx 0.18.0
pg_slug_gen-1.0.0新增;PG 15-18
pg_stat_ch-0.3.6新增后升级;PG 16-18;EL8 break
pg_store_plans1.91.10升级
pg_strict1.0.31.0.5升级;Rust/pgrx 0.16.1 -> 0.17.0
pg_text_semver-1.2.1新增;PG 14-18
pg_textsearch0.5.01.1.0升级;PG 17-18;需 shared_preload_libraries
pg_trickle0.16.00.40.0升级;仅 PG 18;pgrx 0.18.0
pg_tzf0.2.30.2.4升级;Rust/pgrx 0.17.0
pg_vectorize0.26.00.26.1升级;Rust/pgrx 0.16.1 -> 0.17.0
pg_variables-1.2.5新增;PG 14-18
pg_when-0.1.9新增;PG 14-18;Rust/pgrx 0.17.0
pgxicor0.1.00.1.1升级
pgcalendar-1.1.0新增;PG 14-18
pgclone-4.0.0新增后升级;PG 14-18
pgelog-1.0.2新增;PG 14-18
pglinter1.1.11.1.2升级;Rust/pgrx 0.16.1 -> 0.17.0
pglock-1.0.0新增;PG 14-18
pgmq1.11.01.11.1升级;PG 14-18
pgmqtt-0.1.0新增;PG 14-18;Rust/pgrx 0.16.1 -> 0.17.0
pgproto-0.5.0新增后升级;原生 Protobuf 支持
pghydro-6.6新增;PG 14-18
pgx_ulid0.2.20.2.3升级;Rust/pgrx 0.17.0
plv83.2.43.2.4-2仅 RPM;EL10 构建修复
PolarDB15.1517.9.1.0PG 15 -> 17
postgresbson-2.0.2新增;PG 14-18
postgis3.6.23.6.3仅 DEB
prefix1.2.101.2.11升级;PG 14-18;PGDG
provsql-1.2.3新增;PG 14-18
rdf_fdw-2.5.0新增后升级;PG 14-18
rdkit-202503.6新增;PG 14-18
re2-0.1.1新增;PG 16-18
storage_engine-1.3.4新增后升级;PG 14-18;列式与行压缩表访问方法
supautils3.1.03.2.1升级
system_stats3.24.0升级
timescaledb2.25.22.26.4升级;TSL 小版本更新
ulak-0.0.2新增;PG 14-18
wrappers0.5.70.6.0升级;Rust/pgrx 0.16.1 -> 0.17.0

基础设施软件包更新

包名旧版本新版本备注
alertmanager0.31.10.32.1
agentsview0.15.00.26.0
claude2.1.812.1.123通过 8118 代理下载并核验
code1.112.01.118.1直链元数据更新
code-server4.112.04.117.0直链元数据更新
codex0.116.00.125.0从预发布链收敛到稳定版后继续升级
crush0.51.20.64.0直链元数据更新
dblab0.34.30.38.0
duckdb1.5.01.5.2
etcd3.6.93.6.10统一软件包版本
garage2.2.02.3.0
genai-toolbox0.27.01.1.0上游已更名为 mcp-toolbox
golang1.26.11.26.2
grafana12.4.113.0.1主版本升级后继续刷新元数据
grafana-infinity-ds3.7.43.8.0
grafana-plugins12.3.013.0.0Noarch 插件包,手工归集
grafana-victoriametrics-ds0.23.10.24.0
hugo0.158.00.161.1
maddy0.8.20.9.3
mcli2026032100000020260417000000pgsty 分支,修复 cve
minio2026032500000020260417000000pgsty 分支,修复 cve
mongodb_exporter0.49.00.50.0
node_exporter1.10.21.11.1
nodejs24.14.024.15.0维持在 24.x 策略线
npgsqlrest3.11.13.12.0
opencode1.2.271.14.30改为版本化缓存并重新构建
pg_exporter1.2.11.2.2直链元数据更新
pgflo0.0.15-已移除
pgschema1.7.41.9.0
pig1.3.21.4.1仅更新元信息
postgrest14.714.10
prometheus3.10.03.11.3
rainfrog0.3.170.3.18
rclone1.73.21.73.5直链元数据更新
rustfs1.0.0-alpha.891.0.0-b1预发布版本线
sabiql1.8.21.11.1
seaweedfs4.174.22
sqlcmd1.9.01.10.0
stalwart0.15.50.16.2
tigerbeetle0.16.770.17.2
tigerfs0.5.00.6.0
timescaledb-tools0.18.20.19.0重新构建 timescaledb-tune
uv0.10.120.11.8
victoria-logs1.48.01.50.0主包
victoria-metrics1.138.01.142.0
victoria-metrics-cluster1.138.01.142.0VictoriaMetrics 配套组件
victoria-traces0.8.00.8.2
vip-manager4.0.04.2.0直链元数据更新
vlagent1.48.01.50.0VictoriaLogs 配套组件
vlogscli1.48.01.50.0VictoriaLogs 配套组件
vmutils1.138.01.142.0VictoriaMetrics 配套组件
vector0.54.00.55.0直链元数据更新
v2ray5.47.05.48.0
xray26.2.626.3.27

校验和

58a914fce7bc521b65e167f66e7961a3  pigsty-v4.3.0.tgz
9ce070efb0420057a83c632b2856d1b3  pigsty-pkg-v4.3.0.d12.aarch64.tgz
bf21c36d3aff94a1a6353130597ffa85  pigsty-pkg-v4.3.0.d12.x86_64.tgz
81b4790c4e5567cee9d1beadd06e48e6  pigsty-pkg-v4.3.0.d13.aarch64.tgz
06baab9341ab683eaeea2e066b28a0f4  pigsty-pkg-v4.3.0.d13.x86_64.tgz
fb4bf751df5e09f547c49b8ab7cac9a0  pigsty-pkg-v4.3.0.el10.aarch64.tgz
a3e752c8148122d1eaea74a6d8d8df0d  pigsty-pkg-v4.3.0.el10.x86_64.tgz
cb2a9af36615513e66fd5ac3e9f4d797  pigsty-pkg-v4.3.0.el9.aarch64.tgz
e24641a879dec7a8eea74dab42f85920  pigsty-pkg-v4.3.0.el9.x86_64.tgz
6b675fd8d9e039193481f0838aa4b92c  pigsty-pkg-v4.3.0.u22.aarch64.tgz
c0e344ccb9d190a619591e5d46116424  pigsty-pkg-v4.3.0.u22.x86_64.tgz
3e0ec9534cf595201ec79eb1fc6549d8  pigsty-pkg-v4.3.0.u24.aarch64.tgz
0a3d19513eca9615bdd66a4b2bf66f1d  pigsty-pkg-v4.3.0.u24.x86_64.tgz
683a10ff8fd993358d6befa9f4e02913  pigsty-pkg-v4.3.0.u26.aarch64.tgz
fd1ea5cd5554bfe91fadd51ad80860e3  pigsty-pkg-v4.3.0.u26.x86_64.tgz

v4.2.2

亮点特性

  • Insforge 2.0.1 自建模板
  • Infra 软件包批量更新,MinIO/MCLI 更新至 20260321
  • 新增 infra 软件包:tigerfs, pgstream, sql-studio, rainfog, crush
  • 更新 PG 工具:数据恢复 pdu,连接池 pgdog
  • 更新 PG 扩展:pg_search, pgsentinel, pg_track_optimizer, pgcollection, pg_ttl_index, pg_clickhouse
  • 更新 PG 内核:IvorySQL 5.1 -> 5.3

PostgreSQL 软件包更新

包名旧版本新版本备注
pg_search0.21.120.22.2
pgsentinel1.4.01.4.1仅更新 rpm
pg_track_optimizer0.9.10.9.2
pgcollection1.0.02.0.0
pg_ttl_index2.0.03.0.0
pg_clickhouse0.1.40.1.5
pdu3.0.25.12新增
pgdog0.1.32新增

基础设施软件包更新

名称旧版本新版本备注
grafana12.4.012.4.1
pgbackrest_exporter0.22.00.23.0
redis_exporter1.81.01.82.0
victoria-logs1.47.01.48.0
vlagent1.47.01.48.0
vlogscli1.47.01.48.0
victoria-traces0.7.10.8.0
duckdb1.4.41.5.0
pg_timetable6.2.06.3.0
pgschema1.4.21.7.4
pgstream-1.0.1新增
tigerbeetle0.16.750.16.77
grafana-victorialogs-ds0.26.20.26.3
grafana-infinity-ds3.7.33.7.4
caddy2.11.12.11.2
npgsqlrest3.10.03.11.1
postgrest14.514.7
opencode1.2.171.2.27
pev21.20.21.21.0
golang1.26.01.26.1
vector0.53.00.54.0
rclone1.73.11.73.2
code-server4.109.54.112.0
code1.109.41.112.0
seaweedfs4.154.17
uv0.10.80.10.12
codex0.110.00.116.0
v2ray5.44.15.47.0
sabiql1.6.21.8.2
sql-studio-0.1.51新增
rainfrog-0.3.17新增
agentsview0.10.00.15.0
crush-0.51.2新增
tigerfs-0.5.0新增
victoria-metrics1.137.01.138.0
victoria-metrics-cluster1.137.01.138.0
vmutils1.137.01.138.0
hugo0.157.00.158.0
rustfs1.0.0-alpha.851.0.0-alpha.89
mysqld_exporter0.18.00.19.0
pg_exporter1.2.01.2.1
pig1.3.11.3.2
minio2026021420260321
mcli2026021320260321
claude2.1.682.1.81
ivroysql5.15.3

校验和

0d9f907ff626203578c687d1418b38ba  pigsty-pkg-v4.2.2.d12.aarch64.tgz
4129baf773c3005f4d697cf452f927a0  pigsty-pkg-v4.2.2.d12.x86_64.tgz
40d5a0d9c2a97615bf0421bae42458ae  pigsty-pkg-v4.2.2.d13.aarch64.tgz
cf91113a2296ad11fff79802ac9b1483  pigsty-pkg-v4.2.2.d13.x86_64.tgz
dbccfeb3978ffb928bd0b501c3c0d42d  pigsty-pkg-v4.2.2.el10.aarch64.tgz
8c848a4e3fa93c2455285fbcad5ddd78  pigsty-pkg-v4.2.2.el10.x86_64.tgz
7c15c9a36f7d2dd740019c20e8c75a4b  pigsty-pkg-v4.2.2.el9.aarch64.tgz
7d6e9e529236a0db2382f42660790ed9  pigsty-pkg-v4.2.2.el9.x86_64.tgz
8f64bb14885ce330603172b186062671  pigsty-pkg-v4.2.2.u22.aarch64.tgz
16d4c36c9e1ff848848c34a257b1025c  pigsty-pkg-v4.2.2.u22.x86_64.tgz
401230741af5b04f163ffc8e688315ab  pigsty-pkg-v4.2.2.u24.aarch64.tgz
5312aa0841694fc560778b9377a32c89  pigsty-pkg-v4.2.2.u24.x86_64.tgz
cabeeb898b56b26c0855f33d5e60411a  pigsty-v4.2.2.tgz

v4.2.1

这是一个维护版本,新增了 3 个扩展插件,

主要变更

  • 新增扩展pg_eviltransform 加入 GIS 包组,pg_pinyin 加入 FTS 包组,pg_qos 加入 Admin 包组 —— 均支持 PG 14–18。
  • 移除 PG13:所有平台变体(EL7/8/9/10、Debian 12/13、Ubuntu 22/24,x86_64 与 aarch64)中的 pgdg13pgdg13-nonfree 仓库条目和 PG13 包别名(pg13-*)全部移除。
  • 配置模板(fat.ymlpro.ymldev.ymlel.ymldebian.yml)不再引用 PG13 包或仓库。扩展版本注释更新为仅覆盖 PG 14–18。
  • Percona 仓库:Origin URL 从 ppg-18.1 更新为 ppg-18.3,跟踪最新 Percona PostgreSQL 发行版。
  • Nginx 仓库:Debian/Ubuntu 平台上 Nginx 上游 APT 仓库的模块标签从 infra 修正为 nginx
  • UV Venv 修复roles/node/tasks/pkg.yml 现在会先检查虚拟环境是否已存在,避免重复执行 uv venv 导致的冗余创建或重新置备报错。
  • Docker 镜像:Pigsty Docker 镜像基础包中新增 less
  • Demo 配置el.ymldebian.yml 示例配置的默认防火墙规则新增 5432 端口,支持直接访问 PostgreSQL。

兼容性说明

PostgreSQL 13 已于 2025-11-13 到达生命周期终点。 PGDG YUM 仓库已经归档移除 pg13 / pg12 目录。 如果您在 EL 系统上安装 Pigsty (即使没有使用 PG 13 版本),也有可能因为仓库访问失败而导致安装或更新失败。

您可以选择直接使用 Pigsty v4.2.1,或者手工修改 roles/node_id/vars/ 您对应操作系统 repo_upstream_default 变量,移除仓库定义中的 pg13 一行即可。

此外,EL8 仍然在 Pigsty 的兼容操作系统中,但从此版本开始将不再发布 el8 的离线软件包。

本版本没有其他破坏性 API 或配置变更。

7 个提交,84 文件变更,+4,925 / -5,351 行(v4.2.0..v4.2.1,2026-03-04 ~ 2026-03-06)

PostgreSQL 软件包更新

包名旧版本新版本备注
timescaledb2.25.12.25.2
vchord1.1.01.1.1新增 clang 构建依赖,修复错误
vchord_bm250.3.0-10.3.0-2修复版本注入问题
aggs_for_vecs1.4.01.4.1
pg_search0.21.90.21.12
pg_pinyin-0.0.2新增扩展
pg_eviltransform-0.0.2新增扩展
pg_qos-1.0.0新增扩展,QoS 资源治理

基础设施软件包更新

名称旧版本新版本备注
asciinema3.1.03.2.0
grafana-infinity-ds3.7.23.7.3
victoria-metrics1.136.01.137.0
victoria-metrics-cluster1.136.01.137.0
vmutils1.136.01.137.0
hugo0.155.30.157.0
opencode1.2.151.2.17
rustfs1.0.0-alpha.831.0.0-alpha.85
seaweedfs4.134.15
tigerbeetle0.16.740.16.75
uv0.10.40.10.8
codex0.105.00.110.0
claude2.1.592.1.68
xray-26.2.6新增
gost-2.12.0新增
sabiql-1.6.2新增
agentsview-0.10.0新增

校验和

262b7671424a38b208872582fe835ef8  pigsty-v4.2.1.tgz
62edcca1d1e572a247be018e1c26eda8  pigsty-pkg-v4.2.1.d12.aarch64.tgz
1d55367e2fd9106e6f18b7ee112be736  pigsty-pkg-v4.2.1.d12.x86_64.tgz
f122b1e5ba8a7ae8e3dc6e6dd53eba65  pigsty-pkg-v4.2.1.d13.aarch64.tgz
617a76bfc8df8766e78abf24339152eb  pigsty-pkg-v4.2.1.d13.x86_64.tgz
908509b350403ad1a4a27a88795fee06  pigsty-pkg-v4.2.1.el10.aarch64.tgz
70cb4afd90ed7aea6ab43a264f8eb4a8  pigsty-pkg-v4.2.1.el10.x86_64.tgz
98fbd67334f5c674b12e6af81ef76923  pigsty-pkg-v4.2.1.el9.aarch64.tgz
687fa741ccd9dcf611a2aa964bcf1de8  pigsty-pkg-v4.2.1.el9.x86_64.tgz
a2a30f4b1146b3e79be91d5be57615b6  pigsty-pkg-v4.2.1.u22.aarch64.tgz
7a1f571bd8526106775c175ba728eee1  pigsty-pkg-v4.2.1.u22.x86_64.tgz
a5574071bac1955798265f71ad73c3d4  pigsty-pkg-v4.2.1.u24.aarch64.tgz
59a7632c650a3c034f1fe6cd589d7ab5  pigsty-pkg-v4.2.1.u24.x86_64.tgz

v4.2.0

亮点特性

  • 离线小版本跟进 PostgreSQL 紧急小版本:18.3、17.9、16.13、15.17、14.22。
  • PostgreSQL 扩展总数达到 461 个。
  • PG 内核更新:Babelfish、AgensGraph、pgEdge、OriolePG、OpenHalo、Cloudberry。
  • Babelfish 模板切换到 Pigsty 自建维护的 PG17 兼容版本,移除对 WiltonDB 仓库的依赖。
  • 更新 Supabase 镜像与自建模板至最新版本,使用自行维护的 MinIO 分支 pgsty/minio

主要变更

  • mssql 模板切换到 Babelfish PG17 默认:pg_version: 17pg_packages: [babelfish, pgsql-common, sqlcmd],并移除额外 mssql repo 依赖。
  • pg_home_map 调整:mssql 指向 /usr/babelfish-$v/gpsql 指向 /usr/local/cloudberry,统一内核路径语义。
  • package_map 新增 cloudberry 独立映射,并修复 babelfish* 组件别名到版本化包名(RPM/DEB)。
  • Redis 默认主目录从 /data 调整为 /data/redis;部署阶段阻止旧默认值继续使用,redis_remove 增加旧路径兼容清理。
  • configure 支持 -o 绝对路径输出并自动建目录;区域探测改为三态(境内/境外/离线回退),修复 behind_gfw() 卡住问题。
  • 修复 Debian/Ubuntu 默认仓库 URL(updates/backports/security 对应关系)与中国区镜像组件字段,避免节点初始化拉包失败。
  • Supabase 应用栈例行升级(含 PostgREST 14.5、Vector 0.53.0 等)并补齐 S3 协议访问密钥变量。
  • Rich/Sample 模板显式补全 dbuser_meta 默认值;node.sh 中 systemd 自动补全逻辑简化。
  • pgbackrest 初始化增加重试(2 次、间隔 5 秒),缓解 stanza-createarchive-push 锁竞争失败。
  • Vibe 模板更新:内置 @anthropic-ai/claude-code@openai/codexhappy-coder 等 npm 工具,默认示例补入 age 扩展。

PG 软件更新

  • PostgreSQL 18.3, 17.9, 16.13, 15.17, 14.22
  • RPM Changelog 2026-02-27
  • DEB Changelog 2026-02-27
  • 核心升级:timescaledb 2.25.0 -> 2.25.1citus 14.0.0-3 -> 14.0.0-4pg_search -> 0.21.9
  • 新增/重建:pgedge 17.9spock 5.0.5lolor 1.2.2snowflake 2.4babelfish 5.5.0cloudberry 2.0.0
  • 内核配套:oriolepg 17.11 -> 17.16orioledb beta12 -> beta14openhalo 14.10 -> 1.0(14.18)
包名旧版本新版本备注
timescaledb2.25.02.25.1
citus14.0.0-314.0.0-4使用最新官方版本重新构建
age1.7.01.7.0新增 PG 17 的 1.7.0 版本支持
pgmq1.10.01.10.1当前没有该扩展包
pg_search0.21.7 / 0.21.60.21.9RPM/DEB 旧版本不同
oriolepg17.1117.16OriolePG 内核更新
orioledbbeta12beta14配套 OriolePG 17.16
openhalo14.101.0更新并重命名,14.18
pgedge-17.9新增多主边缘分布式内核
spock-5.0.5新增,pgEdge 核心扩展
lolor-1.2.2新增,pgEdge 核心扩展
snowflake-2.4新增,pgEdge 核心扩展
babelfishpg-5.5.0新增 BabelfishPG 包组
babelfish-5.5.0新增 Babelfish 兼容包
antlr4-runtime413-4.13新增 Babelfish 依赖运行时
cloudberry-2.0.0仅 RPM 构建
pg_background-1.8仅 DEB 构建

基础设施软件更新

名称旧版本新版本
grafana12.3.212.4.0
prometheus3.9.13.10.0
mongodb_exporter0.47.20.49.0
victoria-metrics1.135.01.136.0
victoria-metrics-cluster1.135.01.136.0
vmutils1.135.01.136.0
victoria-logs1.45.01.47.0
vlagent1.45.01.47.0
vlogscli1.45.01.47.0
loki3.6.53.6.7
promtail3.6.53.6.7
logcli3.6.53.6.7
grafana-victorialogs-ds0.24.10.26.2
grafana-victoriametrics-ds0.21.00.23.1
grafana-infinity-ds3.7.03.7.2
redis_exporter1.80.21.81.0
etcd3.6.73.6.8
dblab0.34.20.34.3
tigerbeetle0.16.720.16.74
seaweedfs4.094.13
rustfs1.0.0-alpha.821.0.0-alpha.83
uv0.10.00.10.4
kafka4.1.14.2.0
npgsqlrest3.7.03.10.0
postgrest14.414.5
caddy2.10.22.11.1
rclone1.73.01.73.1
pev21.20.11.20.2
genai-toolbox0.25.00.27.0
opencode1.1.591.2.15
claude2.1.372.1.59
codex0.104.00.105.0
code1.109.21.109.4
code-server4.108.24.109.2
nodejs24.13.124.14.0
pig1.1.21.3.0
stalwart-0.15.5
maddy-0.8.2

API 变化

  • pg_mode 增加 agenspgedge
  • mssql 默认配置改为 pg_version: 17 + pg_packages: [babelfish, pgsql-common, sqlcmd]
  • pg_home_mappackage_map 的内核/包别名映射更新(Babelfish / OpenHalo / IvorySQL / Cloudberry / pgEdge 家族)。
  • redis_fs_main 默认值改为 /data/redis,并新增部署保护与移除兼容策略。
  • configure 输出路径与区域探测逻辑更新,增加离线回退告警;SSH 探测统一超时参数。
  • grafana.ini.j2 跟进 Grafana 12.4 新配置项与废弃项调整。

兼容性说明

  • 存量 Redis 配置如果仍使用 redis_fs_main: /data,请先改为 /data/redis 再执行部署。
  • Grafana 12.4 后 data link 合并行为变化,本版本已将关键链接下沉到字段 override 规避冲突;如有自定义看板,建议同步检查。

26 个提交,122 文件变更,+2,116 / -2,215 行(v4.1.0..v4.2.0,2026-02-15 ~ 2026-02-28)

校验和

24a90427a7e7351ca1a43a7d53289970  pigsty-v4.2.0.tgz
d980edf5eeb0419d4f1aa7feb0100e14  pigsty-pkg-v4.2.0.d12.aarch64.tgz
24bc237d841457fbdcc899e1d0a3f87e  pigsty-pkg-v4.2.0.d12.x86_64.tgz
e395b38685e2ecbe9c3a2850876d9b7b  pigsty-pkg-v4.2.0.d13.aarch64.tgz
c5c8776f9bead9f29528b26058801f83  pigsty-pkg-v4.2.0.d13.x86_64.tgz
28ea40434bd06135fc8adc0df1c8407d  pigsty-pkg-v4.2.0.el10.aarch64.tgz
58ad715ac20dc1717d1687daecfcf625  pigsty-pkg-v4.2.0.el10.x86_64.tgz
008f955439ea311581dd0ebcf5b8bd34  pigsty-pkg-v4.2.0.el8.aarch64.tgz
2acfd127a517b09f07540f808fe9547a  pigsty-pkg-v4.2.0.el8.x86_64.tgz
58e62a92f35291a40e3f05839a1b6bc4  pigsty-pkg-v4.2.0.el9.aarch64.tgz
d311bfdf5d5f60df5fe6cb3d4ced4f9c  pigsty-pkg-v4.2.0.el9.x86_64.tgz
c98972fe9226657ac1faa7b72a22498b  pigsty-pkg-v4.2.0.u22.aarch64.tgz
44a174ee9ba030ac1ea386cf0b85f6e7  pigsty-pkg-v4.2.0.u22.x86_64.tgz
143e404f4681c7d0bbd78ef7982cd652  pigsty-pkg-v4.2.0.u24.aarch64.tgz
00dfa86f477f3adff984906211ab3190  pigsty-pkg-v4.2.0.u24.x86_64.tgz

v4.1.0

curl https://pigsty.cc/get | bash -s v4.1.0

72 个提交,252 文件变更,+5,744 / -5,015 行(v4.0.0..v4.1.0,2026-02-02 ~ 2026-02-13)

亮点特性

  • 新增 7 个扩展,总计 451 个扩展支持。
  • pig 从传统脚本接口升级为 Agent-Native CLI1.0.0 -> 1.1.0),支持主动暴露上下文并提供 JSON/YAML 输出。
  • pig 新增 PostgreSQL / OS 大小版本更新统一能力(覆盖 major/minor 升级流程)。
  • pg_exporter 升级到 v1.2.01.1.2 -> 1.2.0),并修复 PG17/18 指标链路与单位换算。
  • 防火墙默认安全策略更新:node_firewall_mode 默认改为 zonenode_firewall_public_port 默认从 [22,80,443,5432] 收敛为 [22,80,443]
  • PostgreSQL 小版本更新:18.2、17.8、16.12、15.16、14.21。
  • EL 默认小版本更新到 EL 9.7 / EL 10.1,Debian 默认小版本更新到 12.13 / 13.3
  • 集中修复 PGSQL / PGCAT Grafana 看板可用性:$dsn 动态数据源、schema 级跳转、Age 指标、链接映射与语义一致性。
  • 新增 Mattermost 一键应用模板,支持数据库、目录、门户与可选 PGFS/JuiceFS 方案。
  • 重构 infra-rm 卸载逻辑,新增 deregister 分段清理能力,可回收 Victoria target、Grafana datasource、Vector 日志配置。
  • 优化 PostgreSQL 默认 autovacuum 阈值,减少小表高频 vacuum/analyze。
  • 修复 FD 上限链路:新增 fs.nr_open=8M 并统一 LimitNOFILE=8M,避免 systemd/setrlimit 导致服务启动失败。
  • 调整 Vibe 默认体验:Jupyter 默认关闭,Claude Code 改由 npm 包统一安装管理。

版本更新

  • Pigsty 版本:v4.0.0 -> v4.1.0
  • pig CLI:1.0.0 -> 1.1.0(Agent-Native + 大小版本更新支持)
  • pg_exporter1.1.2 -> 1.2.0
  • 默认 EL 小版本:9.6/10.0 -> 9.7/10.1
  • 默认 Debian 小版本:12.12/13.1 -> 12.13/13.3

扩展更新

  • RPM Changelog 2026-02-12
  • DEB Changelog 2026-02-12
  • timescaledb 2.24.0 -> 2.25.0
  • pg_search 0.21.4 -> 0.21.7
  • pgmq 1.9.0 -> 1.10.0
  • pg_textsearch 0.4.0 -> 0.5.0
  • pljs 1.0.4 -> 1.0.5
  • pg_track_optimizer 0.9.1(新增)
  • nominatim_fdw 1.1.0(新增)
  • pg_utl_smtp 1.0.0(新增)
  • pg_strict 1.0.2(新增)
  • pgmb 1.0.0(新增)
  • pg_pwhash(新增支持)
  • informix_fdw(新增支持)

INFRA 组件版本

Infra Changelog 2026-02-12

软件包版本软件包版本
victoria-metrics1.135.0victoria-logs1.45.0
vector0.53.0grafana12.3.2
alertmanager0.31.1etcd3.6.7
duckdb1.4.4pg_exporter1.2.0
pig1.1.0claude2.1.37
opencode1.1.59uv0.10.0
code-server4.108.2caddy2.10.2
hugo0.155.2cloudflared2026.2.0
headscale0.28.0

API 变化

  • io_method / io_workers 模板生效条件从 pg_version >= 17 更正为 pg_version >= 18
  • idle_replication_slot_timeout / initdb --no-data-checksums 的 PG18 守卫条件修正。
  • maintenance_io_concurrency 生效范围放宽至 PG13+
  • autovacuum_vacuum_thresholdoltp/crit/tiny 从 50 提升到 500,olap 提升到 1000。
  • autovacuum_analyze_thresholdoltp/crit/tiny 从 50 提升到 250,olap 提升到 500。
  • checkpoint_completion_target 默认从 0.90 提升到 0.95
  • Node tuned 模板新增 fs.nr_open=8388608,并统一 fs.file-max / fs.nr_open / LimitNOFILE 层级关系。
  • postgres、patroni、minio 的 systemd LimitNOFILE16777216 调整为 8388608
  • node_sysctl_params 默认加入 fs.nr_open: 8388608
  • node_firewall_mode 默认值从 none 调整为 zone:默认启用防火墙,内网信任,公网仅开放 node_firewall_public_port;如需完全自管防火墙请设为 none
  • node_firewall_public_port 默认值从 [22,80,443,5432] 调整为 [22,80,443],数据库端口 5432 需要按需显式添加。注意防火墙规则为“只增不删”,存量节点若已放行 5432 需手工移除;单机体验模板(如 meta / vibe)会显式覆盖并保留 5432 以便远程使用。
  • bin/validate 新增 pg_databases[*].parameterspg_hba_rules[*].order 校验支持,并修复 HBA 错误未正确返回失败的问题。
  • infra-rm.yml 新增 deregisterconfigenv 等分段标签。
  • Vibe 默认 jupyter_enabled=falsenpm_packages 默认加入 @anthropic-ai/claude-codehappy-coder,并新增 CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
  • PgBouncer 参数别名收敛:pool_size_reserve -> pool_reservepool_max_db_conn -> pool_connlimit

兼容性修复(去重归并)

  • 注:同一问题的重复回补(反复引入后再次修复)仅计一次,以下按问题域归并。
  • 修复 Redis replicaof 判空逻辑与 systemd 停止行为。
  • 修复 pg_migration 脚本 schema/table/sequence 全限定、标识符 quoting 与日志格式字符串安全问题。
  • 修复 pgsql role handler 重启对象与变量使用错误。
  • 修复 blackbox 配置文件名清理项与 pgAdmin pgpass 文件格式。
  • pg_exporter 启动改为非阻断,避免 exporter 启动失败拖慢主流程。
  • VIP 地址解析逻辑简化,未显式 CIDR 时默认掩码 24
  • MinIO 健康检查重试从 3 提升到 5
  • 节点主机名设置改用 hostname 模块,替代 shell 调用。
  • 修复 app/electricapp/pg_exporter.env 格式为标准 KEY=VALUE
  • 修复 pigsty.ymlpg_crontab 语法错误。
  • 更新 ETCD 文档,明确默认 TLS 与可选 mTLS 的语义差异。
  • 修复 repo-add 参数传递、Debian 中国镜像组件兼容性、bin/psql.py 的 Python3 兼容性。
  • 加固 redis exporter 凭据文件权限,减少敏感信息暴露风险。
  • pgsql-user.yml 隐藏用户凭据日志输出并对敏感步骤启用 no_log
  • 修复 pg_monitor 注册 Victoria target 的 gate 条件。
  • pg_remove 备份清理改为集群级目录,避免误删其他集群备份。

提交清单(v4.0.0..v4.1.0,共 72,2026-02-02 ~ 2026-02-13)

7410de401 v4.1.0 release
fa31213ce conf(node): default firewall to zone with single-node 5432 override
bb8382c58 update default extension list to 451
770d01959 hide user credential in pgsql-user playbook
7219a896c pg_monitor: fix victoria registration gate conditions
084c98432 remove one cluster in backup dir during pg_remove
7005617f1 pgsql: drop legacy pgbouncer pool parameter aliases
f8165a886 docs(roles): fix typos and align juice role documentation
06a589218 chore(meta): normalize platform versions for current lint schema
e0a208248 fix(roles): harden redis exporter file permissions
fd0469881 terraform/vagrant: parameterize aliyun region/zone, fix vagrant scripts
74c59aabe grafana: fix dashboard links, descriptions, and overrides
443e58724 conf: clean legacy params and fix template references
536c4b39d adjust grafana dashboard dead links
f3b9866ce grafana(pgsql): fix panel typos and title consistency
bcb69be11 grafana(pgsql): fix drilldown links and variable mappings
1ce4374a1 grafana: fill pglog panel titles and normalize wording
2d127f9f4 grafana: fix minio traffic metrics and pigsty dashboard links
9d3ca0118 grafana: align victoria instance dashboards with query scope
55bc61622 grafana: fix infra dashboard copy, links, and table semantics
607b75535 grafana(node): fix panel drilldown links and clean dashboard metadata
1321de532 grafana(redis): fix dashboard links and blocked-clients panel semantics
91e0c8437 fix(grafana): correct Redis alert drill-down dashboard links
0fde78c02 fix(tooling): improve Python3 compatibility and enforce vagrant scale lower bound
fa3454a52 fix(bootstrap): use Debian-compatible components for CN apt mirror
36c95c749 fix(cli): restore repo-add execution and HBA validation failure propagation
797385929 add macbook local vagrant image override
f9c928e32 fix(grafana): restore reverted dashboard bugfixes
c11af8b6a Bump version to v4.1.0
307a236ba update extension list
f17024807 override el9/u24 vagrant box for convient testing
c2ada1283 terraform: bump Aliyun Debian images to 12.13/13.3
25bd8210f fix(node): add daemon_reload to systemd tasks for keepalived, chronyd, and cron
6f2576fd0 fix(node): set default fs.nr_open via node_sysctl_params
43a71245e add pg_bgwriter_buffers_backend for pg 17-
da832a47b fix(monitor): keep checkpointer metrics for checkpoint stats
90434ca8a fix(monitor): add pg_bgwriter fallback for checkpointer metrics
e2d75e787 fix(monitor): use pg_checkpointer metrics for checkpoint stats
a0b7474f8 fix grafana dashboard metrics and lengend
27ddacbc6 vagrant: refresh box selector and OS shortcuts
26e108788 fix(monitor): correct unit for time metrics scaled by pg_exporter
ee90044b5 fix(pgsql): correct min_parallel scan size params in oltp/crit templates
d439464b2 pgsql: fix pg_version guards for PG18-only settings
26320f120 docs: recommend RockyLinux 10.1
1e9b9f33a terraform: bump Aliyun Rocky images to 9.7/10.1
d6e9c7122 monitor: optimize table/index bloat estimators
42d45d32e fix(grafana): align panel semantics across node/infra/redis
3972d2c45 fix(grafana/pgsql): align dashboard semantics for query monitoring
cb52375ac bump checkpoint_completion_target from 0.90 to 0.95
13115a95d fix legend in pgsql-persist checkpoint panel
102cd2edb fix(pg_migration): make template logging format-safe
c402f0e6d fix: correct io_method/io_workers version guard from PG17 to PG18
3bf676546 vibe: disable jupyter by default and install claude-code via npm_packages
613c4efa9 fix: set fs.nr_open in tuned profiles and reduce LimitNOFILE to 8M
07e499d4d new app conf template matter most
4cc68ed61 Refine infra removal playbook
7cfb98f69 fix: app docker .env file format
9b36b1875 Fix config templates and validation
318d85e6e Simplify VIP parsing and make pg_exporter non-blocking
571cd9e70 Use hostname module for nodename
de98f073c Fix blackbox config filename and pgpass format
4bff01100 Fix redis replicaof guard and systemd stop
38445b68d minio: increase health check retries
c99854969 docs(etcd): clarify TLS vs mTLS
41229124a fix pgsql roles typo
e575d17c6 fix pg_migration scripts to use fully qualified identifiers
ec4207202 fix pgsql-schema broken links
a237e6c99 tune autovacuum threshold to reduce small table vacuum frequency
e80754760 fix pgcat-database links to pgcat-table https://github.com/pgsty/pigsty/issues/690
0060f5346 fix pgsql-database / pgsql-databases age metric fix https://github.com/pgsty/pigsty/issues/695
43cdf72bc fix pigsty.yml typo
0d9db7b08 fix: update datasource to $dsn - fix https://github.com/pgsty/pigsty/issues/692#issuecomment-3835461620

致谢

  • 感谢 @l2dy 为本项目提出诸多改进意见与 Issue。

校验和

8bc75e8df0e3830931f2ddab71b89630  pigsty-v4.1.0.tgz
da10de99d819421630f430d01bc9de62  pigsty-pkg-v4.1.0.d12.aarch64.tgz
e1f2ed2da0d6b8c360f9fa2faaa7e175  pigsty-pkg-v4.1.0.d12.x86_64.tgz
382bb38a81c138b1b3e7c194211c2138  pigsty-pkg-v4.1.0.d13.aarch64.tgz
13ceaa728901cc4202687f03d25f1479  pigsty-pkg-v4.1.0.d13.x86_64.tgz
92d061de4d495d05d42f91e4283e7502  pigsty-pkg-v4.1.0.el10.aarch64.tgz
be629ea91adf86bbd7e1c59b659d0069  pigsty-pkg-v4.1.0.el10.x86_64.tgz
c14be706119ba33dd06c71dda6c02298  pigsty-pkg-v4.1.0.el8.aarch64.tgz
0c8b6952ffc00e3b169896129ea39184  pigsty-pkg-v4.1.0.el8.x86_64.tgz
cfcc63b9ecc525165674f58f9365aa19  pigsty-pkg-v4.1.0.el9.aarch64.tgz
34f733080bfa9c8515d1573c35f3e870  pigsty-pkg-v4.1.0.el9.x86_64.tgz
ad52ce9bf25e4d834e55873b3f9ada51  pigsty-pkg-v4.1.0.u22.aarch64.tgz
300b2185c61a03ea7733248e526f3342  pigsty-pkg-v4.1.0.u22.x86_64.tgz
2e561e6ae9abb14796872059d2f694a8  pigsty-pkg-v4.1.0.u24.aarch64.tgz
c462bb4cb2359e771ffcad006888fbd4  pigsty-pkg-v4.1.0.u24.x86_64.tgz

v4.0.0

curl https://pigsty.cc/get | bash -s v4.0.0

318 个提交,604 文件变更,+118,655 / -327,552 行,发布页面: https://github.com/pgsty/pigsty/releases/tag/v4.0.0

亮点特性

  • 可观测性革命:Prometheus → VictoriaMetrics(10x 性能提升),Loki + Promtail → VictoriaLogs + Vector
  • 安全加固:自动生成强密码、etcd RBAC、防火墙/SELinux 模式、权限收紧、Nginx Basic Auth
  • 容器支持:支持在 Docker 容器中运行 Pigsty 本身
  • 新增模块:JUICE,提供将 PG 挂载为文件系统并进行 PITR 的能力
  • 新增模块:VIBE,提供 Claude Code、JupyterLab、VS Code Server、Node.js 的配置与可观测性
  • 数据库管理: pg_databases state(create/absent/recreate)、strategy 瞬间克隆数据库
  • PITR 与分叉: /pg/bin/pg-fork CoW 瞬间克隆、pg-pitr 增强支持 PITR 前备份
  • 高可用增强: pg_rto_plan 提供四档 RTO 预置参数(fast/norm/safe/wide),pg_crontab 定时任务
  • 多云 Terraform:AWS、Azure、GCP、Hetzner、DigitalOcean、Linode、Vultr、腾讯云模板
  • 许可证变更:AGPL-3.0 → Apache-2.0

基础设施软件包更新

MinIO 开始使用 pgsty/minio fork RPM/DEB

软件包版本软件包版本
victoria-metrics1.134.0victoria-logs1.43.1
vector0.52.0grafana12.3.1
alertmanager0.30.1etcd3.6.7
duckdb1.4.4pg_exporter1.1.2
pgbackrest_exporter0.22.0blackbox_exporter0.28.0
node_exporter1.10.2minio20251203
pig1.0.0claude2.1.19
opencode1.1.34uv0.9.26
asciinema3.1.0prometheus3.9.1
pushgateway1.11.2juicefs1.4.0
code-server4.100.2caddy2.10.2
hugo0.154.5cloudflared2026.1.1
headscale0.27.1

新增模块

  • JUICE 模块:JuiceFS 分布式文件系统,使用 PostgreSQL 作为元数据引擎,支持利用 PITR 恢复文件系统
  • VIBE 模块:AI 辅助编程沙箱环境(整合了 Code-Server、JupyterLab、Node.js 与 Claude Code)
    • Code-Server:浏览器中的 VS Code
    • JupyterLab:交互式计算环境
    • Node.js:JavaScript 运行时环境
    • Claude Code:AI 编程助手 CLI 配置,内置 OpenTelemetry 可观测性

PostgreSQL 扩展

新扩展: pg_textsearch 0.4.0, pg_clickhouse 0.1.3, pg_ai_query 0.1.1, etcd_fdw, pg_ttl_index 0.1.0, pljs 1.0.4, pg_retry 1.0.0, pg_weighted_statistics 1.0.0, pg_enigma 0.5.0, pglinter 1.0.1, documentdb_extended_rum 0.109, mobilitydb_datagen 1.3.0

重要更新:timescaledb 2.24.0, pg_search 0.21.4, citus 14.0.0, documentdb 0.109, age 1.7.0, pg_duckdb 1.1.1, vchord 1.0.0, vchord_bm25 0.3.0, pg_biscuit 2.2.2, pg_anon 2.5.1, wrappers 0.5.7, pg_vectorize 0.26.0, pg_session_jwt 0.4.0, pg_partman 5.4.0, pgmq 1.9.0, pg_bulkload 3.1.23, pg_timeseries 0.2.0, pg_convert 0.1.0, pgBackRest 2.58

破坏性变更

可观测性栈

旧组件新组件
PrometheusVictoriaMetrics
LokiVictoriaLogs
PromtailVector

参数变更

移除替代
node_disable_firewallnode_firewall_mode (off/none/zone)
node_disable_selinuxnode_selinux_mode (disabled/permissive/enforcing)
pg_pwd_enc已移除,统一使用 scram-sha-256
infra_pip_packagesnode_pip_packages
code_home/jupyter_homevibe_data

默认值变更

参数变化
grafana_cleantrue → false
effective_io_concurrency1000 → 200
install.yml重命名为 deploy.yml

可观测性

  • 使用全新的 VictoriaMetrics 替代 Prometheus,用几分之一的资源实现数倍的性能
  • 使用全新的日志收集方案:VictoriaLogs + Vector,取代 Promtail + Loki
  • 统一调整了所有组件的日志格式,PG 日志使用 UTC 时间戳(log_timezone)
  • 调整了 PostgreSQL 日志的轮换方式,使用按周循环截断日志轮转模式
  • 在 PG 日志中记录超过 1MB 的临时文件分配,在特定模版中启用 PG 17/18 日志新参数
  • 新增了 Nginx / Syslog / PG CSV / Pgbackrest / Grafana / Redis / etcd / MinIO 等日志的 Vector 解析配置
  • 注册数据源现在会在所有 Infra 节点上进行,Victoria 数据源将自动注册入 Grafana
  • 新增 grafana_pgurl 参数,允许指定 Grafana 使用 PG 作为后端存储元数据库
  • 新增 grafana_view_password 参数,指定 Grafana Meta 数据源使用的密码
  • pgbackrest_exporter 的默认选项现在设置 120 秒的内部缓存间隔(原本为 600s)
  • grafana_clean 参数的默认值现在由 true 改为 false,即默认不清除
  • 新增指标收集器 pg_timeline,收集更实时的时间线指标 pg_timeline_id
  • pg_exporter 更新至 1.1.2,新增 pg_timeline 采集器,修复大量历史遗留问题
  • 新增 node-vector 仪表盘,监控 Vector 日志收集器状态
  • 新增 node-juice 仪表盘,监控 JuiceFS 分布式文件系统状态
  • 新增 claude-code 仪表盘,监控 Claude Code AI 编程助手使用情况
  • PGSQL Cluster/Instance 仪表盘新增版本横幅显示
  • 所有仪表盘使用 compact JSON 格式,大幅减少文件体积

接口改进

  • install.yml 剧本现在重命名为 deploy.yml 以更符合语义
  • 新增 vibe.yml 剧本,用于部署 VIBE AI 编程沙箱环境
  • pg_databases 数据库制备功能改进
    • 添加删库能力:可以使用 state 字段指定 create, absent, recreate 三种状态
    • 添加克隆能力:数据库定义中使用 strategy 参数指定克隆方法
    • 支持较新版本引入的 locale 配置参数:locale_providericu_localeicu_rulesbuiltin_locale
    • 支持 is_template 参数,将数据库标记为模板数据库
    • 添加了更多类型检查,避免了字符类参数的注入
    • 允许在 extension 中指定 state: absent 以删除扩展
  • pg_users 用户制备功能改进,新增参数 admin,类似 roles,但是带有 ADMIN OPTION 权限可以转授
  • pg_hba 支持 order 字段,允许指定 HBA 规则的排序优先级,支持 IPv6 的 localhost 访问
  • 新增 infra_extra_services 参数用于首页额外服务入口导航

参数优化

  • pg_io_method 参数:auto, sync, worker, io_uring 四种方式可选,默认 worker
  • maintenance_io_concurrency 设置为 100(如果使用 SSD)
  • effective_io_concurrency 从 1000 减小为 200
  • file_copy_method 参数为 PG18 默认设置为 clone,提供瞬间克隆数据库的能力
  • idle_replication_slot_timeout 默认 7d,crit 模板 3d
  • log_lock_failures:oltp, crit 模版开启
  • track_cost_delay_timing:olap, crit 模版开启
  • log_connections:oltp/olap 开启认证日志,crit 开启全部日志
  • 新增 pg_rto_plan 参数,整合 Patroni 与 HAProxy 的 RTO 相关配置(fast/norm/safe/wide)
  • pg_crontab 参数:为 postgres dbsu 配置定时任务
  • 对于 PG17+,如果 pg_checksums 开关关闭,在 Patroni 初始化集群时显式禁用校验和
  • Crit 模板启用 Patroni 严格同步模式
  • PITR 默认 archive_mode 改为 preserve,确保恢复后保留归档能力
  • pg-pitr 支持恢复前自动备份数据
  • 修复了 duckdb.allow_community_extensions 总是生效的问题
  • 允许通过 node_firewall_intranet 指定 HBA 信任的 “内网网段”
  • 现在 pg_hba 与 pgbouncer_hba 支持 IPv6 的 localhost 访问

架构改进

  • 在 Infra 节点上,设置固定的 /infra 软连接指向 Infra 数据目录 /data/infra
  • 现在 Infra 的数据默认放置于 /data/infra 目录下,这使得在容器中使用更为便利
  • 本地软件仓库现在放置于 /data/nginx/pigsty/www 现在作为软链接指向 /data/nginx 确保兼容
  • DNS 解析记录现放置于 dnsmasq 专属的 /etc/dnsmasq.d/pigsty 目录,并保留原子发布,兼容 SELinux 与 AppArmor
  • 默认首页域名从 h.pigsty 更名为 i.pigsty,新增中文首页支持
  • 新增了 /pg/bin/pg-fork 脚本,用于快速创建 CoW 副本数据库实例
  • 调整 /pg/bin/pg-pitr 脚本,现在可以用于实例级别的 PITR 恢复,支持恢复前自动备份
  • 新增 /pg/bin/pg-drop-role 脚本,用于安全删除用户角色
  • 新增 bin/pgsql-ext 脚本,用于安装 PostgreSQL 扩展
  • 恢复 pg-vacuumpg-repack 脚本
  • 新增剧本 juice.yml:部署 JuiceFS 分布式文件系统实例
  • 新增剧本 vibe.yml:部署 VIBE AI 编程沙箱环境(含 Code-Server、JupyterLab、Claude Code)
  • 显式安装 cron/cronie 包,确保定时任务功能在最小化安装的系统上可用
  • UV Python 包管理器从 infra 模块迁移至 node 模块,新增 node_uv_env 参数指定虚拟环境路径
  • pg_remove/pg_pitr 移除 etcd 元数据的任务,现在不再依赖 admin_ip 管理节点,而在 etcd 集群上执行
  • 36 节点仿真模板 simu 简化为 20 节点的版本
  • 适配上游变化,移除 PGDG sysupdate 仓库,移除 EL 系统上所有 llvmjit 的相关包
  • 为 EPEL 10 / PGDG 9/10 仓库使用操作系统完整版本号(major.minor
  • 允许在仓库定义中指定 meta 参数,覆盖 yum 仓库的定义元数据
  • 确保 Vagrant libvirt 模板默认带有 128GB 磁盘,以 xfs 挂载于 /data
  • 确保 pgbouncer 不再将 0.0.0.0 监听地址修改为 *
  • 新增 10 节点、Citus 等 Vagrant 配置模板
  • 恢复 EL7 系统兼容性支持
  • 多云 Terraform 模板:AWS、Azure、GCP、Hetzner、DigitalOcean、Linode、Vultr、腾讯云

安全改进

  • configure 现在支持 -g 参数自动生成随机强密码,避免使用默认密码带来的安全隐患
  • 更改了 MinIO 模块的默认密码,避免与众所周知的默认密码冲突
  • 移除 node_disable_firewall,新增 node_firewall_mode,支持 off, none, zone 三种模式
  • 移除 node_disable_selinux,新增 node_selinux_mode,支持 disabled, permissive, enforcing 三种模式
  • 为 HAProxy、Nginx、DNSMasq、Redis 等组件配置了正确的 SELinux 上下文
  • 启用了针对 etcd 的 RBAC,每个集群现在只能管理自己的 PostgreSQL 数据库集群
  • etcd root 密码现在放置于 /etc/etcd/etcd.pass 文件中,仅对管理员可读
  • admin_ip 添加到 Patroni API 允许访问的 IP 列表白名单中
  • 总是创建 admin 系统用户组,patronictl 配置收紧为仅限 admin 组用户访问
  • 新增 node_admin_sudo 参数,允许指定/调整数据库管理员的 sudo 权限模式(all/nopass)
  • 收回了所有非 root 用户对可执行脚本的拥有权限
  • 新增 Nginx Basic Auth 支持,可以为 Nginx Server 设置可选的 HTTP Basic Auth
  • 修复 ownca 证书有效期问题,确保了 Chrome 可以识别自签名证书
  • 新增 vip_auth_pass 参数用于 VRRP 认证
  • 修复了若干 ansible copy content 字段为空时报错的问题
  • 修复了 pg_pitr 中遗留的一些问题,确保 Patroni 集群恢复时没有竞态条件
  • 使用 mode 0700 保护 files/pki/ca 目录

问题修复

  • 修复 ownca 证书有效期 Chrome 兼容性问题
  • 修复 Vector 0.52 syslog_raw 解析问题
  • 修复 pg_pitr 多副本 clonefrom 时序问题
  • 修复 Ansible SELinux dnsmasq 竞态条件
  • 修复 EL9 aarch64 patroni & llvmjit 问题
  • 修复 Debian groupadd 路径问题
  • 修复空 sudoers 文件生成问题
  • 修复 pgbouncer pid 路径(/run/postgresql
  • 修复 duckdb.allow_community_extensions 始终生效问题
  • 因上游问题隐藏 EL8 上的 pg_partman 扩展
  • 修复 HAProxy 服务模板变量路径
  • 修复 Redis remove 任务变量名
  • 移除 MinIO reload handler 无效处理器
  • 修正 vmetrics_port 默认值为 8428
  • 修复 pg-failover-callback 脚本处理所有 Patroni 回调事件
  • 修复 pg-vacuum 事务块处理逻辑
  • 添加 PG16+ 并行逻辑复制支持
  • 修复 FerretDB 证书配置和服务重启策略
  • 修正 Polar Exporter 监控指标类型定义
  • 修复代理环境变量未传递问题
  • 修复移除模式下 postgres 服务配置
  • 更新 Docker 默认数据目录路径
  • 修复 EL10 系统上的缓存问题
  • 修复 etcd/MinIO 移除时 systemd 服务和 DNS 条目清理

新增参数

参数类型默认值说明
node_firewall_modeenumnone (v4.0)防火墙模式:off/none/zone(v4.1 起默认 zone)
node_selinux_modeenumpermissiveSELinux 模式
node_firewall_intranetstring-HBA 信任的内网网段
node_admin_sudoenumnopass管理员 sudo 权限级别
pg_io_methodenumworkerI/O 方法:auto/sync/worker/io_uring
pg_rto_plandict-RTO 预设:fast/norm/safe/wide
pg_crontablist[]postgres dbsu 定时任务
vip_auth_passstring-VRRP 认证密码
grafana_pgurlstring-Grafana PG 后端连接字符串
grafana_view_passwordstringDBUser.ViewerGrafana Meta 数据源密码
infra_extra_serviceslist[]首页额外服务入口
juice_cachepath/data/juiceJuiceFS 共享缓存目录
juice_instancesdict{}JuiceFS 实例定义
vibe_datapath/fsVIBE 工作空间目录
code_enabledbooltrue是否启用 Code-Server
code_portport8443Code-Server 监听端口
code_datapath/data/codeCode-Server 数据目录
code_passwordstringVibe.CodingCode-Server 登录密码
code_galleryenumopenvsx扩展市场:openvsx/microsoft
jupyter_enabledbooltrue是否启用 JupyterLab
jupyter_portport8888JupyterLab 监听端口
jupyter_datapath/data/jupyterJupyterLab 数据目录
jupyter_passwordstringVibe.CodingJupyterLab 登录 Token
jupyter_venvpath/data/venvPython 虚拟环境路径
claude_enabledbooltrue是否启用 Claude Code 配置
claude_envdict{}Claude Code 额外环境变量
nodejs_enabledbooltrue是否启用 Node.js 安装
nodejs_registrystring''npm registry,自动配置中国镜像
node_uv_envpath/data/venv节点 UV 虚拟环境路径,空则跳过
node_pip_packagesstring''UV 虚拟环境中安装的 pip 包

兼容性

操作系统x86_64aarch64
EL 8/9/10
Debian 11/12/13
Ubuntu 22.04/24.04

PostgreSQL: 13, 14, 15, 16, 17, 18

校验和

9f42b8c64180491b59bd03016c26e8ca  pigsty-v4.0.0.tgz
db9797c3c8ae21320b76a442c1135c7b  pigsty-pkg-v4.0.0.d12.aarch64.tgz
1eed26eee42066ca71b9aecbf2ca1237  pigsty-pkg-v4.0.0.d12.x86_64.tgz
03540e41f575d6c3a7c63d1d30276d49  pigsty-pkg-v4.0.0.d13.aarch64.tgz
36a6ee284c0dd6d9f7d823c44280b88f  pigsty-pkg-v4.0.0.d13.x86_64.tgz
f2b6ec49d02916944b74014505d05258  pigsty-pkg-v4.0.0.el10.aarch64.tgz
73f64c349366fe23c022f81fe305d6da  pigsty-pkg-v4.0.0.el10.x86_64.tgz
287f767fbb66a9aaca9f0f22e4f20491  pigsty-pkg-v4.0.0.el8.aarch64.tgz
c0886aab454bd86245f3869ef2ab4451  pigsty-pkg-v4.0.0.el8.x86_64.tgz
094ab31bcf4a3cedbd8091bc0f3ba44c  pigsty-pkg-v4.0.0.el9.aarch64.tgz
235ccba44891b6474a76a81750712544  pigsty-pkg-v4.0.0.el9.x86_64.tgz
f2791c96db4cc17a8a4008fc8d9ad310  pigsty-pkg-v4.0.0.u22.aarch64.tgz
3099c4453eef03b766d68e04b8d5e483  pigsty-pkg-v4.0.0.u22.x86_64.tgz
49a93c2158434f1adf0d9f5bcbbb1ca5  pigsty-pkg-v4.0.0.u24.aarch64.tgz
4acaa5aeb39c6e4e23d781d37318d49b  pigsty-pkg-v4.0.0.u24.x86_64.tgz

v3.7.0

亮点特性

  • PostgreSQL 18 深度支持,成为默认 PG 大版本,扩展已就位!
  • 新增 EL10 / Debian 13 操作系统支持,总数达 14 个!
  • 新增 PostgresQL 扩展数量,总数达到 437 个!
  • 支持了 Ansible 2.19 破坏性重构以后的版本!
  • Supabase,PolarDB, IvorySQL, Percona 内核更新至最新版本!
  • 优化了 PG 默认参数的设置逻辑,更充分利用资源。

版本更新

  • PostgreSQL 18.1, 17.7, 16.11, 15.15, 14.20, 13.23
  • Patroni 4.1.0
  • Pgbouncer 1.25.0
  • pg_exporter 1.0.3
  • pgbackrest 2.57.0
  • Supabase 2025-11
  • PolarDB 15.15.5.0
  • FerretDB 2.7.0
  • DuckDB 1.4.2
  • Etcd 3.6.6
  • pig 0.7.4

更多软件版本更新信息,请参考:

API 变化

  • 为并行执行的相关参数设置了更合理的优化策略,详见 调参说明
  • richfull 模板中,不再默认安装 citus 扩展,因为 citus 尚未支持 PG 18
  • PG 参数模板中,新增 duckdb 系列扩展存根。
  • min_wal_size, max_wal_size, max_slot_wal_keep_size 设置 200,2000,3000 GB 的封顶上限值。
  • temp_file_limit 设置 200 GB 的封顶上限,OLAP 设置为 2 TB。
  • 适当增大连接池默认链接数量
  • 新增 prometheus_port 参数,且默认值为 9058,避开与 EL10 RHEL Web Console 端口的冲突。
  • 修改 alertmanager_port 参数的默认值为 9059,避开与 Kafka SSL 端口的潜在冲突。
  • 新增 pg_pkgpg_pre 子任务,在安装 PG 包前移除 el9+ 上导致 LLVM 冲突的 bpftool, python3-perf
  • 在 Debian / Ubuntu 的默认仓库定义中新增 llvm 仓库模块
  • 修复了 infra-rm.yml 移除软件包的逻辑

兼容性修复

  • 修复了 Ubuntu/Debian 信任 CA 时 Warning 返回码错误的问题。
  • 修复了 Ansible 2.19 引入的大量兼容性问题,确保在新老版本上正常运行。
  • 为 seq 类变量添加了 int 类型转换,确保兼容
  • 将大量 with_items 修改为 loop 语法,确保兼容
  • 为密钥交换变量添加一层列表嵌套,避免在新版本下针对字符串进行字符迭代。
  • 将 range 用例显式转换为 list 后使用
  • 修改了 name,port 等标记保留的变量命名
  • play_hosts 修改为 ansible_play_hosts
  • 为部分字符串类型添加了 string 强制类型转换,避免运行时错误。
  • EL10 逻辑适配:
  • 修复了 EL10 缺少 ansible-collection-community-crypto 无法生成密钥的问题
  • 修复了 EL10 缺少 ansible 逻辑包的问题
  • 移除 modulemd_tools flamegraph timescaledb-tool
  • 使用 java-21-openjdk 替代 java-17-openjdk
  • aarch64 YUM 仓库名称问题
  • Debian 13 逻辑适配
  • 使用 bind9-dnsutils 替代 dnsutils
  • Ubuntu 24 修复
  • 临时移除了上游依赖崩溃的 tcpdump 包

校验和

e00d0c2ac45e9eff1cc77927f9cd09df  pigsty-v3.7.0.tgz
987529769d85a3a01776caefefa93ecb  pigsty-pkg-v3.7.0.d12.aarch64.tgz
2d8272493784ae35abeac84568950623  pigsty-pkg-v3.7.0.d12.x86_64.tgz
090cc2531dcc25db3302f35cb3076dfa  pigsty-pkg-v3.7.0.d13.x86_64.tgz
ddc54a9c4a585da323c60736b8560f55  pigsty-pkg-v3.7.0.el10.aarch64.tgz
d376e75c490e8f326ea0f0fbb4a8fd9b  pigsty-pkg-v3.7.0.el10.x86_64.tgz
8c2deeba1e1d09ef3d46d77a99494e71  pigsty-pkg-v3.7.0.el8.aarch64.tgz
9795e059bd884b9d1b2208011abe43cd  pigsty-pkg-v3.7.0.el8.x86_64.tgz
08b860155d6764ae817ed25f2fcf9e5b  pigsty-pkg-v3.7.0.el9.aarch64.tgz
1ac430768e488a449d350ce245975baa  pigsty-pkg-v3.7.0.el9.x86_64.tgz
e033aaf23690755848db255904ab3bcd  pigsty-pkg-v3.7.0.u22.aarch64.tgz
cc022ea89181d89d271a9aaabca04165  pigsty-pkg-v3.7.0.u22.x86_64.tgz
0e978598796db3ce96caebd76c76e960  pigsty-pkg-v3.7.0.u24.aarch64.tgz
48223898ace8812cc4ea79cf3178476a  pigsty-pkg-v3.7.0.u24.x86_64.tgz

v3.6.1

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

亮点特性

  • PostgreSQL 17.6, 16.10, 15.14, 14.19, 13.22, 以及 18 Beta 3 支持
  • 在中国大陆地区使用 Pigsty 提供的 PGDG APT/YUM 镜像解决更新断供问题。
  • 新的网站首页: https://pgsty.com
  • 增加了 el10, debian 13 的实现存根,以及 el10 的 Terraform 镜像

基础设施软件包更新

  • Grafana 12.1.0
  • pg_exporter 1.0.2
  • pig 0.6.1
  • vector 0.49.0
  • redis_exporter 1.75.0
  • mongo_exporter 0.47.0
  • victoriametrics 1.123.0
  • victorialogs: 1.28.0
  • grafana-victoriametrics-ds 0.18.3
  • grafana-victorialogs-ds 0.19.3
  • grafana-infinity-ds 3.4.1
  • etcd 3.6.4
  • ferretdb 2.5.0
  • tigerbeetle 0.16.54
  • genai-toolbox 0.12.0

数据库软件包更新

  • pg_search 0.17.3

API 变更

  • node_kernel_modules 默认值中移除 br_filter 内核模块。
  • 在添加 PGDG YUM 源时使用操作大版本号,不再使用小版本号。

校验和

045977aff647acbfa77f0df32d863739  pigsty-pkg-v3.6.1.d12.aarch64.tgz
636b15c2d87830f2353680732e1af9d2  pigsty-pkg-v3.6.1.d12.x86_64.tgz
700a9f6d0db9c686d371bf1c05b54221  pigsty-pkg-v3.6.1.el8.aarch64.tgz
2aff03f911dd7be363ba38a392b71a16  pigsty-pkg-v3.6.1.el8.x86_64.tgz
ce07261b02b02b36a307dab83e460437  pigsty-pkg-v3.6.1.el9.aarch64.tgz
d598d62a47bbba2e811059a53fe3b2b5  pigsty-pkg-v3.6.1.el9.x86_64.tgz
13fd68752e59f5fd2a9217e5bcad0acd  pigsty-pkg-v3.6.1.u22.aarch64.tgz
c25ccfb98840c01eb7a6e18803de55bb  pigsty-pkg-v3.6.1.u22.x86_64.tgz
0d71e58feebe5299df75610607bf428c  pigsty-pkg-v3.6.1.u24.aarch64.tgz
4fbbab1f8465166f494110c5ec448937  pigsty-pkg-v3.6.1.u24.x86_64.tgz
083d8680fa48e9fec3c3fcf481d25d2f  pigsty-v3.6.1.tgz

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 软件包。

校验和

df64ac0c2b5aab39dd29698a640daf2e  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

v3.5.0

亮点特性

  • 支持 PG 18 (Beta),扩展更新,总数达到 421 个
  • OrioleDB 与 OpenHalo 内核在全平台上可用
  • 可使用 pig do 子命令代替 bin 脚本
  • Supabase 自建加强,解决若干遗留问题,例如复制延迟与密钥分发
  • 代码重构与架构优化,优化了 Postgres 与 Pgbouncer 默认参数
  • 更新了 Grafana 12, pg_exporter 1.0 与相关插件,翻修面板
curl https://repo.pigsty.cc/get | bash -s v3.5.0
  • 支持 PostgreSQL 18
  • 通过 pg_exporter 1.0.0 支持 PG18 监控指标
  • 通过 pig 0.4.1 支持 PG18 安装 Alias。
  • 提供 pg18 配置模板
  • 重构 pgsql 模块
  • PGSQL 重构,将 PG 监控抽离为单独的 pg_monitor 角色,移除 clean 逻辑
  • 去除冗余重复的任务,合并同类项,精简配置。移除 dir/utils 任务块
  • 所有扩展默认安装至 extensions 模式中(与 supabase 安全实践保持一致)
  • 重命名模板文件,移除所有 .j2 后缀
  • 为所有模板中的 monitor 函数添加 SET 命令清空 search_path,遵循 Supabase 安全最佳实践。
  • 调整 pgbouncer 默认参数,增大默认链接池大小,设置链接池清理查询。
  • 新增参数 pgbouncer_ignore_param,允许配置 pgbouncer 忽略的参数列表
  • 新增任务 pg_key 用于生成 pgsodium 所需的服务端密钥
  • 针对 PG 17 默认启用 sync_replication_slots
  • 重新调整了子任务标签,使其更符合配置小节的拆分逻辑
  • 重构 pg_remove 模块
  • 重命名参数:pg_rm_data, pg_rm_bkup, pg_rm_pkg 用于控制删除的内容
  • 重新调整角色代码结构,使用更清楚的标签进行划分
  • 新增 pg_monitor 模块
  • pgbouncer_exporter 现在不再和 pg_exporter 共享配置文件
  • 新增了 TimescaleDB, Citus,pg_wait_event 的监控指标。
  • 使用 pg_exporter 1.0.0,更新了 PG16/17/18 相关监控指标。
  • 使用更为紧凑,全新设计的指标收集器配置文件。
  • Supabase 加强 (感谢来自 @lawso017 的贡献!)
  • 将 Supabase 容器镜像与数据库模式更新至最新版本
  • 现在默认支持 pgsodium 服务端密钥加载
  • 通过 supa-kick 定时任务解决 logflare 无法及时更新复制进度的问题
  • 为 monitor 模式中的函数添加 set search_path 子句以遵循安全最佳实践
  • CLI 新增 pig do 命令,允许通过命令行工具替代 bin/ 中的 Shell 脚本
  • 监控系统更新
  • 更新 Grafana 大版本至 12.0.0,更新相关插件/数据源软件包
  • 更新 Postgres 数据源 uid 命名方式(以适应新的 uid 长度限制与字符限制)
  • 新增了 Static Datasource
  • 更新了现有 Dashboard,修复若干遗留问题

基础设施软件包更新

  • pig 0.4.2
  • duckdb 1.3.0
  • etcd 3.6.0
  • vector 0.47.0
  • minio 20250422221226
  • mcli 20250416181326
  • pev 1.5.0
  • rclone 1.69.3
  • mtail 3.0.8 (new)

可观测性软件包更新

  • grafana 12.0.0
  • grafana-victorialogs-ds 0.16.3
  • grafana-victoriametrics-ds 0.15.1
  • grafana-infinity-ds 3.2.1
  • grafana_plugins 12.0.0
  • prometheus 3.4.0
  • pushgateway 1.11.1
  • nginx_exporter 1.4.2
  • pg_exporter 1.0.0
  • pgbackrest_exporter 0.20.0
  • redis_exporter 1.72.1
  • keepalived_exporter 1.6.2
  • victoriametrics 1.117.1
  • victoria_logs 1.22.2

数据库软件包更新

  • PostgreSQL 17.5, 16.9, 15.13, 14.18, 13.21
  • PostgreSQL 18beta1 支持
  • pgbouncer 1.24.1
  • pgbackrest 2.55
  • pgbadger 13.1

Postgres 扩展包更新

  • spat 0.1.0a4 新扩展
  • pgsentinel 1.1.0 新扩展
  • pgdd 0.6.0 (pgrx 0.14.1) 新扩展
  • convert 0.0.4 (pgrx 0.14.1) 新扩展
  • pg_tokenizer.rs 0.1.0 (pgrx 0.13.1)
  • pg_render 0.1.2 (pgrx 0.12.8)
  • pgx_ulid 0.2.0 (pgrx 0.12.7)
  • pg_idkit 0.3.0 (pgrx 0.14.1)
  • pg_ivm 1.11.0
  • orioledb 1.4.0 beta11 新增 debian/ubuntu 支持
  • openhalo 14.10 新增 debian/ubuntu 支持
  • omnigres 20250507 (在 d12/u22 编译最新版本失败)
  • citus 12.0.3
  • timescaledb 2.20.0 (移除 PG14 支持)
  • supautils 2.9.2
  • pg_envvar 1.0.1
  • pgcollection 1.0.0
  • aggs_for_vecs 1.4.0
  • pg_tracing 0.1.3
  • pgmq 1.5.1
  • tzf-pg 0.2.0 (pgrx 0.14.1)
  • pg_search 0.15.18 (pgrx 0.14.1)
  • anon 2.1.1 (pgrx 0.14.1)
  • pg_parquet 0.4.0 (0.14.1)
  • pg_cardano 1.0.5 (pgrx 0.12) -> 0.14.1
  • pglite_fusion 0.0.5 (pgrx 0.12.8) -> 14.1
  • vchord_bm25 0.2.1 (pgrx 0.13.1)
  • vchord 0.3.0 (pgrx 0.13.1)
  • pg_vectorize 0.22.1 (pgrx 0.13.1)
  • wrappers 0.4.6 (pgrx 0.12.9)
  • timescaledb-toolkit 1.21.0 (pgrx 0.12.9)
  • pgvectorscale 0.7.1 (pgrx 0.12.9)
  • pg_session_jwt 0.3.1 (pgrx 0.12.6) -> 0.12.9
  • pg_timetable 5.13.0
  • ferretdb 2.2.0
  • documentdb 0.103.0 (新增 aarch64 支持)
  • pgml 2.10.0 (pgrx 0.12.9)
  • sqlite_fdw 2.5.0 (fix pg17 deb)
  • tzf 0.2.2 0.14.1 (rename src)
  • pg_vectorize 0.22.2 (pgrx 0.13.1)
  • wrappers 0.5.0 (pgrx 0.12.9)

校验和

ab91bc05c54b88c455bf66533c1d8d43  pigsty-v3.6.0.tgz
4c9fabc2d1f0ed733145af2b6aff2f48 pigsty-pkg-v3.5.0.d12.x86_64.tgz
796d47de12673b2eb9882e527c3b6ba0 pigsty-pkg-v3.5.0.el8.x86_64.tgz
a53ef2cede1363f11e9faaaa43718fdc pigsty-pkg-v3.5.0.el9.x86_64.tgz
36da28f97a845fdc0b7bbde2d3812a67 pigsty-pkg-v3.5.0.u22.x86_64.tgz
8551b3e04b38af382163e6857778437d pigsty-pkg-v3.5.0.u24.x86_64.tgz

v3.4.1

GitHub 发布页面:v3.4.1

  • 在 EL 系统上增加了对 MySQL 协议兼容 PostgreSQL 内核的支持:openHalo
  • 在 EL 系统上增加了对 OLTP 增强 PostgreSQL 内核的支持:orioledb
  • 优化了 pgAdmin 9.2 应用模板,具有自动服务器列表更新和 pgpass 密码填充功能
  • 将 PG 默认最大连接数增加到 250、500、1000
  • 从 EL8 中删除了有依赖错误的 mysql_fdw 扩展

基础设施更新

  • pig 0.3.4
  • etcd 3.5.21
  • restic 0.18.0
  • ferretdb 2.1.0
  • tigerbeetle 0.16.34
  • pg_exporter 0.8.1
  • node_exporter 1.9.1
  • grafana 11.6.0
  • zfs_exporter 3.8.1
  • mongodb_exporter 0.44.0
  • victoriametrics 1.114.0
  • minio 20250403145628
  • mcli 20250403170756

扩展更新

  • 将 pg_search 升级到 0.15.13
  • 将 citus 升级到 13.0.3
  • 将 timescaledb 升级到 2.19.1
  • 将 pgcollection RPM 升级到 1.0.0
  • 将 pg_vectorize RPM 升级到 0.22.1
  • 将 pglite_fusion RPM 升级到 0.0.4
  • 将 aggs_for_vecs RPM 升级到 1.4.0
  • 将 pg_tracing RPM 升级到 0.1.3
  • 将 pgmq RPM 升级到 1.5.1

校验和

471c82e5f050510bd3cc04d61f098560  pigsty-v3.4.1.tgz
4ce17cc1b549cf8bd22686646b1c33d2  pigsty-pkg-v3.4.1.d12.aarch64.tgz
c80391c6f93c9f4cad8079698e910972  pigsty-pkg-v3.4.1.d12.x86_64.tgz
811bf89d1087512a4f8801242ca8bed5  pigsty-pkg-v3.4.1.el9.x86_64.tgzz
9fe2e6482b14a3e60863eeae64a78945  pigsty-pkg-v3.4.1.u22.x86_64.tgz

v3.4.0

GitHub 发布页面:v3.4.0

介绍博客:Pigsty v3.4 MySQL 兼容性和全面增强

新功能

  • 增加了新的 pgBackRest 备份监控指标和仪表板
  • 增强了 Nginx 服务器配置选项,支持自动 Certbot 签发
  • 现在优先使用 PostgreSQL 内置的 C/C.UTF-8 区域设置
  • IvorySQL 4.4 现在在所有平台上完全支持(RPM/DEB 在 x86/ARM 上)
  • 增加了新的软件包:Juicefs、Restic、TimescaleDB EventStreamer
  • Apache AGE 图数据库扩展现在在 EL 上完全支持 PostgreSQL 13–17
  • 改进了 app.yml playbook:无需额外配置即可启动标准 Docker 应用
  • 升级 Supabase、Dify 和 Odoo 应用模板到最新版本
  • 增加 electric 应用模板,本地优先的 PostgreSQL 同步引擎

基础设施包

  • +restic 0.17.3
  • +juicefs 1.2.3
  • +timescaledb-event-streamer 0.12.0
  • Prometheus 3.2.1
  • AlertManager 0.28.1
  • blackbox_exporter 0.26.0
  • node_exporter 1.9.0
  • mysqld_exporter 0.17.2
  • kafka_exporter 1.9.0
  • redis_exporter 1.69.0
  • pgbackrest_exporter 0.19.0-2
  • DuckDB 1.2.1
  • etcd 3.5.20
  • FerretDB 2.0.0
  • tigerbeetle 0.16.31
  • vector 0.45.0
  • VictoriaMetrics 1.113.0
  • VictoriaLogs 1.17.0
  • rclone 1.69.1
  • pev2 1.14.0
  • grafana-victorialogs-ds 0.16.0
  • grafana-victoriametrics-ds 0.14.0
  • grafana-infinity-ds 3.0.0

PostgreSQL 相关

  • Patroni 4.0.5
  • PolarDB 15.12.3.0-e1e6d85b
  • IvorySQL 4.4
  • pgbackrest 2.54.2
  • pev2 1.14
  • Babelfish 13.17

PostgreSQL 扩展

  • pgspider_ext 1.3.0(新扩展)
  • apache age 13–17 el rpm (1.5.0)
  • timescaledb 2.18.2 → 2.19.0
  • citus 13.0.1 → 13.0.2
  • documentdb 1.101-0 → 1.102-0
  • pg_analytics 0.3.4 → 0.3.7
  • pg_search 0.15.2 → 0.15.8
  • pg_ivm 1.9 → 1.10
  • emaj 4.4.0 → 4.6.0
  • pgsql_tweaks 0.10.0 → 0.11.0
  • pgvectorscale 0.4.0 → 0.6.0 (pgrx 0.12.5)
  • pg_session_jwt 0.1.2 → 0.2.0 (pgrx 0.12.6)
  • wrappers 0.4.4 → 0.4.5 (pgrx 0.12.9)
  • pg_parquet 0.2.0 → 0.3.1 (pgrx 0.13.1)
  • vchord 0.2.1 → 0.2.2 (pgrx 0.13.1)
  • pg_tle 1.2.0 → 1.5.0
  • supautils 2.5.0 → 2.6.0
  • sslutils 1.3 → 1.4
  • pg_profile 4.7 → 4.8
  • pg_snakeoil 1.3 → 1.4
  • pg_jsonschema 0.3.2 → 0.3.3
  • pg_incremental 1.1.1 → 1.2.0
  • pg_stat_monitor 2.1.0 → 2.1.1
  • ddl_historization 0.7 → 0.0.7(错误修复)
  • pg_sqlog 3.1.7 → 1.6(错误修复)
  • pg_random 删除开发后缀(错误修复)
  • asn1oid 1.5 → 1.6
  • table_log 0.6.1 → 0.6.4

接口变更

  • 增加了新的 Docker 参数:docker_datadocker_storage_driver#521@waitingsong 提供)
  • 增加了新的基础设施参数:alertmanager_port,让您指定 AlertManager 端口
  • 增加了新的基础设施参数:certbot_sign,在 nginx 初始化期间申请证书?(默认为 false)
  • 增加了新的基础设施参数:certbot_email,指定通过 Certbot 请求证书时使用的邮箱
  • 增加了新的基础设施参数:certbot_options,指定 Certbot 的额外参数
  • 更新 IvorySQL,从 IvorySQL 4.4 开始将其默认二进制文件放在 /usr/ivory-4
  • pg_lc_ctype 和其他区域相关参数的默认值从 en_US.UTF-8 更改为 C
  • 对于 PostgreSQL 17,如果使用 UTF8 编码与 CC.UTF-8 区域,PostgreSQL 的内置本地化规则现在优先
  • configure 自动检测 PG 版本和环境是否都支持 C.utf8,并相应调整区域相关选项
  • 将默认 IvorySQL 二进制路径设置为 /usr/ivory-4
  • 更新 pg_packages 的默认值为 pgsql-main patroni pgbouncer pgbackrest pg_exporter pgbadger vip-manager
  • 更新 repo_packages 的默认值为 [node-bootstrap, infra-package, infra-addons, node-package1, node-package2, pgsql-utility, extra-modules]
  • /etc/profile.d/node.sh 中删除 LANGLC_ALL 环境变量设置
  • 现在使用 bento/rockylinux-8bento/rockylinux-9 作为 EL 的 Vagrant box 镜像
  • 增加了新别名 extra_modules,包含额外的可选模块
  • 更新 PostgreSQL 别名:postgresqlpgsql-mainpgsql-corepgsql-full
  • GitLab 仓库现在包含在可用模块中
  • Docker 模块已合并到基础设施模块中
  • node.yml playbook 现在包含 node_pip 任务,在每个节点上配置 pip 镜像
  • pgsql.yml playbook 现在包含 pgbackrest_exporter 任务,用于收集备份指标
  • Makefile 现在允许使用 META/PKG 环境变量
  • 增加 /pg/spool 目录作为 pgBackRest 的临时存储
  • 默认禁用 pgBackRest 的 link-all 选项
  • 默认为 MinIO 仓库启用块级增量备份

错误修复

  • 修复 pg-backup 中的退出状态码(#532@waitingsong 提供)
  • pg-tune-hugepage 中,限制 PostgreSQL 仅使用大页面(#527@waitingsong 提供)
  • 修复 pg-role 任务中的逻辑错误
  • 纠正大页面配置参数的类型转换
  • 修复 slim 模板中 node_repo_modules 的默认值问题

校验和

768bea3bfc5d492f4c033cb019a81d3a  pigsty-v3.4.0.tgz
7c3d47ef488a9c7961ca6579dc9543d6  pigsty-pkg-v3.4.0.d12.aarch64.tgz
b5d76aefb1e1caa7890b3a37f6a14ea5  pigsty-pkg-v3.4.0.d12.x86_64.tgz
42dacf2f544ca9a02148aeea91f3153a  pigsty-pkg-v3.4.0.el8.aarch64.tgz
d0a694f6cd6a7f2111b0971a60c49ad0  pigsty-pkg-v3.4.0.el8.x86_64.tgz
7caa82254c1b0750e89f78a54bf065f8  pigsty-pkg-v3.4.0.el9.aarch64.tgz
8f817e5fad708b20ee217eb2e12b99cb  pigsty-pkg-v3.4.0.el9.x86_64.tgz
8b2fcaa6ef6fd8d2726f6eafbb488aaf  pigsty-pkg-v3.4.0.u22.aarch64.tgz
83291db7871557566ab6524beb792636  pigsty-pkg-v3.4.0.u22.x86_64.tgz
c927238f0343cde82a4a9ab230ecd2ac  pigsty-pkg-v3.4.0.u24.aarch64.tgz
14cbcb90693ed5de8116648a1f2c3e34  pigsty-pkg-v3.4.0.u24.x86_64.tgz

v3.3.0

  • 可用扩展总数增加到 404
  • PostgreSQL 二月小版本更新:17.4、16.8、15.12、14.17、13.20
  • 新功能:app.yml 脚本,用于自动安装 Odoo、Supabase、Dify 等应用。
  • 新功能:在 infra_portal 中进一步自定义 Nginx 配置。
  • 新功能:增加 Certbot 支持,快速申请免费 HTTPS 证书。
  • 新功能:pg_default_extensions 现在支持纯文本扩展列表。
  • 新功能:默认仓库现在包含 mongo、redis、groonga、haproxy 等。
  • 新参数:node_aliases,为节点添加命令别名。
  • 修复:解决 Bootstrap 脚本中的默认 EPEL 仓库地址问题。
  • 改进:为 Debian Security 仓库添加阿里云镜像。
  • 改进:IvorySQL 内核的 pgBackRest 备份支持。
  • 改进:PolarDB 的 ARM64 和 Debian/Ubuntu 支持。
  • pg_exporter 0.8.0 现在支持 pgbouncer 1.24 中的新指标。
  • 新功能:gitdockersystemctl 等常用命令的自动补全 #506 #507@waitingsong 提供。
  • 改进:优化 pgbouncer 配置模板中的 ignore_startup_parameters #488@waitingsong 提供。
  • 新主页设计:Pigsty 的网站现在拥有全新的外观。
  • 扩展目录:RPM/DEB 二进制包的详细信息和下载链接。
  • 扩展构建:pig CLI 现在自动设置 PostgreSQL 扩展构建环境。

更多版本信息请参考 GitHub 发布页面


v3.2.2

变更内容

  • 升级 IvorySQL 至4.2版本(基于 PostgreSQL 17.2)
  • 为 PolarDB 内核添加 Arm64 和 Debian 支持
  • 在默认infra_packages中添加 certbot 和 certbot-nginx
  • 增加 pgbouncer 的 max_prepared_statements 参数至256
  • 移除pgxxx-citus包别名
  • pg_extensions中默认隐藏pgxxx-olap类别(因为存在两对扩展冲突)

v3.2.1

亮点特性

  • PG 扩展插件数量提升至350个,新增强力 Rust 扩展 anon。
  • IvorySQL 支持更新至 PG17 兼容的4.0版本
  • 使用 Pigsty 编译的 Citus,TimescaleDB 与 PGroonga。
  • 添加 Odoo 一键自建模板与新 app.yml 剧本

新增 13 扩展插件:

  • 新增 pg_anon 2.0.0
  • 新增 omnisketch 1.0.2
  • 新增 ddsketch 1.0.1
  • 新增 pg_duration 1.0.1
  • 新增 ddl_historization 0.0.7
  • 新增 data_historization 1.1.0
  • 新增 schedoc 0.0.1
  • 新增 floatfile 1.3.1
  • 新增 pg_upless 0.0.3
  • 新增 pg_task 1.0.0
  • 新增 pg_readme 0.7.0
  • 新增 vasco 0.1.0
  • 新增 pg_xxhash 0.0.1

更新扩展版本

  • lower_quantile 1.0.3
  • quantile 1.1.8
  • sequential_uuids 1.0.3
  • pgmq 1.5.0 (subdir)
  • floatvec 1.1.1
  • pg_parquet 0.2.0
  • wrappers 0.4.4
  • pg_later 0.3.0
  • topn fix for deb.arm64
  • add age 17 on debian
  • powa + pg17, 5.0.1
  • h3 + pg17
  • ogr_fdw + pg17
  • age + pg17 1.5 on debian
  • pgtap + pg17 1.3.3
  • repmgr
  • topn + pg17
  • pg_partman 5.2.4
  • credcheck 3.0
  • ogr_fdw 1.1.5
  • ddlx 0.29
  • postgis 3.5.1
  • tdigest 1.4.3
  • pg_repack 1.5.2

v3.2.0

亮点特性

  • Pigsty 命令行工具:pig 0.2.0,可用于管理扩展插件。
  • 提供五大发行版上 390 个扩展 的 ARM64 扩展支持
  • Supabase 发布周最新版本更新,全发行版均可自建。
  • Grafana 更新至 11.4,新增 infinity 数据源。

软件包变化

  • 新增扩展

  • 更新扩展

    • pgvectorscale 0.4.0 -> 0.5.1
    • pg_parquet 0.1.0 -> 0.1.1
    • pg_polyline 0.0.1
    • pg_cardano 1.0.2 -> 1.0.3
    • pg_vectorize 0.20.0
    • pg_duckdb 0.1.0 -> 0.2.0
    • pg_search 0.13.0 -> 0.13.1
    • aggs_for_vecs 1.3.1 -> 1.3.2
    • pgoutput 被标记为新的 PostgreSQL Contrib 扩展
  • 基础设施

    • 新增 promscale 0.17.0
    • 新增 grafana-plugins 11.4
    • 新增 grafana-infinity-plugins
    • 新增 grafana-victoriametrics-ds
    • 新增 grafana-victorialogs-ds
    • vip-manager 2.8.0 -> 3.0.0
    • vector 0.42.0 -> 0.43.0
    • grafana 11.3 -> 11.4
    • prometheus 3.0.0 -> 3.0.1 (软件包名从 prometheus2 变更为 prometheus)
    • nginx_exporter 1.3.0 -> 1.4.0
    • mongodb_exporter 0.41.2 -> 0.43.0
    • VictoriaMetrics 1.106.1 -> 1.107.0
    • VictoriaLogs 1.0.0 -> 1.3.2
    • pg_timetable 5.9.0 -> 5.10.0
    • tigerbeetle 0.16.13 -> 0.16.17
    • pg_export 0.7.0 -> 0.7.1
  • 缺陷修复

    • el8.aarch64 添加 python3-cdiff 修复 patroni 依赖错漏问题
    • el9.aarch64 添加 timescaledb-tools,修复官方仓库缺失问题
    • el9.aarch64 添加 pg_filedump,修复官方仓库缺失问题
  • 移除扩展

    • pg_mooncake 因为与 pg_duckdb 冲突而被移除。
    • pg_top 因为出现太多版本出现缺失,因质量问题而淘汰。
    • hunspell_pt_pt 因为与 PG 官方字典文件冲突而被淘汰。
    • pg_timeit 因为无法在 AARCH64 架构上使用而被淘汰。
    • pgdd 因为缺乏维护,PG 17 与 pgrx 版本老旧而被标记为弃用。
    • old_snapshotadminpack 被标记为 PG 17 不可用。
    • pgml 被设置为默认不下载不安装。

API 变化

  • repo_url_packages 参数现在默认值为空数组,因为所有软件包现在都通过操作系统包管理器进行安装。
  • grafana_plugin_cache 参数弃用,现在 Grafana 插件通过操作系统包管理器进行安装
  • grafana_plugin_list 参数弃用,现在 Grafana 插件通过操作系统包管理器进行安装
  • 原名为 prod 的 36 节点仿真模板现在重命名为 simu
  • 原本在 node_id/vars 针对每个发行版代码生成的配置,现在同样针对 aarch64 生成。
  • infra_packages 中默认添加命令行管理工具 pig
  • configure 命令同样会修改自动生成配置文件中 pgsql-xxx 别名的版本号。
  • adminpack 在 PG 17 中被移除,因此从 Pigsty 默认扩展中被移除。

问题修复

  • 修复了 pgbouncer 仪表盘选择器问题 #474
  • pg-pitr 新增 --arg value 参数解析支持 by @waitingsong
  • 修复 Redis 日志信息 typo by @waitingsong

软件包校验和

8fdc6a60820909b0a2464b0e2b90a3a6  pigsty-v3.2.0.tgz
d2b85676235c9b9f2f8a0ad96c5b15fd  pigsty-pkg-v3.2.0.el9.aarch64.tgz
649f79e1d94ec1845931c73f663ae545  pigsty-pkg-v3.2.0.el9.x86_64.tgz
c42da231067f25104b71a065b4a50e68  pigsty-pkg-v3.2.0.d12.aarch64.tgz
ebb818f98f058f932b57d093d310f5c2  pigsty-pkg-v3.2.0.d12.x86_64.tgz
24c0be1d8436f3c64627c12f82665a17  pigsty-pkg-v3.2.0.u22.aarch64.tgz
0b9be0e137661e440cd4f171226d321d  pigsty-pkg-v3.2.0.u22.x86_64.tgz

v3.1.0

亮点特性

  • PostgreSQL 17 现已成为默认使用的主要版本 (17.2)
  • Ubuntu 24.04 系统支持
  • arm 架构支持:EL9, Debian12, Ubuntu 22.04
  • Supabase 一键自建,新的剧本 supabase.yml
  • MinIO 最佳实践改进,配置模板与 Vagrant 模板
  • 提供了一系列开箱即用的配置模板与文档说明。
  • 允许在 configure 过程中使用 -v|--version 指定使用的 PG 大版本。
  • 调整 PG 默认插件策略:默认安装 pg_repack, wal2json 以及 pgvector 三个关键扩展。
  • 大幅简化 repo_packages 本地软件源构建逻辑,允许在 repo_packages 中使用软件包组别名
  • 提供了 Babelfish,IvorySQL,PolarDB 的软件源镜像,简化三者的安装。
  • 默认启用数据库校验和。
  • 修复 ETCD 与 MINIO 日志面板

软件升级

  • PostgreSQL 17.2, 16.6, 15.10, 14.15, 13.18, 12.22
  • PostgreSQL 扩展版本变动请参考:/ext/
  • Patroni 4.0.4
  • MinIO 20241107 / MCLI 20241117
  • Rclone 1.68.2
  • Prometheus: 2.54.0 -> 3.0.0
  • VictoriaMetrics 1.102.1 -> 1.106.1
  • VictoriaLogs v0.28.0 -> 1.0.0
  • vslogcli 1.0.0
  • MySQL Exporter 0.15.1 -> 0.16.0
  • Redis Exporter 1.62.0 -> 1.66.0
  • MongoDB Exporter 0.41.2 -> 0.42.0
  • Keepalived Exporter 1.3.3 -> 1.4.0
  • DuckDB 1.1.2 -> 1.1.3
  • etcd 3.5.16 -> 3.5.17
  • tigerbeetle 16.8 -> 0.16.13

API 变更

  • repo_upstream:针对每个具体的操作系统发行版生成默认值:roles/node_id/vars
  • repo_packages:允许使用 package_map 中定义的别名。
  • repo_extra_packages:新增未指定时的默认值,允许使用 package_map 中定义的别名。
  • pg_checksum:默认值修改为 true,默认打开。
  • pg_packages:默认值修改为:postgresql, wal2json pg_repack pgvector, patroni pgbouncer pgbackrest pg_exporter pgbadger vip-manager
  • pg_extensions:默认值修改为空数组 []
  • infra_portal:允许为 home 服务器指定 path,替代默认的本地仓库路径 nginx_home (/www)

校验和

e62f9ce9f89a58958609da7b234bf2f2  pigsty-v3.1.0.tgz

v3.0.4

特性

  • 针对 PostgreSQL 17 编译了所有支持的 Pigsty 扩展插件
  • 提供了全新的 OLAP 扩展支持:pg_duckdbpg_parquet
  • 简化并优化了最新版本 Supabase 自建的流程
  • 新增参数 docker_image,允许在 Docker 安装后自动拉取镜像。

扩展

欢迎查阅我们最新的 PostgreSQL 扩展目录: /ext/

统计项总计PGDGPIGSTYMISCMISSPG17PG16PG15PG14PG13PG12
EL 系统扩展33813413047298334336328319310
Deb 系统扩展3261091437419290322324316307300
RPM 软件包31312212946275309311303294285
DEB 软件包298931426419264294296288279272

版本升级

  • 新的 PGSQL 扩展

  • 升级与跟进 PG 扩展

    • pg_search 0.11.0
    • pg_analytics 0.2.0
    • plv8 3.2.3
    • supautils 2.5.0
    • icu_ext 1.9.0
    • redis_fdw 17
    • pg_failover_slots 1.1.0
    • pg_later 0.1.3
    • plprql 1.0.0
    • pg_vectorize 0.18.3
    • unit 7.7 -> 7.9
    • log_fdw 1.4
    • pg_duckdb 0.1.0
    • pg_graphql 1.5.9 (+17)
    • pg_jsonschema 0.3.2 (+17)
    • pgvectorscale 0.4.0 (+17)
    • wrappers 0.4.3 +pg17
    • pg_ivm 1.9
    • pg_timeseries 0.1.6
    • pgmq 1.4.4
    • pg_protobuf 16 17
    • pg_uuidv7 1.6
    • pg_readonly
    • pgddl 0.28
    • pg_safeupdate
    • pg_stat_monitor 2.1
    • pg_profile 4.7
    • system_stats 3.2
    • pg_auth_mon 3.0
    • login_hook 1.6
    • logerrors 2.1.3
    • pg-orphaned
    • pgnodemx 1.7
    • sslutils 1.4 (deb+pg16,17)
    • timestamp9 (deb)
  • 修复不支持 PG16/17的扩展

    • pg_mon
    • pg_uri
    • agg_for_vecs
    • quantile
    • lower_quantile
    • pg_protobuf
    • acl
    • pg_emailaddr
    • pg_zstd
    • smlar
    • geohash
    • pgsmcrypto (+17)
    • pg_tiktoken (+17)
    • pg_idkit (+17)
  • 基础设施软件包

    • Grafana 11.3
    • duckdb 1.1.2
    • etcd 3.5.16
    • ferretdb 1.24.0
    • minio 20241013133411
    • mcli 2024101313411
    • pushgateway 1.10
    • tigerbeetle 0.16.8
    • mongodb_exporter 0.41.2
    • redis_exporter 1.64.1
    • vector 0.41.1
    • vip-manager 2.7
    • sealos 5.0.1

v3.0.3

特性

  • 提供对最新发布的 PostgreSQL 17 支持。
  • 优化了 etcd 配置,监控,与告警规则
  • (Oracle 兼容的)IvorySQL 3.4 支持,与 PostgreSQL 16.4 同步

版本升级

  • PostGIS 3.5
  • Grafana 11.2
  • duckdb 1.1
  • pg_search 0.10.2
  • pg_analytics 0.1.4

v3.0.2

特性

  • 精简安装模式:使用 slim.yml 进行最精简的 HA PGSQL 部署。
  • PolarDB PG 15 的原生支持。
  • 优化 monitor.pg_table_bloatmonitor.pg_index_bloat,使用安全定义包装函数规避 PolarDB 统计视图权限问题。
  • 在各模块的监控注册阶段,尊重 prometheus_enabledgrafana_enabled 配置选项,关闭时不再注册。
  • /etc/profile.d/pgsql.sh 中添加 PGDATABASEPGPORT 环境变量,设置为 pg_primary_db(默认postgres

变更

  • 在 Pigsty PGSQL 仓库中移除 PolarDB 11 与 CloudberryDB 1.5.4 的 RPM/APT 包。
  • 使用专用的仓库分发 PolarDB 15 与 CloudberryDB 1.6.0 的 RPM/APT 包。

问题修复

  • 修复 Redis 的 /etc/tmp.files.d 文件名错误。
  • 在管理 pgbouncer 用户时,设置 PGHOSTPGPORT 环境变量。
  • 临时移除 pg_snakeoil 扩展支持,因为 EL8 上游源 clamv 出现依赖缺失问题。
  • 移除 pgsql 角色的 Notify / Handler,以兼容更老的 Ansible 2.9 版本。

v3.0.1

特性改进

  • PolarDB Oracle 兼容性模式支持(需要第三方商业闭源内核)
  • 使用 Oracle 兼容的 SQL 语法改写监控视图与相关 SQL 语句
  • Patroni 4 支持与适配
  • 新增扩展 pg_analytics,通过 duckdb 为 PG 加装分析能力
  • 添加新扩展:odbc_fdwjdbc_fdw,提供通用的外部数据源连接能力
  • 仓库添加新内核 cloudberrydb (Greenplum 原班开发者的开源分支)
  • 仓库添加新工具 walminer,从 WAL(replica 等级)中提取原始 SQL。(高级特性需自行购买 License)
  • 更新执行计划可视化工具 Pev2 版本至 1.12.1
  • 新增 Grafana 插件:volkovlabs-rss-datasource
  • 在 PGCAT databases 监控面板中添加了已安装和待安装的扩展插件
  • PGSQL 主库初始化后,会重启一次以便 pg_param & pg_files 生效,因此 Supabase PG / PolarDB 集群置备后无需重启。

问题修复

  • 修复了 Grafana 11.1.4 面板插件默认不加载的问题
  • 修复了特定操作系统上 BlackBox Exporter Ping 探针失效的问题
  • 确保 /var/run/postgresql 与 /var/run/redis 临时目录总是在重启后自动创建
  • 修复了 cache.yml 剧本没有正确移除老旧的 patroni 3.0.4 RPM 包问题
  • 修复了个别告警规则中的描述信息错误
  • 移除了 Patroni 配置文件中过时的 Bootstrap User/HBA 参数

v3.0.0

亮点特性

  • 扩展大爆炸

Pigsty v3 提供了史无前例的 333 个可用扩展插件。 包括 121 个扩展 RPM包133DEB包,数量已经超过了 PGDG 官方仓库提供的扩展数量总和(135 RPM/ 109 DEB)。 而且,Pigsty 还将 EL 系统与 Debian 生态的独有 PG 扩展插件相互移植,实现了两大发行版的插件生态大对齐。

- timescaledb periods temporal_tables emaj table_version pg_cron pg_later pg_background pg_timetable
- postgis pgrouting pointcloud pg_h3 q3c ogr_fdw geoip #pg_geohash #mobilitydb
- pgvector pgvectorscale pg_vectorize pg_similarity pg_tiktoken pgml #smlar
- pg_search pg_bigm zhparser hunspell
- hydra pg_lakehouse pg_duckdb duckdb_fdw pg_fkpart pg_partman plproxy #pg_strom citus
- pg_hint_plan age hll rum pg_graphql pg_jsonschema jsquery index_advisor hypopg imgsmlr pg_ivm pgmq pgq #rdkit
- pg_tle plv8 pllua plprql pldebugger plpgsql_check plprofiler plsh #pljava plr pgtap faker dbt2
- prefix semver pgunit md5hash asn1oid roaringbitmap pgfaceting pgsphere pg_country pg_currency pgmp numeral pg_rational pguint ip4r timestamp9 chkpass #pg_uri #pgemailaddr #acl #debversion #pg_rrule
- topn pg_gzip pg_http pg_net pg_html5_email_address pgsql_tweaks pg_extra_time pg_timeit count_distinct extra_window_functions first_last_agg tdigest aggs_for_arrays pg_arraymath pg_idkit pg_uuidv7 permuteseq pg_hashids
- sequential_uuids pg_math pg_random pg_base36 pg_base62 floatvec pg_financial pgjwt pg_hashlib shacrypt cryptint pg_ecdsa pgpcre icu_ext envvar url_encode #pg_zstd #aggs_for_vecs #quantile #lower_quantile #pgqr #pg_protobuf
- pg_repack pg_squeeze pg_dirtyread pgfincore pgdd ddlx pg_prioritize pg_checksums pg_readonly safeupdate pg_permissions pgautofailover pg_catcheck preprepare pgcozy pg_orphaned pg_crash pg_cheat_funcs pg_savior table_log pg_fio #pgpool pgagent
- pg_profile pg_show_plans pg_stat_kcache pg_stat_monitor pg_qualstats pg_store_plans pg_track_settings pg_wait_sampling system_stats pg_meta pgnodemx pg_sqlog bgw_replstatus pgmeminfo toastinfo pagevis powa pg_top #pg_statviz #pgexporter_ext #pg_mon
- passwordcheck supautils pgsodium pg_vault anonymizer pg_tde pgsmcrypto pgaudit pgauditlogtofile pg_auth_mon credcheck pgcryptokey pg_jobmon logerrors login_hook set_user pg_snakeoil pgextwlist pg_auditor noset #sslutils
- wrappers multicorn mysql_fdw tds_fdw sqlite_fdw pgbouncer_fdw mongo_fdw redis_fdw pg_redis_pubsub kafka_fdw hdfs_fdw firebird_fdw aws_s3 log_fdw #oracle_fdw #db2_fdw
- orafce pgtt session_variable pg_statement_rollback pg_dbms_metadata pg_dbms_lock pgmemcache #pg_dbms_job #babelfish
- pglogical pgl_ddl_deploy pg_failover_slots wal2json wal2mongo decoderbufs decoder_raw mimeo pgcopydb pgloader pg_fact_loader pg_bulkload pg_comparator pgimportdoc pgexportdoc #repmgr #slony
- gis-stack rag-stack fdw-stack fts-stack etl-stack feat-stack olap-stack supa-stack stat-stack json-stack
  • 可插拔内核

Pigsty v3 允许您更换 PostgreSQL 内核,目前支持了 SQL Server 兼容的 Babelfish (线缆协议级仿真),Oracle 兼容的 IvorySQL,以及 PG 版的 RAC PolarDB;此外,现在自托管 Supabase 也在 Debian 系统中可用。 您可以让 Pigsty 中带有 HA,IaC,PITR,监控的生产级 PostgreSQL 集群仿真 MSSQL (via Babelfish),Oracle via (IvorySQL),Oracle RAC (via PolarDB), MongoDB(via FerretDB),以及 Firebase (via Supabase)。

  • 专业级服务

我们现在提供 Pigsty Pro 专业版,在开源版的功能基础上提供增值服务。专业版提供额外的功能模块:MSSQL,Oracle,Mongo,K8S,Victoria,Kafka,TigerBeetle 等……,并提供更广泛的 PG 大版本、操作系统、芯片架构的支持。 提供针对全系操作系统精准小版本定制的离线安装包,以及 EL7,Debian 11,Ubuntu 20.04 等过保老系统的支持;此外,专业版还提供内核可插拔定制服务,并对 PolarDB PG 的原生部署、监控管控支持以满足“国产化”需要。

使用以下命令快速安装体验:

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

重大变更

本次 Pigsty 发布调整大版本号,从 2.x 升级到 3.0,带有一些重大变更:

  • 首要支持操作系统调整为:EL 8 / EL 9 / Debian 12 / Ubuntu 22.04

    • EL7 / Debian 11 / Ubuntu 20.04 等系统进入弃用阶段,不再提供支持
    • 有在这些系统上运行需求的用户请考虑我们的 订阅服务
  • 默认使用在线安装,不再提供离线软件包,从而解决操作系统小版本兼容性问题。

    • bootstrap 过程现在不再询问是否下载离线安装包,但如果 /tmp/pkg.tgz 存在,仍然会自动使用离线安装包。
    • 有离线安装需求请自行制作离线软件包或考虑我们的 订阅服务
  • Pigsty 使用的上游软件仓库进行统一调整,地址变更,并对所有软件包进行 GPG 签名与校验

    • 标准仓库: https://repo.pigsty.io/{apt/yum}
    • 国内镜像: https://repo.pigsty.cc/{apt/yum}
  • API 参数变更与配置模板变更

    • EL 系与 Debian 系配置模板现在收拢统一,有差异的参数统一放置于 roles/node_id/vars/ 目录进行管理。
    • 配置目录变更,所有配置文件模板统一放置在 conf 目录下,并分为 default, dbms, demo, build 四大类。

其他新特性

  • PG OLAP 分析能力史诗级加强:DuckDB 1.0.0,DuckDB FDW,以及 PG Lakehouse,Hydra 移植至 Deb 系统中。
  • PG 向量检索与全文检索能力加强:Vectorscale 提供 DiskANN 向量索引,Hunspell 分词字典支持,pg_search 0.8.6。
  • 帮助 ParadeDB 解决了软件包构建问题,现在我们在 Debian/Ubuntu 上也能提供这一扩展。
  • Supabase 所需的扩展在 Debian/Ubuntu 上全部可用,Supabase 现在可在全 OS 上自托管。
  • 提供了场景化预置扩展堆栈的能力,如果您不知道安装哪些扩展,我们准备了针对特定应用场景的扩展推荐包(Stack)。
  • 针对所有 PostgreSQL 生态的扩展,制作了元数据表格、文档、索引、名称映射,针对 EL 与 Deb 进行对齐,确保扩展可用性。
  • 为了解决 DockerHub 被 Ban 的问题,我们加强了 proxy_env 参数的功能并简化其配置方式。
  • 建设了一个专用的新软件仓库,提供了 12-17 版本的全部扩展插件,其中,PG16 的扩展仓库会在 Pigsty 默认的版本中实装。
  • 现有软件仓库升级改造,使用标准的签名与校验机制,确保软件包的完整性与安全性。APT 仓库采用新的标准布局通过 reprepro 构建。
  • 提供了 1,2,3,4,43 节点的沙箱环境:meta, dual, trio, full, prod,以及针对 7 大 OS Distro 的快捷配置模板。
  • PG Exporter 新增了 PostgreSQL 17 与 pgBouncer 1.23 新监控指标收集器的定义,与使用这些指标的 Grafana Panel
  • 监控面板修缮,修复了各种问题,为 PGSQL Pgbouncer 与 PGSQL Patroni 监控面板添加了日志仪表盘。
  • 使用全新的 cache.yml Ansible 剧本,替换了原有制作离线软件包的 bin/cachebin/release-pkg 脚本。

API 变更

  • 新参数选项: pg_mode 现在支持的模式有 pgsql, citus, gpsql, mssql, ivory, polar,用于指定 PostgreSQL 集群的模式
    • pgsql: 标准 PostgreSQL 高可用集群
    • citus: Citus 水平分布式 PostgreSQL 原生高可用集群
    • gpsql: 用于 Greenplum 与 GP 兼容数据库的监控(专业版)
    • mssql: 安装 Babelfish,提供 Microsoft SQL Server 兼容性模式的标准 PostgreSQL 高可用集群,线缆协议级支持,扩展不可用
    • ivory: 安装 IvorySQL 提供的 Oracle 兼容性 PostgreSQL 高可用集群,Oracle 语法/数据类型/函数/存储过程兼容,扩展不可用 (专业版)
    • polar: 安装 PolarDB for PostgreSQL (PG RAC)开源版本,提供国产化数据库能力支持,扩展不可用。(专业版)
  • 新参数: pg_parameters,用于在实例级别指定 postgresql.auto.conf 中的参数,覆盖集群配置,实现不同实例成员的个性化配置。
  • 新参数: pg_files,用于将额外的文件拷贝到 PGDATA 数据目录,针对需要 License 文件的商业版 PostgreSQL 分叉内核设计。
  • 新参数: repo_extra_packages,用于额外指定需要下载的软件包,与 repo_packages 共同使用,便于指定 OS 版本独有的扩展列表。
  • 参数重命名: patroni_citus_db 重命名为 pg_primary_db,用于指定集群中的主要数据库(在 Citus 模式中使用)
  • 参数强化:proxy_env 中的代理服务器配置会写入 Docker Daemon,解决科学上网问题,configure -x 选项会自动在配置中写入当前环境中的代理服务器配置。
  • 参数强化:infra_portal 参数现在支持指定 path 选项,对外暴露本机上的目录,提供 web 服务。
  • 参数强化:repo_url_packages 中的 repo.pigsty.io 会在区域为中国时自动替换为 repo.pigsty.cc,解决科学上网问题,此外,现在可以指定下载后的文件名称。
  • 参数强化:pg_databases.extensions 中的 extension 字段现在可以支持字典与扩展名字符串两种模式,字典模式提供 version 支持,允许安装特定版本的扩展。
  • 参数强化:repo_upstream 参数如果没有显式覆盖定义,将从 rpm.ymldeb.yml 中定义的 repo_upstream_default 提取对应系统的默认值。
  • 参数强化:repo_packages 参数如果没有显式覆盖定义,将从 rpm.ymldeb.yml 中定义的 repo_packages_default 提取对应系统的默认值。
  • 参数强化:infra_packages 参数如果没有显式覆盖定义,将从 rpm.ymldeb.yml 中定义的 infra_packages_default 提取对应系统的默认值。
  • 参数强化:node_default_packages 参数如果没有显式覆盖定义,将从 rpm.ymldeb.yml 中定义的 node_packages_default 提取对应系统的默认值。
  • 参数强化:pg_packagespg_extensions 中的扩展现在都会从 rpm.ymldeb.yml 中定义的 pg_package_map 执行一次查找与翻译。
  • 参数强化:node_packagespg_extensions 参数中指定的软件包在安装时会升级至最新版本, node_packages 中现在默认值变为 [openssh-server],帮助修复 OpenSSH CVE
  • 参数强化:pg_dbsu_uid 会自动根据操作系统类型调整为 26 (EL)或 543 (Debian),避免了手工调整。
  • 设置了 pgbouncer 默认参数,max_prepared_statements = 128 启用了事物池化模式下的准备语句支持,并设置 server_lifetime 为 600,
  • 修改了 patroni 模板默认参数,统一增大 max_worker_processes +8 可用后端进程,提高 max_wal_sendersmax_replication_slots 至 50,并增大 OLAP 模板临时文件的大小限制为主磁盘的 1/5

版本升级

截止至发布时刻,Pigsty 主要组件的版本升级如下:

Pigsty 重新编译了所有 PostgreSQL 扩展插件,PostgreSQL 扩展插件的最新版本,可用的 333 个扩展插件请参考 扩展列表

新应用

Pigsty 现在提供开箱即用的 Dify 与 Odoo 两款使用 PostgreSQL 软件的 Docker Compose 模板:

  • Dify: AI 智能体工作流编排与 LLMOps,使用 PostgreSQL 作为元数据库,PGVector 作为向量存储。
  • Odoo: 企业级开源 ERP 系统,使用 PostgreSQL 作为底层数据库。

Pigsty 专业版现在提供试点的 Kubernetes 部署支持与 Kafka KRaft 集群部署与监控支持

  • KUBE: 使用 cri-dockerd 或 containerd 部署由 Pigsty 托管的 Kubernetes 集群
  • KAFKA:部署由 Kraft 协议支持的高可用 Kafka 集群

问题修复

  • 修复了 Ubuntu / Debian 系统中,节点重启后可能出现的 postgresql-common 服务自动启动替代默认数据库集群的缺陷
  • 通过 node_packages 中的默认值 [openssh-server],CVE-2024-6387 可以在 Pigsty 安装过程中被自动修复。
  • 修复了 Loki 解析 Nginx 日志标签基数过大导致的内存消耗问题。
  • 修复了 EL8 系统中上游 Ansible 依赖变化导致的 bootstrap 失效问题(python3.11-jmespath 升级至 python3.12-jmespath)

v2.7.0

亮点特性

新增了大量强力扩展插件,特别是一些使用 rustpgrx 进行开发的强力扩展:

  • pg_search v0.7.0:使用 BM25 算法对 SQL 表进行全文搜索
  • pg_lakehouse v0.7.0:在对象存储(如 S3)和表格式(如 DeltaLake)上进行查询的引擎
  • pg_analytics v0.6.1:加速 PostgreSQL 内部的分析查询处理
  • pg_graphql v1.5.4:为 PostgreSQL 数据库提供 GraphQL 支持
  • pg_jsonschema v0.3.1:提供 JSON Schema 校验的 PostgreSQL 扩展
  • wrappers v0.3.1:由 Supabase 提供的 PostgreSQL 外部数据封装器集合
  • pgmq v1.5.2:轻量级消息队列,类似于 AWS SQS 和 RSMQ
  • pg_tier v0.0.3:支将将冷数据分级存储到 AWS S3
  • pg_vectorize v0.15.0: 在 PG 中实现 RAG 向量检索的封装
  • pg_later v0.1.0:现在执行 SQL,并在稍后获取结果
  • pg_idkit v0.2.3:生成多种流行类型的标识符(UUID)
  • plprql v0.1.0:在 PostgreSQL 中使用 PRQL 查询语言
  • pgsmcrypto v0.1.0:PostgreSQL 的国密 SM 算法扩展
  • pg_tiktoken v0.0.1:计算 OpenAI 使用的 Token 数量
  • pgdd v0.5.2:通过纯 SQL 接口,访问数据目录的元数据

当然,也有一些使用原生 C 和 C++ 开发的强力扩展:

  • parquet_s3_fdw 1.1.0:从 S3 存取 Parquet 格式文件,作为湖仓之用
  • plv8 3.2.2:使用 V8 引擎,允许在 PostgreSQL 中使用 Javascript 语言编写存储过程
  • md5hash 1.0.1:用于存储原生 MD5 哈希数据类型,而非文本。
  • pg_tde 1.0 alpha:PostgreSQL 的实验性加密存储引擎。
  • pg_dirtyread 2.6:从 PostgreSQL 表中读取未清理的死元组,用于脏读
  • 新的 deb PGDG 扩展:pg_roaringbitmap, pgfaceting, mobilitydb, pgsql-http, pg_hint_plan, pg_statviz, pg_rrule
  • 新的 rpm PGDG 扩展:pg_profile, pg_show_plans, 使用 PGDG 的 pgsql_http, pgsql_gzip, pg_net, pg_bigm 替代 Pigsty 维护的 RPM。

新特性

  • 允许 Pigsty 在特定 Docker 虚拟机镜像中运行。
  • 针对 Ubuntu 与 EL 系操作系统发行版准备了 INFRA & PGSQL 模块的 arm64 软件包
  • 新安装脚本,可从 cloudflare 下载软件,可以指定版本,提供更完善的提示信息。
  • 新增的 PGSQL PITR 监控面板,用于在 PITR 过程中提供更好的可观测性
  • 针对在 Docker 虚拟机镜像中运行 Pigsty 进行了一系列铺垫与准备。
  • 新增了 防呆设计,避免在非 Pigsty 纳管的节点上运行 pgsql.yml 剧本 (AdamYLK
  • 针对每个支持的发行版大版本配置了独立的配置文件:el7, el8, el9, debian11, debian12, ubuntu20, ubuntu22

软件版本升级

  • PostgreSQL 16.3
  • Patroni 3.3.0
  • pgBackRest 2.51
  • VIP-Manager v2.5.0
  • Haproxy 2.9.7
  • Grafana 10.4.2
  • Prometheus 2.51
  • Loki & Promtail: 3.0.0 (警告:大版本非兼容性变更!)
  • Alertmanager 0.27.0
  • BlackBox Exporter 0.25.0
  • Node Exporter 1.8.0
  • pgBackrest Exporter 0.17.0
  • duckdb 0.10.2
  • etcd 3.5.13
  • minio-20240510014138 / mcli-20240509170424
  • pev2 v1.8.0 -> v1.11.0
  • pgvector 0.6.1 -> 0.7.0
  • pg_tle: v1.3.4 -> v1.4.0
  • hydra: v1.1.1 -> v1.1.2
  • duckdb_fdw: v1.1.0 重新针对 libduckdb 0.10.2 进行编译
  • pg_bm25 0.5.6 -> pg_search 0.7.0
  • pg_analytics: 0.5.6 -> 0.6.1
  • pg_graphql: 1.5.0 -> 1.5.4
  • pg_net 0.8.0 -> 0.9.1
  • pg_sparse (deprecated)

Docker 应用模板

  • Odoo:开源 ERP 软件与插件
  • Jupyter:使用容器运行 Jupyter Notebook
  • PolarDB:运行“国产数据库” PolarDB,应付信创检查!
  • supabase:更新至最近的 GA 版本
  • bytebase:使用 latest 标签替代特定版本号。
  • pg_exporter:更新了 Docker 镜像的例子。

缺陷修复

  • 修复了 pg_exporters 角色中的变量空白问题。
  • 修复了 minio_cluster 变量没有在全局配置中注释掉的问题
  • 修复了 EL7 模板中的 postgis34 插件名称问题,应该使用 postgis33
  • 修复了 EL8 python3.11-cryptography 依赖名的问题,上游现在变更为 python3-cryptography
  • 修复了 /pg/bin/pg-role 无法在非交互式 Shell 模式下获取操作系统用户名的问题
  • 修复了 /pg/bin/pg-pitr 无法正确提示 -X -P 选项的问题

API 变更

  • 新参数 node_write_etc_hosts,用于控制是否向目标节点的 /etc/hosts 文件写入静态 DNS 解析记录
  • 新增了 prometheus_sd_dir 参数,用于指定 Prometheus 静态服务发现的目标文件目录
  • configure 脚本新增了 -x|--proxy 参数,用于将当前环境的代理信息写入配置文件 by @waitingsong in https://github.com/pgsty/pigsty/pull/405
  • 不再使用 Promtail & Loki 解析 Infra 节点上的 Nginx 日志细节标签,因为这样会导致标签基数爆炸。
  • 在 Prometheus 配置中使用 alertmanager API v2 替代 v1
  • 在 PGSQL 模块中,使用 /pg/cert/ca.crt 代替 /etc/pki/ca.crt,降低对节点根证书的依赖。

新的贡献者

完整的变更日志:https://github.com/pgsty/pigsty/compar

离线软件包校验和

ec271a1d34b2b1360f78bfa635986c3a  pigsty-pkg-v2.7.0.el8.x86_64.tgz
f3304bfd896b7e3234d81d8ff4b83577  pigsty-pkg-v2.7.0.debian12.x86_64.tgz
5b071c2a651e8d1e68fc02e7e922f2b3  pigsty-pkg-v2.7.0.ubuntu22.x86_64.tgz

v2.6.0

亮点特性

软件配置变更

  • 使用 node_repo_modules 替换 node_repo_method 参数,并移除 node_repo_local_urls 参数。
  • 暂时关闭 Grafana 统一告警功能,避免 “Database Locked” 错误。
  • 新增 node_repo_modules 参数,用于指定在节点上添加的上游仓库源。
  • 移除 node_local_repo_urls,其功能由 node_repo_modules & repo_upstream 替代。
  • 移除 node_repo_method 参数,其功能由 node_repo_modules 替代。
  • repo_upstream 添加新的 local 源,并通过 node_repo_modules 使用,替代 node_local_repo_urls 的功能
  • 重排 node_default_packagesinfra_packagespg_packagespg_extensions 参数默认值。
  • repo_upstream 中替换 repo_upstream.baseurl 时,如果 EL8/9 PGDG 小版本特定的仓库可用,使用 major.minor 而不是 major 替换 $releasever,提高小版本兼容性。

软件版本升级

  • Grafana 10.3
  • Prometheus 2.47
  • node_exporter 1.7.0
  • HAProxy 2.9.5
  • Loki / Promtail 2.9.4
  • minio-20240216110548 / mcli-20240217011557
  • etcd 3.5.11
  • Redis 7.2.4
  • Bytebase 2.13.2
  • DuckDB 0.10.0
  • FerretDB 1.19
  • Metabase:新 Docker 应用模板

PostgreSQL 扩展插件

  • PostgreSQL 小版本升级: 16.2, 15.6, 14.11, 13.14, 12.18
  • PostgreSQL 16: 现在被提升为默认主版本
  • pg_exporter 0.6.1:安全修复
  • Patroni 3.2.2
  • pgBadger 12.4
  • pgBackRest 2.50
  • vip-manager 2.3.0
  • PostGIS 3.4.2
  • TimescaleDB 2.14.1
  • 向量扩展 PGVector 0.6.0:新增并行创建 HNSW 索引功能
  • 新增扩展插件 duckdb_fdw v1.1,支持读写 DuckDB 数据 v1.1
  • 新增扩展插件 pgsql-gzip,用于支持 Gzip 压缩解压缩 v1.0.0
  • 新增扩展插件 pg_sparse,高效处理稀疏向量(ParadeDB) v0.5.6
  • 新增扩展插件 pg_bm25,用于支持高质量全文检索 BM25 算法的插件(ParadeDB) v0.5.6
  • 新增扩展插件 pg_analytics,支持 SIMD 与列式存储的 PG 分析插件(ParadeDB) v0.5.6
  • 升级 AIML 插件 pgml 至 v2.8.1,新增 PG 16 支持。
  • 升级列式存储插件 hydra 版本至 v1.1.1,新增 PG 16 支持。
  • 升级图扩展插件 age 至 v1.5.0,新增 PG 16 支持。
  • 升级 GraphQL 插件 pg_graphql 版本至 v1.5.0,支持 Supabase。
330e9bc16a2f65d57264965bf98174ff  pigsty-v2.6.0.tgz
81abcd0ced798e1198740ab13317c29a  pigsty-pkg-v2.6.0.debian11.x86_64.tgz
7304f4458c9abd3a14245eaf72f4eeb4  pigsty-pkg-v2.6.0.debian12.x86_64.tgz
f914fbb12f90dffc4e29f183753736bb  pigsty-pkg-v2.6.0.el7.x86_64.tgz
fc23d122d0743d1c1cb871ca686449c0  pigsty-pkg-v2.6.0.el8.x86_64.tgz
9d258dbcecefd232f3a18bcce512b75e  pigsty-pkg-v2.6.0.el9.x86_64.tgz
901ee668621682f99799de8932fb716c  pigsty-pkg-v2.6.0.ubuntu20.x86_64.tgz
39872cf774c1fe22697c428be2fc2c22  pigsty-pkg-v2.6.0.ubuntu22.x86_64.tgz

v2.5.1

跟进 PostgreSQL v16.1, v15.5, 14.10, 13.13, 12.17, 11.22 小版本例行更新。

现在 PostgreSQL 16 的所有重要扩展已经就位(新增 pg_repacktimescaledb 支持)

  • 软件更新:
    • PostgreSQL to v16.1, v15.5, 14.10, 13.13, 12.17, 11.22
    • Patroni v3.2.0
    • PgBackrest v2.49
    • Citus 12.1
    • TimescaleDB 2.13
    • Grafana v10.2.0
    • FerretDB 1.15
    • SealOS 4.3.7
    • Bytebase 2.11.1
  • 移除 PGCAT 监控面板中查询对 monitor 模式前缀(允许用户将 pg_stat_statements 扩展装到别的地方)
  • 新的配置模板 wool.yml,为阿里云免费99 ECS 单机针对设计。
  • 为 EL9 新增 python3-jmespath 软件包,解决 Ansible 依赖更新后 bootstrap 缺少 jmespath 的问题
31ee48df1007151009c060e0edbd74de  pigsty-pkg-v2.5.1.el7.x86_64.tgz
a40f1b864ae8a19d9431bcd8e74fa116  pigsty-pkg-v2.5.1.el8.x86_64.tgz
c976cd4431fc70367124fda4e2eac0a7  pigsty-pkg-v2.5.1.el9.x86_64.tgz
7fc1b5bdd3afa267a5fc1d7cb1f3c9a7  pigsty-pkg-v2.5.1.debian11.x86_64.tgz
add0731dc7ed37f134d3cb5b6646624e  pigsty-pkg-v2.5.1.debian12.x86_64.tgz
99048d09fa75ccb8db8e22e2a3b41f28  pigsty-pkg-v2.5.1.ubuntu20.x86_64.tgz
431668425f8ce19388d38e5bfa3a948c  pigsty-pkg-v2.5.1.ubuntu22.x86_64.tgz

v2.5.0

curl https://get.pigsty.cc/latest | bash

亮点特性

  • Ubuntu / Debian 支持: bullseye, bookworm, jammy, focal

  • 使用 CDN repo.pigsty.cc 软件源,提供 rpm/deb 软件包下载。

  • Anolis 操作系统支持(兼容 EL 8.8)。

  • 使用 PostgreSQL 16 替代 PostgreSQL 14 作为备选主要支持版本

  • 新增了 PGSQL Exporter / PGSQL Patroni 监控面板,重做 PGSQL Query 面板

  • 扩展更新:

    • PostGIS 版本至 3.4(EL8/EL9),EL7 仍使用 PostGIS 3.3
    • 移除 pg_embedding,因为开发者不再对其进行维护,建议使用 pgvector 替换。
    • 新扩展(EL):点云插件 pointcloud 支持,Ubuntu 原生带有此扩展。
    • 新扩展(EL): imgsmlrpg_similaritypg_bigm 用于搜索。
    • 重新编译 pg_filedump 为 PG 大版本无关的软件包。
    • 新收纳 hydra 列存储扩展,不再默认安装 citus 扩展。
  • 软件更新:

    • Grafana 更新至 v10.1.5
    • Prometheus 更新至 v2.47
    • Promtail/Loki 更新至 v2.9.1
    • Node Exporter 更新至 v1.6.1
    • Bytebase 更新至 v2.10.0
    • patroni 更新至 v3.1.2
    • pgbouncer 更新至 v1.21.0
    • pg_exporter 更新至 v0.6.0
    • pgbackrest 更新至 v2.48.0
    • pgbadger 更新至 v12.2
    • pg_graphql 更新至 v1.4.0
    • pg_net 更新至 v0.7.3
    • ferretdb 更新至 v0.12.1
    • sealos 更新至 4.3.5
    • Supabase 支持更新至 20231013070755

Ubuntu 支持说明

Pigsty 支持了 Ubuntu 22.04 (jammy) 与 20.04 (focal) 两个 LTS 版本,并提供相应的离线软件安装包。

相比 EL 系操作系统,一些参数的默认值需要显式指定调整,详情请参考 ubuntu.yml

  • repo_upstream:按照 Ubuntu/Debian 的包名进行了调整
  • repo_packages:按照 Ubuntu/Debian 的包名进行了调整
  • node_repo_local_urls:默认值为 ['deb [trusted=yes] http://${admin_ip}/pigsty ./']
  • node_default_packages
    • zlib -> zlib1g, readline -> libreadline-dev
    • vim-minimal -> vim-tiny, bind-utils -> dnsutils, perf -> linux-tools-generic,
    • 新增软件包 acl,确保 Ansible 权限设置正常工作
  • infra_packages:所有含 _ 的包要替换为 - 版本,此外 postgresql-client-16 用于替换 postgresql16
  • pg_packages:Ubuntu 下惯用 - 替代 _,不需要手工安装 patroni-etcd 包。
  • pg_extensions:扩展名称与 EL 系不太一样,Ubuntu 下缺少 passwordcheck_cracklib 扩展。
  • pg_dbsu_uid: Ubuntu 下 Deb 包不显式指定 uid,需要手动指定,Pigsty 默认分配为 543

API 变更

默认值变化:

  • repo_modules 现在的默认值为 infra,node,pgsql,redis,minio,启用所有上游源

  • repo_upstream 发生变化,现在添加了 Pigsty Infra/MinIO/Redis/PGSQL 模块化软件源

  • repo_packages 发生变化,移除未使用的 karma,mtail,dellhw_exporter,移除了 PG14 主要扩展,新增了 PG16 主要扩展,添加了 virtualenv 包。

  • node_default_packages 发生变化,默认安装 python3-pip 组件。

  • pg_libs: timescaledb 从 shared_preload_libraries 中移除,现在默认不自动启用。

  • pg_extensions 发生变化,不再默认安装 Citus 扩展,默认安装 passwordcheck_cracklib 扩展,EL8,9 PostGIS 默认版本升级至 3.4

    - pg_repack_${pg_version}* wal2json_${pg_version}* passwordcheck_cracklib_${pg_version}*
    - postgis34_${pg_version}* timescaledb-2-postgresql-${pg_version}* pgvector_${pg_version}*
    
  • Patroni 所有模板默认移除 wal_keep_size 参数,避免触发 Patroni 3.1.1 的错误,其功能由 min_wal_size 覆盖。

87e0be2edc35b18709d7722976e305b0  pigsty-pkg-v2.5.0.el7.x86_64.tgz
e71304d6f53ea6c0f8e2231f238e8204  pigsty-pkg-v2.5.0.el8.x86_64.tgz
39728496c134e4352436d69b02226ee8  pigsty-pkg-v2.5.0.el9.x86_64.tgz
e3f548a6c7961af6107ffeee3eabc9a7  pigsty-pkg-v2.5.0.debian11.x86_64.tgz
1e469cc86a19702e48d7c1a37e2f14f9  pigsty-pkg-v2.5.0.debian12.x86_64.tgz
cc3af3b7c12f98969d3c6962f7c4bd8f  pigsty-pkg-v2.5.0.ubuntu20.x86_64.tgz
c5b2b1a4867eee624e57aed58ac65a80  pigsty-pkg-v2.5.0.ubuntu22.x86_64.tgz

v2.4.1

  • Supabase 支持:开源的 Firebase 替代,现可使用 Pigsty 本地托管的 PostgreSQL 实例作为数据存储。
  • PostgresML 支持:使用 SQL 完成经典机器学习算法,训练、微调、调用大语言模型(hugging face)。
  • FerretDB v1.10 支持,在 PostgreSQL 上提供 MongoDB API 与协议兼容能力。
  • GraphQL 扩展: pg_graphql:从现有模式中反射出 GraphQL 模式,提供库内 GraphQL 查询能力。
  • JWT 支持扩展:pgjwt 允许您使用 SQL 验证签发 JWT (JSON Web Tokens)。
  • 密钥存储扩展: vault 可以在提供一个安全存储加密密钥的保险柜。
  • 数据恢复扩展:pg_filedump:可用于快速从 PostgreSQL 二进制文件中恢复数据
  • 图数据库扩展:Apache age,为 PostgreSQL 添加 OpenCypher 查询支持,类似 Neo4J
  • 中文分词扩展:zhparser,为中文全文检索提供分词能力,类似 ElasticSearch。
  • 高效位图扩展:pg_roaringbitmap,在 PostgreSQL 中提供 roaring bitmap 的支持,高效计数聚合统计。
  • 向量嵌入替代:pg_embedding,提供了不同于 pgvector 的另一种 HNSW 替代实现。
  • 可信语言扩展:pg_tle,由 AWS 出品的,允许您打包分发管理由可信存储过程语言编写的函数。
  • HTTP 客户端扩展:pgsql-http:使用 SQL 接口,curl API,发起 HTTP 请求,与各类系统交互。
  • 异步 HTTP 扩展: pg_net 允许您使用 SQL 发起非阻塞的 HTTP/HTTPS 请求。
  • 列式存储引擎:hydra 针对分析场景打造的向量化列存储引擎,原地替代 Citus 列存插件。
  • 其他 PGDG 扩展:新收录8个由 PGDG 维护的扩展插件,Pigsty 支持的插件总数达到 150+。
  • PostgreSQL 16 内核支持,监控云端 RDS / PolarDB for PostgreSQL。

亮点特性

  • Supabase 支持:开源的 Firebase 替代,现可使用 Pigsty 托管的 PostgreSQL 实例存储数据。
  • PostgresML 支持:在 PostgreSQL 运行各类模型(hugging face),向量操作,经典机器学习算法。
  • GraphQL 支持扩展: pg_graphql:从现有模式中反射出 GraphQL 模式,提供库内 GraphQL 查询能力。
  • 异步 HTTP 客户端扩展: pg_net 允许您使用 SQL 发起非阻塞的 HTTP/HTTPS 请求
  • JWT 支持扩展:pgjwt 允许您使用 SQL 验证签发 JWT (JSON Web Tokens)
  • 密钥存储扩展: vault 可以在保险柜里存储加密密钥
  • FerretDB 版本升级至 v1.10
  • 新增组件:pg_filedump:可用于快速从 PostgreSQL 二进制文件中恢复数据
  • 减少 EL9 离线软件包的大小,移除非必须依赖项 proj-data*
  • 修复了 Patroni 3.1.1 的错误
efabe7632d8994f3fb58f9838b8f9d7d  pigsty-pkg-v2.5.0.el7.x86_64.tgz # 1.1G
ea78957e8c8434b120d1c8c43d769b56  pigsty-pkg-v2.5.0.el8.x86_64.tgz # 1.4G
4ef280a7d28872814e34521978b851bb  pigsty-pkg-v2.5.0.el9.x86_64.tgz # 1.3G

v2.4.0

使用 bash -c "$(curl -fsSL https://get.pigsty.cc/latest)" 快速上手。

最新特性

  • PostgreSQL 16 正式发布,Pigsty 提供支持。
  • 可以监控云数据库,RDS for PostgreSQL,以及 PolarDB,提供全新的 PGRDS 监控面板
  • 正式提供商业支持与咨询服务。并发布首个 LTS 版本,为订阅客户提供最长5年的支持。
  • 新扩展插件:Apache AGE, openCypher graph query engine on PostgreSQL
  • 新扩展插件:zhparser, full text search for Chinese language
  • 新扩展插件:pg_roaringbitmap, roaring bitmap for PostgreSQL
  • 新扩展插件:pg_embedding, hnsw alternative to pgvector
  • 新扩展插件:pg_tle, admin / manage stored procedure extensions
  • 新扩展插件:pgsql-http, issue http request with SQL interface
  • 新增插件: pg_auth_mon pg_checksums pg_failover_slots pg_readonly postgresql-unit pg_store_plans pg_uuidv7 set_user
  • Redis 改进:支持 Redis 哨兵监控,配置主从集群的自动高可用。

API 变化

  • 新增参数,REDIS.redis_sentinel_monitor,用于指定 Sentinel 集群监控的主库列表

问题修复

  • 修复 Grafana 10.1 注册数据源时缺少 uid 的问题
MD5 (pigsty-pkg-v2.4.0.el7.x86_64.tgz) = 257443e3c171439914cbfad8e9f72b17
MD5 (pigsty-pkg-v2.4.0.el8.x86_64.tgz) = 41ad8007ffbfe7d5e8ba5c4b51ff2adc
MD5 (pigsty-pkg-v2.4.0.el9.x86_64.tgz) = 9a950aed77a6df90b0265a6fa6029250

v2.3.1

使用 bash -c "$(curl -fsSL https://get.pigsty.cc/latest)" 快速开始。

最新特性

  • pgvector 更新至 0.5,添加 hnsw 算法支持。
  • 支持 PostgreSQL 16 RC1 (el8/el9)
  • 默认包中添加了 SealOS 用于快速部署 Kubernetes 集群。

问题修复

  • 修复了 infra.repo.repo_pkg 任务:当 repo_packages 中包名包含 * 时,下载可能会受到 /www/pigsty 现有内容的影响。
  • vip_dns_suffix 的默认值由 .vip 调整为空字符串,即集群本身的名称将默认作为节点集群的 L2 VIP
  • modprobe watchdog and chown watchdog if patroni_watchdog_mode is required
  • pg_dbsu_sudo = limit and patroni_watchdog_mode = required 时,授予数据库 dbsu 以下命令的 sudo 执行权限
    • /usr/bin/sudo /sbin/modprobe softdog:在启动 Patroni 服务时确保 softdog 内核模块启用
    • /usr/bin/sudo /bin/chown {{ pg_dbsu }} /dev/watchdog:在启动 Patroni 服务时,确保 watchdog 属主正确

文档更新

  • 向英文文档中添加了更新内容。
  • 添加了简体中文版本的内置文档,修复了 pigsty.cc 文档站的中文文档。

软件更新

  • PostgreSQL 16 RC1 for EL8/EL9
  • PGVector 0.5.0,支持 hnsw 索引
  • TimescaleDB 2.11.2
  • grafana 10.1.0
  • loki & promtail 2.8.4
  • redis-stack 7.2 on el7/8
  • mcli-20230829225506 / minio-20230829230735
  • ferretdb 1.9
  • sealos 4.3.3
  • pgbadger 1.12.2
ce69791eb622fa87c543096cdf11f970  pigsty-pkg-v2.3.1.el7.x86_64.tgz
495aba9d6d18ce1ebed6271e6c96b63a  pigsty-pkg-v2.3.1.el8.x86_64.tgz
38b45582cbc337ff363144980d0d7b64  pigsty-pkg-v2.3.1.el9.x86_64.tgz

v2.3.0

相关文章:《Pigsty v2.3 发布:应用生态丰富

发布注记:https://github.com/pgsty/pigsty/releases/tag/v2.3.0

使用 bash -c "$(curl -fsSL https://get.pigsty.cc/latest)" 快速开始。

亮点特性

  • INFRA: 添加了对 NODE/PGSQL VIP 的监控支持
  • PGSQL: 通过小版本升级修复了 PostgreSQL CVE-2023-39417: 15.4, 14.9, 13.12, 12.16,以及 Patroni v3.1.0
  • NODE: 允许用户使用 keepalived 为一个节点集群绑定 L2 VIP
  • REPO: Pigsty 专用 yum 源优化精简,全站默认使用 HTTPS: get.pigsty.ccdemo.pigsty.cc
  • APP: 升级 app/bytebase 版本至 v2.6.0, app/ferretdb 版本至 v1.8;添加新的应用模板:nocodb,开源的 Airtable。
  • REDIS: 升级版本至 v7.2,并重制了 Redis 监控面板。
  • MONGO: 添加基于 FerretDB 1.8 实现的基本支持。
  • MYSQL: 添加了 Prometheus / Grafana / CA 中的代码存根,便于后续纳管。

API 变化

新增一个新的参数组 NODE.NODE_VIP:包含 8 个新参数

  • NODE.VIP.vip_enabled:在此节点集群上启用 vip 吗?
  • NODE.VIP.vip_address:ipv4 格式的节点 vip 地址,如果启用了 vip,则必需
  • NODE.VIP.vip_vrid:必需,整数,1-255 在相同 VLAN 中应该是唯一的
  • NODE.VIP.vip_role:master/backup,默认为备份,用作初始角色
  • NODE.VIP.vip_preempt:可选,true/false,默认为 false,启用 vip 抢占
  • NODE.VIP.vip_interface:节点 vip 网络接口监听,eth0 默认
  • NODE.VIP.vip_dns_suffix:节点 vip dns 名称后缀,默认为空字符串
  • NODE.VIP.vip_exporter_port:keepalived 导出器监听端口,默认为 9650
MD5 (pigsty-pkg-v2.3.0.el7.x86_64.tgz) = 81db95f1c591008725175d280ad23615
MD5 (pigsty-pkg-v2.3.0.el8.x86_64.tgz) = 6f4d169b36f6ec4aa33bfd5901c9abbe
MD5 (pigsty-pkg-v2.3.0.el9.x86_64.tgz) = 4bc9ae920e7de6dd8988ca7ee681459d

v2.2.0

相关文章:《Pigsty v2.2 发布 —— 监控系统大升级

发布注记:https://github.com/pgsty/pigsty/releases/tag/v2.2.0

快速开始: bash -c "$(curl -fsSL https://get.pigsty.cc/latest)"

亮点特性

  • 监控面板重做: https://demo.pigsty.cc
  • Vagrant 沙箱重做:支持 libvirt 与新的配置模板
  • Pigsty EL Yum 仓库:统一收纳零碎 RPM,简化安装构建流程。
  • 操作系统兼容性:新增信创操作系统 UOS-v20-1050e 支持
  • 新的配置模板:42 节点的生产仿真配置
  • 统一使用官方 PGDG citus 软件包(el7)

软件升级

  • PostgreSQL 16 beta2
  • Citus 12 / PostGIS 3.3.3 / TimescaleDB 2.11.1 / PGVector 0.44
  • patroni 3.0.4 / pgbackrest 2.47 / pgbouncer 1.20
  • grafana 10.0.3 / loki/promtail/logcli 2.8.3
  • etcd 3.5.9 / haproxy v2.8.1 / redis v7.0.12
  • minio 20230711212934 / mcli 20230711233044

Bug 修复

  • 修复了 Docker 组权限的问题 29434bd
  • infra 操作系统用户组作为额外的组,而不是首要用户组。
  • 修复了 Redis Sentinel Systemd 服务的自动启用状态 5c96feb
  • 放宽了 bootstrap & configure 的检查,特别是当 /etc/redhat-release 不存在的时候。
  • 升级到 Grafana 10,修复了 Grafana 9.x CVE-2023-1410
  • 在 CMDB pglog 模式中添加了 PG 14 - 16 的 command tags 与 错误代码。

API 变化

新增1个变量

  • INFRA.NGINX.nginx_exporter_enabled:现在用户可以通过设置这个参数来禁用 nginx_exporter。

默认值变化:

  • repo_modules: node,pgsql,infra:redis 现在由 pigsty-el 仓库提供,不再需要 redis 模块。
  • repo_upstream:
    • 新增 pigsty-el:与具体 EL 版本无关的 RPM: 例如 grafana, minio, pg_exporter, 等等……
    • 新增 pigsty-misc:与具体 EL 版本有关的 RPM: 例如 redis, prometheus 全家桶,等等……
    • 移除 citus:现在 PGDG 中有完整的 EL7 - EL9 citus 12 支持
    • 移除 remi:redis 现在由 pigsty-el 仓库提供,不再需要 redis 模块。
  • repo_packages:
    • ansible python3 python3-pip python3-requests python3-jmespath python3.11-jmespath dnf-utils modulemd-tools # el7: python36-requests python36-idna yum-utils
    • grafana loki logcli promtail prometheus2 alertmanager karma pushgateway node_exporter blackbox_exporter nginx_exporter redis_exporter
    • redis etcd minio mcli haproxy vip-manager pg_exporter nginx createrepo_c sshpass chrony dnsmasq docker-ce docker-compose-plugin flamegraph
    • lz4 unzip bzip2 zlib yum pv jq git ncdu make patch bash lsof wget uuid tuned perf nvme-cli numactl grubby sysstat iotop htop rsync tcpdump
    • netcat socat ftp lrzsz net-tools ipvsadm bind-utils telnet audit ca-certificates openssl openssh-clients readline vim-minimal
    • postgresql13* wal2json_13* pg_repack_13* passwordcheck_cracklib_13* postgresql12* wal2json_12* pg_repack_12* passwordcheck_cracklib_12* timescaledb-tools
    • postgresql15 postgresql15* citus_15* pglogical_15* wal2json_15* pg_repack_15* pgvector_15* timescaledb-2-postgresql-15* postgis33_15* passwordcheck_cracklib_15* pg_cron_15*
    • postgresql14 postgresql14* citus_14* pglogical_14* wal2json_14* pg_repack_14* pgvector_14* timescaledb-2-postgresql-14* postgis33_14* passwordcheck_cracklib_14* pg_cron_14*
    • postgresql16* wal2json_16* pgvector_16* pg_squeeze_16* postgis34_16* passwordcheck_cracklib_16* pg_cron_16*
    • patroni patroni-etcd pgbouncer pgbadger pgbackrest pgloader pg_activity pg_partman_15 pg_permissions_15 pgaudit17_15 pgexportdoc_15 pgimportdoc_15 pg_statement_rollback_15*
    • orafce_15* mysqlcompat_15 mongo_fdw_15* tds_fdw_15* mysql_fdw_15 hdfs_fdw_15 sqlite_fdw_15 pgbouncer_fdw_15 multicorn2_15* powa_15* pg_stat_kcache_15* pg_stat_monitor_15* pg_qualstats_15 pg_track_settings_15 pg_wait_sampling_15 system_stats_15
    • plprofiler_15* plproxy_15 plsh_15* pldebugger_15 plpgsql_check_15* pgtt_15 pgq_15* pgsql_tweaks_15 count_distinct_15 hypopg_15 timestamp9_15* semver_15* prefix_15* rum_15 geoip_15 periods_15 ip4r_15 tdigest_15 hll_15 pgmp_15 extra_window_functions_15 topn_15
    • pg_background_15 e-maj_15 pg_catcheck_15 pg_prioritize_15 pgcopydb_15 pg_filedump_15 pgcryptokey_15 logerrors_15 pg_top_15 pg_comparator_15 pg_ivm_15* pgsodium_15* pgfincore_15* ddlx_15 credcheck_15 safeupdate_15 pg_squeeze_15* pg_fkpart_15 pg_jobmon_15
  • repo_url_packages:
  • node_default_packages:
    • lz4,unzip,bzip2,zlib,yum,pv,jq,git,ncdu,make,patch,bash,lsof,wget,uuid,tuned,nvme-cli,numactl,grubby,sysstat,iotop,htop,rsync,tcpdump
    • netcat,socat,ftp,lrzsz,net-tools,ipvsadm,bind-utils,telnet,audit,ca-certificates,openssl,readline,vim-minimal,node_exporter,etcd,haproxy,python3,python3-pip
  • infra_packages
    • grafana,loki,logcli,promtail,prometheus2,alertmanager,karma,pushgateway
    • node_exporter,blackbox_exporter,nginx_exporter,redis_exporter,pg_exporter
    • nginx,dnsmasq,ansible,postgresql15,redis,mcli,python3-requests
  • PGSERVICE in .pigsty 被移除了,取而代之的是 PGDATABASE=postgres,这用户只需 IP 地址就可以从管理节点访问特定实例。

目录结构变化:

  • bin/dns and bin/ssh 现在被移动到 vagrant/ 目录中。
MD5 (pigsty-pkg-v2.2.0.el7.x86_64.tgz) = 5fb6a449a234e36c0d895a35c76add3c
MD5 (pigsty-pkg-v2.2.0.el8.x86_64.tgz) = c7211730998d3b32671234e91f529fd0
MD5 (pigsty-pkg-v2.2.0.el9.x86_64.tgz) = 385432fe86ee0f8cbccbbc9454472fdd

v2.1.0

相关文章:Pigsty v2.1 发布:向量扩展 / PG12-16 支持

发布注记:https://github.com/pgsty/pigsty/releases/tag/v2.1.0

Highlight

  • PostgreSQL 16 beta 支持,以及 12 ~ 15 的支持。
  • 为 PG 12 - 15 新增了 PGVector 扩展支持,用于存储 AI 嵌入。
  • 为 Grafana 添加了额外6个默认的扩展面板/数据源插件。
  • 添加 bin/profile 脚本用于执行远程 Profiling,生成火焰图。
  • 添加 bin/validate 用于校验 pigsty.yml 配置文件合法性。
  • 添加 bin/repo-add 用于快速向节点添加软件源定义。
  • PostgreSQL 16 可观测性:添加了 pg_stat_io 支持与相关监控面板

软件升级

  • PostgreSQL 15.3 , 14.8, 13.11, 12.15, 11.20, and 16 beta1
  • pgBackRest 2.46 / pgbouncer 1.19
  • Redis 7.0.11
  • Grafana v9.5.3
  • Loki / Promtail / Logcli 2.8.2
  • Prometheus 2.44
  • TimescaleDB 2.11.0
  • minio-20230518000536 / mcli-20230518165900
  • Bytebase v2.2.0

改进增强

  • 当添加本地用户的公钥时,所有的 id*.pub 都会被添加到远程机器上(例如椭圆曲线算法生成的密钥文件)

v2.0.2

https://github.com/pgsty/pigsty/releases/tag/v2.0.2

亮点

使用开箱即用的 pgvector 存储 AI Embedding、索引、检索向量。

变更

  • 新扩展插件 pgvector 用于存储 AI 嵌入,并执行向量相似度搜索。
  • 修复 MinIO CVE-2023-28432,使用 20230324 新提供的 policy API.
  • 为 DNSMASQ systemd 服务添加动态重载命令
  • 更新 PEV 版本至 v1.8
  • 更新 grafana 版本至 v9.4.7
  • 更新 MinIO 与 MCLI 版本至 20230324
  • 更新 bytebase 版本至 v1.15.0
  • 更新监控面板并修复死链接
  • 更新了阿里云 Terraform 模板,默认使用 RockyLinux 9
  • 使用 Grafana v9.4 的 Provisioning API
  • 为众多管理任务添加了 asciinema 视频
  • 修复了 EL8 PostgreSQL 的破损依赖:移除 anonymizer_15 faker_15 pgloader
MD5 (pigsty-pkg-v2.0.2.el7.x86_64.tgz) = d46440a115d741386d29d6de646acfe2
MD5 (pigsty-pkg-v2.0.2.el8.x86_64.tgz) = 5fa268b5545ac96b40c444210157e1e1
MD5 (pigsty-pkg-v2.0.2.el9.x86_64.tgz) = c8b113d57c769ee86a22579fc98e8345

v2.0.1

https://github.com/pgsty/pigsty/releases/tag/v2.0.1

安全性改进,与对 v2.0.0 的 BUG 修复。

改进

  • 更换猪头 logo 以符合 PostgreSQL 商标政策。
  • 将 grafana 版本升级至 v9.4,界面更佳且修复了 bug。
  • 将 patroni 版本升级至 v3.0.1,其中包含了一些 bug 修复。
  • 修改:将 grafana systemd 服务文件回滚到 rpm 默认的版本。
  • 使用缓慢的 copy 代替 rsync 来复制 grafana 仪表板,更加可靠。
  • 增强:bootstrap 执行后会添加回默认 repo 文件。
  • 添加 asciinema 视频,用于各种管理任务。
  • 安全增强模式:限制监控用户权限。
  • 新的配置模板:dual.yml,用于双节点部署。
  • crit.yml 模板中启用 log_connectionslog_disconnections
  • crit.yml 模板中的 pg_libs 中启用 $lib/passwordcheck
  • 明确授予 pg_monitor 角色监视视图权限。
  • dbuser_monitor 中移除默认的 dbrole_readonly 以限制监控用户的权限
  • 现在 patroni 监听在 {{ inventory_hostname }} 而不是 0.0.0.0
  • 现在你可以使用 pg_listen 控制 postgres/pgbouncer 监听的地址
  • 现在你可以在 pg_listen 中使用 ${ip}, ${lo}, ${vip} 占位符
  • 将 Aliyun terraform 镜像从 centos 7.9 提升到 rocky Linux 9
  • 将 bytebase 版本升级到 v1.14.0

BUG 修复

  • 为 alertmanager 添加缺失的 advertise 地址。
  • 解决使用 bin/pgsql-user 创建数据库用户时,pg_mode 变量缺失问题。
  • redis.yml 中为 Redis 集群加入任务添加 -a password 选项。
  • infra-rm.yml.remove infra data 任务中补充缺失的默认值。
  • 修复 prometheus 监控对象定义文件的属主为 prometheus 用户。
  • 使用 管理员用户 而不是 root 去删除 DCS 中的元数据。
  • 修复了由 grafana 9.4 bug 导致的问题:Meta 数据源缺失。

注意事项

EL8 pgdg 上游官方源处于依赖破损状态,请小心使用。涉及到的软件包: postgis33_15, pgloader, postgresql_anonymizer_15*, postgresql_faker_15

如何升级?

cd ~/pigsty; tar -zcf /tmp/files.tgz files; rm -rf ~/pigsty    # backup files dir and remove
cd ~; bash -c "$(curl -fsSL https://get.pigsty.cc/latest)"      # get latest pigsty source
cd ~/pigsty; rm -rf files; tar -xf /tmp/files.tgz -C ~/pigsty  # restore files dir

Checksums

MD5 (pigsty-pkg-v2.0.1.el7.x86_64.tgz) = 5cfbe98fd9706b9e0f15c1065971b3f6
MD5 (pigsty-pkg-v2.0.1.el8.x86_64.tgz) = c34aa460925ae7548866bf51b8b8759c
MD5 (pigsty-pkg-v2.0.1.el9.x86_64.tgz) = 055057cebd93c473a67fb63bcde22d33

特别感谢 @cocoonkid 提供的反馈。


v2.0.0

相关文章:

Pigsty v2.0.0 正式发布!

从 v2.0.0 开始,PIGSTY 现在是 “PostgreSQL In Great STYle"的首字母缩写,即"全盛状态的 PostgreSQL”。

curl -fsSL https://get.pigsty.cc/latest | bash
Download directly from GitHub Release
bash -c "$(curl -fsSL https://raw.githubusercontent.com/pgsty/pigsty/master/bin/get)"

# or download tarball directly with curl (EL9)
curl -L https://github.com/pgsty/pigsty/releases/download/v2.0.0/pigsty-v2.0.0.tgz -o ~/pigsty.tgz
curl -L https://github.com/pgsty/pigsty/releases/download/v2.0.0/pigsty-pkg-v2.0.0.el9.x86_64.tgz  -o /tmp/pkg.tgz
# EL7: https://github.com/pgsty/pigsty/releases/download/v2.0.0/pigsty-pkg-v2.0.0.el7.x86_64.tgz
# EL8: https://github.com/pgsty/pigsty/releases/download/v2.0.0/pigsty-pkg-v2.0.0.el8.x86_64.tgz

亮点

  • 完美整合 PostgreSQL 15, PostGIS 3.3, Citus 11.2, TimescaleDB 2.10,分布式地理时序超融合数据库。
  • OS 兼容性大幅增强:支持 EL7,8,9,以及 RHEL, CentOS, Rocky, OracleLinux, AlmaLinux 等兼容发行版。
  • 安全性改进:自签名 CA,全局网络流量 SSL 加密,密码 scram-sha-256 认证,备份采用 AES 加密,重制的 HBA 规则系统。
  • Patroni 升级至3.0,提供原生的高可用 Citus 分布式集群支持,默认启用 FailSafe 模式,无惧 DCS 故障致全局主库瘫痪。
  • 提供基于 pgBackRest 的开箱即用的时间点恢复 PITR 支持,默认支持本地文件系统与专用 MinIO/S3 集群备份。
  • 新模块 ETCD,可独立部署,简易扩缩容,自带监控高可用,彻底取代 Consul 作为高可用 PG 的 DCS。
  • 新模块 MINIO,可独立部署,支持多盘多节点部署,用作 S3 本地替代,亦用于集中式 PostgreSQL 备份仓库。
  • 大幅精简配置文件参数,无需默认值即可使用;模板自动根据机器规格调整主机与 PG 参数,HBA/服务的定义更简洁泛用。
  • 受 Grafana 与 MinIO 影响,软件协议由 Apache License 2.0 变更为 AGPL 3.0

兼容性

  • 支持 EL7, EL8, EL9 三个大版本,并提供三个版本对应的离线软件包,默认开发测试环境由 EL7 升级至 EL9。
  • 支持更多 EL 兼容 Linux 发行版:RHEL, CentOS, RockyLinux, AlmaLinux, OracleLinux 等…
  • 源码包与离线软件包的命名规则发生改变,现在版本号,操作系统版本号,架构都会体现在包名中。
  • PGSQL:PostgreSQL 15.2, PostGIS 3.3, Citus 11.2, TimescaleDB 2.10 现可同时使用,协同工作。
  • PGSQL:Patroni 升级至 3.0 版本,作为 PGSQL 的高可用组件。
    • 默认使用 ETCD 作为 DCS,取代 Consul,减少一个 Consul Agent 失效点。
    • 因为 vip-manager 升级至 2.1 并使用 ETCDv3 API,彻底弃用 ETCDv2 API,Patroni 同理
    • 提供原生的高可用 Citus 分布式集群支持。使用完全开源所有功能的 Citus 11.2。
    • 默认启用 FailSafe 模式,无惧 DCS 故障致全局主库瘫痪。
  • PGSQL:引入 pgBackrest v2.44 提供开箱即用的 PostgreSQL 时间点恢复 PITR 功能
    • 默认使用主库上的备份目录创建备份仓库,滚动保留两天的恢复窗口。
    • 默认备选备份仓库为专用 MinIO/S3 集群,滚动保留两周的恢复窗口,本地使用需要启用 MinIO 模块。
  • ETCD 现在作为一个独立部署的模块,带有完整的扩容/缩容方案与监控。
  • MINIO 现在成为一个独立部署的模块,支持多盘多节点部署,用作 S3 本地替代,亦可用作集中式备份仓库。
  • NODE 模块现在包含 haproxy, docker, node_exporter, promtail 功能组件
    • chronyd 现在取代 ntpd 成为所有节点默认的 NTP 服务。
    • HAPROXY 现从属于 NODE 的一部分,而不再是 PGSQL 专属,可以 NodePort 的方式对外暴露服务。
    • 现在 PGSQL 模块可以使用专用的集中式 HAPROXY 集群统一对外提供服务。
  • INFRA 模块现在包含 dnsmasq, nginx, prometheus, grafana, loki 等组件
    • Infra 模块中的 DNSMASQ 服务器默认启用,并添加为所有节点的默认 DNS 服务器之一。
    • 添加了 blackbox_exporter 用于主机 PING 探测,pushgateway 用于批处理任务指标。
    • lokipromtail 现在使用 Grafana 默认的软件包,使用官方的 Grafana Echarts 面板插件
    • 提供针对 PostgreSQL 15 的新增可观测性位点的监控支持,添加 Patroni 监控
  • 软件版本升级
    • PostgreSQL 15.2 / PostGIS 3.3 / TimescaleDB 2.10 / Citus 11.2
    • Patroni 3.0 / Pgbouncer 1.18 / pgBackRest 2.44 / vip-manager 2.1
    • HAProxy 2.7 / Etcd 3.5 / MinIO 20230131022419 / mcli 20230128202938
    • Prometheus 2.42 / Grafana 9.3 / Loki & Promtail 2.7 / Node Exporter 1.5

安全性

  • 启用了一个完整的本地自签名 CA:pigsty-ca,用于签发内网组件所使用的证书。
  • 创建用户/修改密码的操作将不再会在日志文件中留下痕迹。
  • Nginx 默认启用 SSL 支持(如需 HTTPS,您需要在系统中信任pigsty-ca,或使用 Chrome thisisunsafe
  • ETCD 全面启用 SSL 加密客户端与服务端对等通信
  • PostgreSQL 添加并默认启用了 SSL 支持,管理链接默认都使用 SSL 访问。
  • Pgbouncer 添加了 SSL 支持,出于性能考虑默认不启用。
  • Patroni 添加了 SSL 支持,并默认限制了管理 API 只能从本机与管理节点使用密码认证方可访问。
  • PostgreSQL 的默认密码认证方式由 md5 改为 scram-sha-256
  • Pgbouncer 添加了认证查询支持,可以动态管理连接池用户。
  • pgBackRest 使用远端集中备份存储仓库时,默认使用 AES-256-CBC 加密备份数据。
  • 提供高安全等级配置模板:强制使用全局 SSL,并要求使用管理员证书登陆。
  • 所有默认 HBA 规则现在全部在配置文件中显式定义。

可维护性

  • 现有的配置模板可根据机器规格(CPU/内存/存储)自动调整优化。
  • 现在可以动态配置 Postgres/Pgbouncer/Patroni/pgBackRest 的日志目录:默认为:/pg/log/<type>/
  • 原有的 IP 地址占位符 10.10.10.10 被替换为一个专用变量:${admin_ip},可在多处引用,便于切换备用管理节点。
  • 您可以指定 region 来使用不同地区的上游镜像源,以加快软件包的下载速度。
  • 现在允许用户定义更细粒度的上游源地址,您可以根据不同的 EL 版本、架构,以及地区,使用不同的上游源。
  • 提供了阿里云与 AWS 中国地区的 Terraform 模板,可用于一键拉起所需的 EC2 虚拟机。
  • 提供了多种不同规格的 Vagrant 沙箱模板:meta, full, el7/8/9, minio, build, citus
  • 添加了新的专用剧本:pgsql-monitor.yml 用于监控现有的 Postgres 实例或 RDS。
  • 添加了新的专用剧本:pgsql-migration.yml,使用逻辑复制无缝迁移现有实例至 Pigsty 管理的集群。
  • 添加了一系列专用 Shell 实用命令,封装常见运维操作,方便用户使用。
  • 优化了所有 Ansible Role 的实现,使其更加简洁、易读、易维护,无需默认参数即可使用。
  • 允许在业务数据库/用户的层次上定义额外的 Pgbouncer 参数。

API 变更

Pigsty v2.0 进行了大量变更,新增64个参数,移除13个参数,重命名17个参数。

新增的参数

  • INFRA.META.admin_ip:主元节点 IP 地址
  • INFRA.META.region:上游镜像区域:default|china|europe
  • INFRA.META.os_version:企业版 Linux 发行版本:7,8,9
  • INFRA.CA.ca_cn:CA 通用名称,默认为 pigsty-ca
  • INFRA.CA.cert_validity:证书有效期,默认为 20 年
  • INFRA.REPO.repo_enabled:在 infra 节点上构建本地 yum 仓库吗?
  • INFRA.REPO.repo_upstream:上游 yum 仓库定义列表
  • INFRA.REPO.repo_home:本地 yum 仓库的主目录,通常与 nginx_home ‘/www’ 相同
  • INFRA.NGINX.nginx_ssl_port:https 监听端口
  • INFRA.NGINX.nginx_ssl_enabled:启用 nginx https 吗?
  • INFRA.PROMTETHEUS.alertmanager_endpoint:altermanager 端点(ip|domain):端口格式
  • NODE.NODE_TUNE.node_hugepage_ratio:内存 hugepage 比率,默认禁用,值为 0
  • NODE.HAPROXY.haproxy_service:要公开的 haproxy 服务列表
  • PGSQL.PG_ID.pg_mode:pgsql 集群模式:pgsql,citus,gpsql
  • PGSQL.PG_BUSINESS.pg_dbsu_password:dbsu 密码,默认为空字符串表示没有 dbsu 密码
  • PGSQL.PG_INSTALL.pg_log_dir:postgres 日志目录,默认为 /pg/data/log
  • PGSQL.PG_BOOTSTRAP.pg_storage_type:SSD|HDD,默认为 SSD
  • PGSQL.PG_BOOTSTRAP.patroni_log_dir:patroni 日志目录,默认为 /pg/log
  • PGSQL.PG_BOOTSTRAP.patroni_ssl_enabled:使用 SSL 保护 patroni RestAPI 通信?
  • PGSQL.PG_BOOTSTRAP.patroni_username:patroni rest api 用户名
  • PGSQL.PG_BOOTSTRAP.patroni_password:patroni rest api 密码(重要:请更改此密码)
  • PGSQL.PG_BOOTSTRAP.patroni_citus_db:由 patroni 管理的 citus 数据库,默认为 postgres
  • PGSQL.PG_BOOTSTRAP.pg_max_conn:postgres 最大连接数,auto 将使用推荐值
  • PGSQL.PG_BOOTSTRAP.pg_shmem_ratio:postgres 共享内存比率,默认为 0.25,范围 0.1~0.4
  • PGSQL.PG_BOOTSTRAP.pg_rto:恢复时间目标,故障转移的 ttl,默认为 30s
  • PGSQL.PG_BOOTSTRAP.pg_rpo:恢复点目标,默认最多丢失 1MB 数据
  • PGSQL.PG_BOOTSTRAP.pg_pwd_enc:密码加密算法:md5|scram-sha-256
  • PGSQL.PG_BOOTSTRAP.pgbouncer_log_dir:pgbouncer 日志目录,默认为 /var/log/pgbouncer
  • PGSQL.PG_BOOTSTRAP.pgbouncer_auth_query:如果启用,查询 pg_authid 表以检索 biz 用户,而不是填充用户列表
  • PGSQL.PG_BOOTSTRAP.pgbouncer_sslmode:pgbouncer 客户端的 SSL:disable|allow|prefer|require|verify-ca|verify-full
  • PGSQL.PG_BOOTSTRAP.pg_service_provider:专用的 haproxy 节点组名称,或者默认为本地节点的空字符串
  • PGSQL.PG_BOOTSTRAP.pg_default_service_dest:如果 svc.dest=‘default’,则为默认服务目标
  • PGSQL.PG_BACKUP.pgbackrest_enabled:启用 pgbackrest 吗?
  • PGSQL.PG_BACKUP.pgbackrest_clean:初始化期间删除 pgbackrest 数据吗?
  • PGSQL.PG_BACKUP.pgbackrest_log_dir:pgbackrest 日志目录,默认为 /pg/log
  • PGSQL.PG_BACKUP.pgbackrest_method:pgbackrest 备份仓库方法,local 或 minio
  • PGSQL.PG_BACKUP.pgbackrest_repo:pgbackrest 备份仓库配置
  • PGSQL.PG_DNS.pg_dns_suffix:pgsql dns 后缀,默认为空字符串
  • PGSQL.PG_DNS.pg_dns_target:auto, primary, vip, none 或 ad hoc ip
  • ETCD.etcd_seq:etcd 实例标识符,必需
  • ETCD.etcd_cluster:etcd 集群和组名称,默认为 etcd
  • ETCD.etcd_safeguard:防止清除正在运行的 etcd 实例吗?
  • ETCD.etcd_clean:在初始化期间清除现有的 etcd 吗?
  • ETCD.etcd_data:etcd 数据目录,默认为 /data/etcd
  • ETCD.etcd_port:etcd 客户端端口,默认为 2379
  • ETCD.etcd_peer_port:etcd 对等端口,默认为 2380
  • ETCD.etcd_init:etcd 初始集群状态,新建或已存在
  • ETCD.etcd_election_timeout:etcd 选举超时,默认为 1000ms
  • ETCD.etcd_heartbeat_interval:etcd 心跳间隔,默认为 100ms
  • MINIO.minio_seq:minio 实例标识符,必须参数
  • MINIO.minio_cluster:minio 集群名称,默认为 minio
  • MINIO.minio_clean:初始化时清理 minio 吗?默认为 false
  • MINIO.minio_user:minio 操作系统用户,默认为 minio
  • MINIO.minio_node:minio 节点名模式
  • MINIO.minio_data:minio 数据目录,使用 {x…y} 来指定多个驱动器
  • MINIO.minio_domain:minio 外部域名,默认为 sss.pigsty
  • MINIO.minio_port:minio 服务端口,默认为 9000
  • MINIO.minio_admin_port:minio 控制台端口,默认为 9001
  • MINIO.minio_access_key:根访问密钥,默认为 minioadmin
  • MINIO.minio_secret_key:根秘密密钥,默认为 minioadmin
  • MINIO.minio_extra_vars:minio 服务器的额外环境变量
  • MINIO.minio_alias:本地 minio 部署的别名
  • MINIO.minio_buckets:待创建的 minio 存储桶列表
  • MINIO.minio_users:待创建的 minio 用户列表

移除的参数

  • INFRA.CA.ca_homedir:CA 主目录,现在固定为 /etc/pki/
  • INFRA.CA.ca_cert:CA 证书文件名,现在固定为 ca.key
  • INFRA.CA.ca_key:CA 密钥文件名,现在固定为 ca.key
  • INFRA.REPO.repo_upstreams:已被 repo_upstream 替代
  • PGSQL.PG_INSTALL.pgdg_repo:现在由节点 playbooks 负责
  • PGSQL.PG_INSTALL.pg_add_repo:现在由节点 playbooks 负责
  • PGSQL.PG_IDENTITY.pg_backup:未使用且与部分名称冲突
  • PGSQL.PG_IDENTITY.pg_preflight_skip:不再使用,由 pg_id 替代
  • DCS.dcs_name:由于使用 etcd 而被移除
  • DCS.dcs_servers:被 ad hoc 组 etcd 替代
  • DCS.dcs_registry:由于使用 etcd 而被移除
  • DCS.dcs_safeguard:被 etcd_safeguard 替代
  • DCS.dcs_clean:被 etcd_clean 替代

重命名的参数

  • nginx_upstream -> infra_portal
  • repo_address -> repo_endpoint
  • pg_hostname -> node_id_from_pg
  • pg_sindex -> pg_group
  • pg_services -> pg_default_services
  • pg_services_extra -> pg_services
  • pg_hba_rules_extra -> pg_hba_rules
  • pg_hba_rules -> pg_default_hba_rules
  • pgbouncer_hba_rules_extra -> pgb_hba_rules
  • pgbouncer_hba_rules -> pgb_default_hba_rules
  • vip_mode -> pg_vip_enabled
  • vip_address -> pg_vip_address
  • vip_interface -> pg_vip_interface
  • node_packages_default -> node_default_packages
  • node_packages_meta -> infra_packages
  • node_packages_meta_pip -> infra_packages_pip
  • node_data_dir -> node_data

Checksums

MD5 (pigsty-pkg-v2.0.0-rc1.el7.x86_64.tgz) = af4b5db9dc38c860de609956a8f1f0d3
MD5 (pigsty-pkg-v2.0.0-rc1.el8.x86_64.tgz) = 5b7152e142df3e3cbc06de30bd70e433
MD5 (pigsty-pkg-v2.0.0-rc1.el9.x86_64.tgz) = 1362e2a5680fc1a3a014cc4f304100bd

特别感谢意大利用户 @alemacci 在 SSL 加密,备份,多操作系统发行版适配与自适应参数模版上的贡献!


v1.5.1

亮点

重要:修复了 PG14.0-14.3 中 CREATE INDEX|REINDEX CONCURRENTLY 可能导致索引数据损坏的问题。

Pigsty v1.5.1 升级默认 PostgreSQL 版本至 14.4 强烈建议尽快更新。

软件升级

  • postgres 升级至 to 14.4
  • haproxy 升级至 to 2.6.0
  • grafana 升级至 to 9.0.0
  • prometheus 升级至 2.36.0
  • patroni 升级至 2.1.4

问题修复

  • 修复了pgsql-migration.yml中的 TYPO
  • 移除了 HAProxy 配置文件中的 PID 配置项
  • 移除了默认软件包中的 i686 软件包
  • 默认启用所有 Systemd Redis Service
  • 默认启用所有 Systemd Patroni Service

API 变更

  • grafana_databasegrafana_pgurl 被标记为过时 API,将从后续版本移除

New Apps

  • wiki.js : 使用 Postgres 搭建本地维基百科
  • FerretDB: 使用 Postgres 提供 MongoDB API

v1.5.0

亮点概述

  • 完善的 Docker 支持:在管理节点上默认启用并提供诸多开箱即用的软件模板:bytebase, pgadmin, pgweb, postgrest, minio 等。
  • 基础设施自我监控:Nginx, ETCD, Consul, Prometheus, Grafana, Loki 自我监控
  • CMDB 升级:兼容性改善,支持 Redis 集群/Greenplum 集群元数据,配置文件可视化。
  • 服务发现改进:可以使用 Consul 自动发现所有待监控对象,并纳入 Prometheus 中。
  • 更好的冷备份支持:默认定时备份任务,添加pg_probackup备份工具,一键创建延时从库。
  • ETCD 现在可以用作 PostgreSQL/Patroni 的 DCS 服务,作为 Consul 的备选项。
  • Redis 剧本/角色改善:现在允许对单个 Redis 实例,而非整个 Redis 节点进行初始化与移除。

详细变更列表

监控面板

  • CMDB Overview:可视化 Pigsty CMDB Inventory。
  • DCS Overview:查阅 Consul 与 ETCD 集群的监控指标。
  • Nginx Overview:查阅 Pigsty Web 访问指标与访问日志。
  • Grafana Overview:Grafana 自我监控
  • Prometheus Overview:Prometheus 自我监控
  • INFRA Dashboard 进行重制,反映基础设施整体状态

监控架构

  • 现在允许使用 Consul 进行服务发现(当所有服务注册至 Consul 时)
  • 现在所有的 Infra 组件会启用自我监控,并通过infra_register角色注册至 Prometheus 与 Consul 中。
  • 指标收集器 pg_exporter 更新至 v0.5.0,添加新功能,scaledefault,允许为指标指定一个倍乘因子,以及指定默认值。
  • pg_bgwriter, pg_wal, pg_query, pg_db, pgbouncer_stat 关于时间的指标,单位由默认的毫秒或微秒统一缩放至秒。
  • pg_table 中的相关计数器指标,现在配置有默认值 0,替代原有的NaN
  • pg_class指标收集器默认移除,相关指标添加至 pg_tablepg_index 收集器中。
  • pg_table_size 指标收集器现在默认启用,默认设置有300秒的缓存时间。

部署方案

  • 新增可选软件包 docker.tgz,带有常用应用镜像:Pgadmin, Pgweb, Postgrest, ByteBase, Kong, Minio 等。
  • 新增角色 ETCD,可以在 DCS Servers 指定的节点上自动部署 ETCD 服务,并自动纳入监控。
  • 允许通过 pg_dcs_type 指定 PG 高可用使用的 DCS 服务,Consul(默认),ETCD(备选)
  • 允许通过 node_crontab 参数,为节点配置定时任务,例如数据库备份、VACUUM,统计收集等。
  • 新增了 pg_checksum 选项,启用时,数据库集群将启用数据校验和(此前只有crit模板默认启用)
  • 新增了pg_delay选项,当实例为 Standby Cluster Leader 时,此参数可以用于配置一个延迟从库
  • 新增了软件包 pg_probackup,默认角色replicator现在默认赋予了备份相关函数所需的权限。
  • Redis 部署现在拆分为两个部分:Redis 节点与 Redis 实例,通过redis_port参数可以精确控制一个具体实例。
  • Loki 与 Promtail 现在使用 frpm 制作的 RPM 软件包进行安装。
  • DCS3 配置模板现在使用一个3节点的pg-meta集群,与一个单节点的延迟从库。

软件升级

  • 升级 PostgreSQL 至 14.3
  • 升级 Redis 至 6.2.7
  • 升级 PG Exporter 至 0.5.0
  • 升级 Consul 至 1.12.0
  • 升级 vip-manager 至 v1.0.2
  • 升级 Grafana 至 v8.5.2
  • 升级 Loki & Promtail 至 v2.5.0,使用 frpm 打包。

问题修复

  • 修复了 Loki 与 Promtail 默认配置文件名的问题
  • 修复了 Loki 与 Promtail 环境变量无法正确展开的问题
  • 对英文文档进行了一次完整的翻译与修缮,文档依赖的 JS 资源现在直接从本地获取,无需互联网访问。

API 变化

新参数

  • node_data_dir:主要的数据挂载路径,如果不存在会被创建。
  • node_crontab_overwrite:覆盖 /etc/crontab 而非追加内容。
  • node_crontab:要被追加或覆盖的 node crontab 内容。
  • nameserver_enabled:在这个基础设施节节点上启用 nameserver 吗?
  • prometheus_enabled:在这个基础设施节节点上启用 prometheus 吗?
  • grafana_enabled:在这个基础设施节节点上启用 grafana 吗?
  • loki_enabled:在这个基础设施节节点上启用 loki 吗?
  • docker_enable:在这个基础设施节点上启用 docker 吗?
  • consul_enable:启用 consul 服务器/代理吗?
  • etcd_enable:启用 etcd 服务器/客户端吗?
  • pg_checksum:启用 pg 集群数据校验和吗?
  • pg_delay:备份集群主库复制重放时的应用延迟。

参数重制

现在 *_clean 是布尔类型的参数,用于在初始化期间清除现有实例。

*_safeguard 也是布尔类型的参数,用于在执行任何剧本时,避免清除正在运行的实例。

  • pg_exists_action -> pg_clean
  • pg_disable_purge -> pg_safeguard
  • dcs_exists_action -> dcs_clean
  • dcs_disable_purge -> dcs_safeguard

参数重命名

  • node_ntp_config -> node_ntp_enabled
  • node_admin_setup -> node_admin_enabled
  • node_admin_pks -> node_admin_pk_list
  • node_dns_hosts -> node_etc_hosts_default
  • node_dns_hosts_extra -> node_etc_hosts
  • node_dns_server -> node_dns_method
  • node_local_repo_url -> node_repo_local_urls
  • node_packages -> node_packages_default
  • node_extra_packages -> node_packages
  • node_packages_meta -> node_packages_meta
  • node_meta_pip_install -> node_packages_meta_pip
  • node_sysctl_params -> node_tune_params
  • app_list -> nginx_indexes
  • grafana_plugin -> grafana_plugin_method
  • grafana_cache -> grafana_plugin_cache
  • grafana_plugins -> grafana_plugin_list
  • grafana_git_plugin_git -> grafana_plugin_git
  • haproxy_admin_auth_enabled -> haproxy_auth_enabled
  • pg_shared_libraries -> pg_libs
  • dcs_type -> pg_dcs_type

v1.4.1

日常错误修复 / Docker 支持 / 英文文档

现在,默认在元节点上启用 docker。您可以使用它启动海量的各类软件

现在提供英文文档。

Bug 修复


v1.4.0

架构

  • 将系统解耦为4大类别:INFRANODESPGSQLREDIS,这使得 pigsty 更加清晰、更易于扩展。
  • 单节点部署 = INFRA + NODES + PGSQL
  • 部署 pgsql 集群 = NODES + PGSQL
  • 部署 redis 集群 = NODES + REDIS
  • 部署其他数据库 = NODES + xxx(例如 MONGOKAFKA…待定)

可访问性

  • 为中国大陆提供 CDN。
  • 使用 bash -c "$(curl -fsSL http://get.pigsty.cc/latest)" 获取最新源代码。
  • 使用新的 download 脚本下载并提取包。

监控增强

  • 将监控系统分为5大类别:INFRANODESREDISPGSQLAPP
  • 默认启用日志记录
    • 现在默认启用lokipromtail,带有预构建的 loki-rpm
  • 模型和标签
    • 为所有仪表板添加了一个隐藏的ds prometheus 数据源变量,因此您只需选择一个新的数据源而不是修改 Grafana 数据源和仪表板。
    • 为所有指标添加了一个ip标签,并将其用作数据库指标和节点指标之间的连接键。
  • INFRA 监控
    • Infra 主仪表板:INFRA 概览
    • 添加日志仪表板:日志实例
    • PGLOG 分析和 PGLOG 会话现在被视为一个示例 Pigsty APP。
  • NODES 监控应用
    • 如果您完全不关心数据库,现在可以单独使用 Pigsty 作为主机监控软件!
    • 包括4个核心仪表板:节点概览 & 节点集群 & 节点实例 & 节点警报
    • 为节点引入新的身份变量:node_clusternodename
    • 变量pg_hostname现在意味着将主机名设置为与 postgres 实例名相同,以保持向后兼容性
    • 变量nodename_overwrite 控制是否用 nodename 覆盖节点的主机名
    • 变量nodename_exchange 将 nodename 写入彼此的/etc/hosts
    • 所有节点指标引用都经过修订,通过ip连接
    • 节点监控目标在/etc/prometheus/targets/nodes下单独管理
  • PGSQL 监控增强
    • 完全新的 PGSQL 集群,简化并专注于集群中的重要内容。
    • 新仪表板 PGSQL 数据库是集群级对象监控。例如整个集群而不是单个实例的表和查询。
    • PGSQL 警报仪表板现在只关注 pgsql 警报。
    • PGSQL Shard 已添加到 PGSQL 中。
  • Redis 监控增强
    • 为所有 redis 仪表板添加节点监控。

MatrixDB 支持

  • 通过pigsty-matrix.yml playbook 可以部署 MatrixDB(Greenplum 7)
  • MatrixDB 监控仪表板:PGSQL MatrixDB
  • 添加示例配置:pigsty-mxdb.yml

监控增强

  • 将监控系统分为5大类别:INFRANODESREDISPGSQLAPP
  • 默认启用日志记录
    • 现在默认启用lokipromtail,带有预构建的 loki-rpm
  • 模型和标签
    • 为所有仪表板添加了一个隐藏的ds prometheus 数据源变量,因此您只需选择一个新的数据源而不是修改 Grafana 数据源和仪表板。
    • 为所有指标添加了一个ip标签,并将其用作数据库指标和节点指标之间的连接键。
  • INFRA 监控
    • Infra 主仪表板:INFRA 概览
    • 添加日志仪表板:日志实例
    • PGLOG 分析和 PGLOG 会话现在被视为一个示例 Pigsty APP。
  • NODES 监控应用
    • 如果您完全不关心数据库,现在可以单独使用 Pigsty 作为主机监控软件!
    • 包括4个核心仪表板:节点概览 & 节点集群 & 节点实例 & 节点警报
    • 为节点引入新的身份变量:node_clusternodename
    • 变量pg_hostname现在意味着将主机名设置为与 postgres 实例名相同,以保持向后兼容性
    • 变量nodename_overwrite 控制是否用 nodename 覆盖节点的主机名
    • 变量nodename_exchange 将 nodename 写入彼此的/etc/hosts
    • 所有节点指标引用都经过修订,通过ip连接
    • 节点监控目标在/etc/prometheus/targets/nodes下单独管理
  • PGSQL 监控增强
    • 完全新的 PGSQL 集群,简化并专注于集群中的重要内容。
    • 新仪表板 PGSQL 数据库是集群级对象监控。例如整个集群而不是单个实例的表和查询。
    • PGSQL 警报仪表板现在只关注 pgsql 警报。
    • PGSQL Shard 已添加到 PGSQL 中。
  • Redis 监控增强
    • 为所有 redis 仪表板添加节点监控。

MatrixDB 支持

  • 通过pigsty-matrix.yml playbook 可以部署 MatrixDB(Greenplum 7)
  • MatrixDB 监控仪表板:PGSQL MatrixDB
  • 添加示例配置:pigsty-mxdb.yml

置备改进

现在 pigsty 的工作流如下:

 infra.yml ---> 在单一的元节点上安装 pigsty
      |          然后将更多节点加入 pigsty 的管理下
      |
 nodes.yml ---> 为 pigsty 准备节点(节点设置、dcs、node_exporter、promtail)
      |          然后选择一个 playbook 在这些节点上部署数据库集群
      |
      ^--> pgsql.yml   在已准备好的节点上安装 postgres
      ^--> redis.yml   在已准备好的节点上安装 redis

infra-demo.yml = 
           infra.yml -l meta     +
           nodes.yml -l pg-test  +
           pgsql.yml -l pg-test +
           infra-loki.yml + infra-jupyter.yml + infra-pgweb.yml
  • nodes.yml:用于设置和准备 pigsty 的节点,
  • 在节点上设置 node、node_exporter、consul agent
  • node-remove.yml 用于节点注销
  • pgsql.yml:现在只在已准备好的节点上工作
  • pgsql-remove 现在只负责 postgres 本身(dcs 和节点监控由 node.yml 负责)
  • 添加一系列新选项以在 greenplum/matrixdb 中重用 postgres 角色
  • redis.yml:现在在已准备好的节点上工作
  • redis-remove.yml 现在从节点上移除 redis。
  • pgsql-matrix.yml 现在在已准备好的节点上安装 matrixdb(Greenplum 7)。

软件升级

  • PostgreSQL 14.2
  • PostGIS 3.2
  • TimescaleDB 2.6
  • Patroni 2.1.3 (Prometheus 指标 + 故障转移插槽)
  • HAProxy 2.5.5 (修复统计错误,更多指标)
  • PG 导出器 0.4.1 (超时参数等)
  • Grafana 8.4.4
  • Prometheus 2.33.4
  • Greenplum 6.19.4 / MatrixDB 4.4.0
  • Loki 现在作为 rpm 包提供,而不是 zip 存档。

错误修复

  • 删除 patroni 的 consul 依赖,这使其更容易迁移到新的 consul 集群
  • 修复 prometheus bin/new 脚本的默认数据目录路径:从 /export/prometheus 更改为 /data/prometheus
  • 在 vip-manager systemd 服务中添加重新启动秒数
  • 修复错别字和任务

API 变更

新增变量

  • node_cluster:节点集群的身份变量
  • nodename_overwrite:如果设置,则 nodename 将设置为节点的主机名
  • nodename_exchange:交换 play 主机之间的节点主机名(在 /etc/hosts 中)
  • node_dns_hosts_extra:可以通过单个实例/集群轻松覆盖的额外静态 dns 记录
  • patroni_enabled:如果禁用,postgres & patroni 的引导过程不会在 postgres 角色期间执行
  • pgbouncer_enabled:如果禁用,pgbouncer 在 postgres 角色期间不会启动
  • pg_exporter_params:生成监控目标 url 时为 pg_exporter 提供的额外 url 参数。
  • pg_provision:布尔值变量,表示是否执行 postgres 角色的资源配置部分(模板,数据库,用户)
  • no_cmdb:用于 infra.ymlinfra-demo.yml 播放书,不会在元节点上创建 cmdb。
MD5 (app.tgz) = f887313767982b31a2b094e5589a75ea
MD5 (matrix.tgz) = 3d063437c482d94bd7e35df1a08bbc84
MD5 (pigsty.tgz) = e143b88ebea1474f9ebaffddc6072c49
MD5 (pkg.tgz) = 73e8f5ce995b1f1760cb63c1904fb91b

v1.3.1

监控

  • PGSQL & PGCAT 仪表盘改进
  • 优化 pgcat 实例 & pgcat 数据库的布局
  • 在 pgsql 实例仪表盘中添加关键指标面板,与 pgsql 集群保持一致
  • 在 pgcat 数据库中添加表/索引膨胀面板,移除 pgcat 膨胀仪表盘
  • 在 pgcat 数据库仪表盘中添加索引信息
  • 修复在 grafana 8.3 中的损坏面板
  • 在 nginx 主页中添加 redis 索引

部署

  • 新的 infra-demo.yml 剧本用于一次性引导
  • 使用 infra-jupyter.yml 剧本部署可选的 jupyter lab 服务器
  • 使用 infra-pgweb.yml 剧本部署可选的 pgweb 服务器
  • 在 meta 节点上新的 pg 别名,可以从 admin 用户启动 postgres 集群(除了 postgres)
  • 根据 timescaledb-tune 的建议调整所有 patroni 配置模板中的 max_locks_per_transactions
  • 在配置模板中添加 citus.node_conninfo: 'sslmode=prefer' 以便在没有 SSL 的情况下使用 citus
  • 在 pgdg14 包列表中添加所有扩展(除了 pgrouting)
  • 将 node_exporter 升级到 v1.3.1
  • 将 PostgREST v9.0.0 添加到包列表。从 postgres 模式生成 API。

错误修复

  • Grafana 的安全漏洞(升级到 v8.3.1 问题)
  • 修复 pg_instance & pg_serviceregister 角色中从剧本的中间开始时的问题
  • 修复在没有 pg_cluster 变量存在的主机上 nginx 主页渲染问题
  • 在升级到 grafana 8.3.1 时修复样式问题

v1.3.0

  • 【功能增强】Redis 部署(集群、哨兵、主从)
  • 【功能增强】Redis 监控
    • Redis 总览仪表盘
    • Redis 集群仪表盘
    • Redis 实例仪表盘 -【功能增强】 监控:PGCAT 大修
    • 新仪表盘:PGCAT 实例
    • 新仪表盘:PGCAT 数据库仪表盘
    • 重做仪表盘:PGCAT 表格
  • 【功能增强】 监控:PGSQL 增强
    • 新面板:PGSQL 集群,添加 10 个关键指标面板(默认切换)
    • 新面板:PGSQL 实例,添加 10 个关键指标面板(默认切换)
    • 简化 & 重新设计:PGSQL 服务
    • 在 PGCAT & PGSL 仪表盘之间添加交叉引用 -【功能增强】 监控部署
    • 现在 grafana 数据源在仅监控部署期间自动注册 -【功能增强】 软件升级
    • 将 PostgreSQL 13 添加到默认包列表
    • 默认升级到 PostgreSQL 14.1
    • 添加 greenplum rpm 和依赖项
    • 添加 redis rpm & 源代码包
    • 将 perf 添加为默认包

v1.2.0

  • 【功能增强】默认使用 PostgreSQL 14 版本
  • 【功能增强】默认使用 TimescaleDB 2.5 扩展
    • 现在 timescaledb 和 postgis 默认在 cmdb 中启用
  • 【功能增强】 新增仅监控模式:
    • 仅通过可连接的 URL,您可以使用 pigsty 监控现有的 pg 实例
    • pg_exporter 将在本地的 meta 节点上部署
    • 新仪表板 PGSQL Cluster Monly 用于远程集群
  • 【功能增强】软件升级
    • grafana 升级到 8.2.2
    • pev2 升级到 v0.11.9
    • promscale 升级到 0.6.2
    • pgweb 升级到 0.11.9
    • 新增扩展:pglogical、pg_stat_monitor、orafce -【功能增强】自动检测机器规格并使用适当的 node_tunepg_conf 模板 -【功能增强】重做与膨胀相关的视图,现在公开更多信息 -【功能增强】删除 timescale 和 citus 的内部监控 -【功能增强】新剧本 pgsql-audit.yml 用于创建审计报告 -【BUG 修复】现在 pgbouncer_exporter 资源所有者是 {{ pg_dbsu }} 而不是 postgres -【BUG 修复】 修复在执行 REINDEX TABLE CONCURRENTLY 时 pg_exporter 在 pg_table pg_index 上的重复指标 -【功能增强】现在所有配置模板都减少到两个:auto 和 demo。(已删除:pub4, pg14, demo4, tiny, oltp)
    • 如果 vagrant 是默认用户,则配置 pigsty-demo,否则使用 pigsty-auto

如何从 v1.1.1 升级

在 1.2.0 中没有 API 变更。您仍然可以使用旧的 pigsty.yml 配置文件 (PG13)。 对于基础设施部分,重新执行 repo 将完成大部分工作。

至于数据库,您仍然可以使用现有的 PG13 实例。就地升级在涉及到像 PostGIS 和 Timescale 这样的扩展时非常棘手。我强烈推荐使用逻辑复制进行数据库迁移。 新的剧本 pgsql-migration.yml 将使这一过程变得容易得多。它将创建一系列的脚本,帮助您近乎零停机时间地迁移您的集群。


v1.1.1

  • 【功能增强】 用 timescale 版本替换 timescaledb 的 apache 版本
  • 【功能增强】 升级 prometheus 到 2.30
  • 【BUG 修复】 现在 pg_exporter 配置目录的属主是 {{ pg_dbsu }},而不再是 prometheus

如何从 v1.1.0 升级?

这个版本的主要变动是 TimescaleDB,使用 TimescaleDB License (TSL)的官方版本替代了 PGDG 仓库中的 Apache License v2 的版本。

stop/pause postgres instance with timescaledb
yum remove -y timescaledb_13

[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/7/$basearch
repo_gpgcheck=0
gpgcheck=0
enabled=1

yum install timescaledb-2-postgresql13 

v1.1.0

  • 【增强功能】 增加 pg_dummy_filesize 以创建文件系统空间占位符
  • 【增强功能】 主页大改版
  • 【增强功能】 增加 Jupyter Lab 整合
  • 【增强功能】 增加 pgweb 控制台整合
  • 【增强功能】 增加 pgbadger 支持
  • 【增强功能】 增加 pev2 支持,解释可视化工具
  • 【增强功能】 增加 pglog 工具
  • 【增强功能】 更新默认的 pkg.tgz 软件版本:
    • PostgreSQL 升级至 v13.4(支持官方的 pg14)
    • pgbouncer 升级至 v1.16(指标定义更新)
    • Grafana 升级至 v8.1.4
    • Prometheus 升级至 v2.2.29
    • node_exporter 升级至 v1.2.2
    • haproxy 升级至 v2.1.1
    • consul 升级至 v1.10.2
    • vip-manager 升级至 v1.0.1

API 变更

  • nginx_upstream 现在持有不同的结构。(不兼容)
  • 新的配置条目:app_list,渲染至主页的导航条目
  • 新的配置条目:docs_enabled,在默认服务器上设置本地文档
  • 新的配置条目:pev2_enabled,设置本地的 pev2 工具
  • 新的配置条目:pgbadger_enabled,创建日志概要/报告目录
  • 新的配置条目:jupyter_enabled,在元节点上启用 Jupyter Lab 服务器
  • 新的配置条目:jupyter_username,指定运行 Jupyter Lab 的用户
  • 新的配置条目:jupyter_password,指定 Jupyter Lab 的默认密码
  • 新的配置条目:pgweb_enabled,在元节点上启用 pgweb 服务器
  • 新的配置条目:pgweb_username,指定运行 pgweb 的用户
  • 将内部标记 repo_exist 重命名为 repo_exists
  • 现在 repo_address 的默认值为 pigsty 而非 yum.pigsty
  • 现在 haproxy 的访问点为 http://pigsty 而非 http://h.pigsty

v1.0.1

2021-09-14

  • 文档更新
    • 现已支持中文文档
    • 现已支持机器翻译的英文文档
  • 错误修复:pgsql-remove 不会移除主实例
  • 错误修复:用 pg_cluster + pg_seq 替换 pg_instance
    • Start-At-Task 可能因为 pg_instance 未定义而失败
  • 错误修复:从默认共享预加载库中移除 citus
    • citus 会强制 max_prepared_transaction 的值为非零
  • 错误修复:在 configure 中进行 ssh sudo 检查:
    • 现在使用 ssh -t sudo -n ls 进行权限检查
  • 笔误修复:pg-backup 脚本的笔误
  • 警报调整:移除 NTP 合理性检查警报(与 ClockSkew 重复)
  • 导出器调整:移除 collector.systemd 以减少开销

v1.0.0

v1 正式发布,监控系统全面改进

亮点

  • 监控系统全面改进
    • 在 Grafana 8.0 上新增仪表盘
    • 新的度量定义,增加 PG14 支持
    • 简化的标签系统:静态标签集:(job, cls, ins)
    • 新的警报规则与衍生度量
    • 同时监控多个数据库
    • 实时日志搜索 & csvlog 分析
    • 链接丰富的仪表盘,点击图形元素进行深入|汇总
  • 架构变更
    • 将 citus 和 timescaledb 加入默认安装部分
    • 增加对 PostgreSQL 14beta2 的支持
    • 简化 haproxy 管理页面索引
    • 通过添加新的角色 register 来解耦基础设施和 pgsql
    • 添加新角色 lokipromtail 用于日志记录
    • 为管理员节点上的管理员用户添加新角色 environ 以设置环境
    • 默认使用 static 服务发现用于 prometheus(而不是 consul
    • 添加新角色 remove 以优雅地移除集群和实例
    • 升级 prometheus 和 grafana 的配置逻辑
    • 升级到 vip-manager 1.0,node_exporter 1.2,pg_exporter 0.4,grafana 8.0
    • 现在,每个实例上的每个数据库都可以自动注册为 grafana 数据源
    • 将 consul 注册任务移到 register 角色,更改 consul 服务标签
    • 添加 cmdb.sql 作为 pg-meta 基线定义(CMDB & PGLOG)
  • 应用框架
    • 可扩展框架用于新功能
    • 核心应用:PostgreSQL 监控系统:pgsql
    • 核心应用:PostgreSQL 目录浏览器:pgcat
    • 核心应用:PostgreSQL Csvlog 分析器:pglog
    • 添加示例应用 covid 用于可视化 covid-19 数据
    • 添加示例应用 isd 用于可视化 isd 数据
  • 其他
    • 添加 jupyterlab,为数据科学提供完整的 python 环境
    • 添加 vonng-echarts-panel 以恢复对 Echarts 的支持
    • 添加 wrap 脚本 createpgcreatedbcreateuser
    • 添加 cmdb 动态库存脚本:load_conf.pyinventory_cmdbinventory_conf
    • 移除过时的剧本:pgsql-monitorpgsql-servicenode-remove 等….

API 变更

  • 新变量: node_meta_pip_install
  • 新变量: grafana_admin_username
  • 新变量: grafana_database
  • 新变量: grafana_pgurl
  • 新变量: pg_shared_libraries
  • 新变量: pg_exporter_auto_discovery
  • 新变量: pg_exporter_exclude_database
  • 新变量: pg_exporter_include_database
  • 变量重命名: grafana_urlgrafana_endpoint

Bug 修复

  • 修复默认时区 Asia/Shanghai (CST) 问题
  • 修复 pgbouncer & patroni 的 nofile 限制
  • 当执行标签 pgbouncer 时,pgbouncer 的用户列表和数据库列表将会被生成

v0.9.0

v0.9 极大简化了安装流程,进行了大量日志相关改进,开发了命令行工具(Beta),并修复了一系列问题。


新功能

  • 一键安装模式:

    /bin/bash -c "$(curl -fsSL https://pigsty.cc/install)"
    
  • 开发命令行工具 pigsty-cli封装常用 Ansible 命令,目前 pigsty-cli 处于 Beta 状态

  • 使用 Loki 与 Promtail 收集日志:

    • 默认收集 Postgres,Pgbouncer,Patroni 日志
    • 新增部署脚本infra-loki.ymlpgsql-promtail.yml
    • 定义基于日志的监控指标
    • 使用 Grafana 制作日志相关可视化面板。
  • 监控组件可以使用二进制安装,使用files/get_bin.sh下载监控二进制组件。

  • 飞升模式: 当集群元节点初始化完成后,可以使用bin/upgrade升级为动态 Inventory 使用 pg-meta 上的数据库代替 YAML 配置文件。

问题修复

  • 集中修复日志相关问题:
    • 修复了 HAProxy 健康检查造成 PG 日志中大量 connection reset by peer的问题。
    • 修复了 HAProxy 健康检查造成 Patroni 日志中大量出现Connect Reset Exception 的问题
    • 修复了 Patroni 日志时间戳格式,去除毫秒时间戳,附加完整时区信息。
    • dbuser_monitor配置1秒的log_min_duration_statement,避免监控查询出现在日志中。
  • 重构 Grafana 角色
    • 在保持 API 不变的前提下重构 Grafana 角色。
    • 使用 CDN 下载预打包的 Grafana 插件,加速插件下载
  • 其他问题修复
    • 修复了pgbouncer-create-user 未能正确处理 md5 密码的问题。
    • 完善了数据库与用户创建 SQL 模版中参数空置检查。
    • 修复了 NODE DNS 配置时如果手工中断执行,DNS 配置可能出错的问题。
    • 重构了 Makefile 快捷方式 Makefile 中的错别字

参数变更

  • node_disable_swap 默认为 False,默认不会关闭 SWAP。
  • node_sysctl_params 不再有默认修改的系统参数。
  • grafana_plugin 的默认值install 现在意味着当插件缓存不存在时,从 CDN 下载。
  • repo_url_packages 现在从 Pigsty CDN 下载额外的 RPM 包,解决墙内无法访问的问题。
  • proxy_env.no_proxy现在将 Pigsty CDN 加入到 NOPROXY 列表中。
  • grafana_customize 现在默认为false,启用意味着安装 Pigsty Pro 版 UI(默认不开源所以不要启用)
  • node_admin_pk_current,新增选项,启用后会将当前用户的~/.ssh/id_rsa.pub添加至管理员的 Key 中
  • loki_clean:新增选项,安装 Loki 时是否清除现有数据
  • loki_data_dir:新增选项,指明安装 Loki 时的数据目录
  • promtail_enabled 是否启用 Promtail 日志收集服务?
  • promtail_clean 是否在安装 promtail 时移除已有状态信息?
  • promtail_port promtail 使用的默认端口,默认为9080
  • promtail_status_file 保存 Promtail 状态信息的文件位置
  • promtail_send_url 用于接收日志的 loki 服务 endpoint

v0.8.0

v0.8 针对 服务(Service) 接入部分进行了彻底的重做。现在除了默认的primary, replica服务外,用户可以自行定义新的服务。服务的接口可以支持多种不同的实现,例如 L4 DPKG VIP 可作为 Haproxy 的替代品与 Pigsty 集成。同时,针对用户反馈的一些问题进行了集中处理与改进。


改动内容

v0.8 是供给方案定稿版本,此后供给系统的 API 将保持稳定。

API 变更

原有viphaproxy角色的所有配置项,现在迁移至service角色中。

#------------------------------------------------------------------------------
# SERVICE PROVISION
#------------------------------------------------------------------------------
pg_weight: 100              # default load balance weight (instance level)

# - service - #
pg_services:                                  # how to expose postgres service in cluster?
  # primary service will route {ip|name}:5433 to primary pgbouncer (5433->6432 rw)
  - name: primary           # service name {{ pg_cluster }}_primary
    src_ip: "*"
    src_port: 5433
    dst_port: pgbouncer     # 5433 route to pgbouncer
    check_url: /primary     # primary health check, success when instance is primary
    selector: "[]"          # select all instance as primary service candidate

  # replica service will route {ip|name}:5434 to replica pgbouncer (5434->6432 ro)
  - name: replica           # service name {{ pg_cluster }}_replica
    src_ip: "*"
    src_port: 5434
    dst_port: pgbouncer
    check_url: /read-only   # read-only health check. (including primary)
    selector: "[]"          # select all instance as replica service candidate
    selector_backup: "[? pg_role == `primary`]"   # primary are used as backup server in replica service

  # default service will route {ip|name}:5436 to primary postgres (5436->5432 primary)
  - name: default           # service's actual name is {{ pg_cluster }}-{{ service.name }}
    src_ip: "*"             # service bind ip address, * for all, vip for cluster virtual ip address
    src_port: 5436          # bind port, mandatory
    dst_port: postgres      # target port: postgres|pgbouncer|port_number , pgbouncer(6432) by default
    check_method: http      # health check method: only http is available for now
    check_port: patroni     # health check port:  patroni|pg_exporter|port_number , patroni by default
    check_url: /primary     # health check url path, / as default
    check_code: 200         # health check http code, 200 as default
    selector: "[]"          # instance selector
    haproxy:                # haproxy specific fields
      maxconn: 3000         # default front-end connection
      balance: roundrobin   # load balance algorithm (roundrobin by default)
      default_server_options: 'inter 3s fastinter 1s downinter 5s rise 3 fall 3 on-marked-down shutdown-sessions slowstart 30s maxconn 3000 maxqueue 128 weight 100'

  # offline service will route {ip|name}:5438 to offline postgres (5438->5432 offline)
  - name: offline           # service name {{ pg_cluster }}_replica
    src_ip: "*"
    src_port: 5438
    dst_port: postgres
    check_url: /replica     # offline MUST be a replica
    selector: "[? pg_role == `offline` || pg_offline_query ]"         # instances with pg_role == 'offline' or instance marked with 'pg_offline_query == true'
    selector_backup: "[? pg_role == `replica` && !pg_offline_query]"  # replica are used as backup server in offline service

pg_services_extra: []        # extra services to be added

# - haproxy - #
haproxy_enabled: true                         # enable haproxy among every cluster members
haproxy_reload: true                          # reload haproxy after config
haproxy_policy: roundrobin                    # roundrobin, leastconn
haproxy_admin_auth_enabled: false             # enable authentication for haproxy admin?
haproxy_admin_username: admin                 # default haproxy admin username
haproxy_admin_password: admin                 # default haproxy admin password
haproxy_exporter_port: 9101                   # default admin/exporter port
haproxy_client_timeout: 3h                    # client side connection timeout
haproxy_server_timeout: 3h                    # server side connection timeout

# - vip - #
vip_mode: none                                # none | l2 | l4
vip_reload: true                              # whether reload service after config
# vip_address: 127.0.0.1                      # virtual ip address ip (l2 or l4)
# vip_cidrmask: 24                            # virtual ip address cidr mask (l2 only)
# vip_interface: eth0                         # virtual ip network interface (l2 only)

新增选项

# - localization - #
pg_encoding: UTF8                             # default to UTF8
pg_locale: C                                  # default to C
pg_lc_collate: C                              # default to C
pg_lc_ctype: en_US.UTF8                       # default to en_US.UTF8

pg_reload: true                               # reload postgres after hba changes
vip_mode: none                                # none | l2 | l4
vip_reload: true                              # whether reload service after config

移除选项

haproxy_check_port                            # Haproxy相关参数已经被Service定义覆盖
haproxy_primary_port
haproxy_replica_port
haproxy_backend_port
haproxy_weight
haproxy_weight_fallback
vip_enabled                                   # vip_enabled参数被vip_mode覆盖

服务管理

pg_servicespg_services_extra 定义了集群中的服务,每一个服务的定义结构如下例所示:

一个服务必须指定以下内容:

  • 名称:服务的完整名称以数据库集群名为前缀,以service.name为后缀,通过-连接。例如在pg-test集群中name=primary的服务,其完整服务名称为pg-test-primary

  • 端口:在 Pigsty 中,服务默认采用 NodePort 的形式对外暴露,因此暴露端口为必选项。但如果使用外部负载均衡服务接入方案,您也可以通过其他的方式区分服务。

  • 选择器:选择器指定了服务的成员,采用 JMESPath 的形式,从所有集群实例成员中筛选变量。默认的[]选择器会选取所有的集群成员。

    此外selector_backup会选择或标记用于 backup 的实例列表(当集群中所有其他成员失效时方才接管服务)

  # default service will route {ip|name}:5436 to primary postgres (5436->5432 primary)
  - name: default           # service's actual name is {{ pg_cluster }}-{{ service.name }}
    src_ip: "*"             # service bind ip address, * for all, vip for cluster virtual ip address
    src_port: 5436          # bind port, mandatory
    dst_port: postgres      # target port: postgres|pgbouncer|port_number , pgbouncer(6432) by default
    check_method: http      # health check method: only http is available for now
    check_port: patroni     # health check port:  patroni|pg_exporter|port_number , patroni by default
    check_url: /primary     # health check url path, / as default
    check_code: 200         # health check http code, 200 as default
    selector: "[]"          # instance selector
    haproxy:                # haproxy specific fields
      maxconn: 3000         # default front-end connection
      balance: roundrobin   # load balance algorithm (roundrobin by default)
      default_server_options: 'inter 3s fastinter 1s downinter 5s rise 3 fall 3 on-marked-down shutdown-sessions slowstart 30s maxconn 3000 maxqueue 128 weight 100'

数据库管理

数据库现在可以对 locale 的细分选项:lc_ctypelc_collate分别进行指定。支持这一功能的主要原因是 PG 的扩展插件pg_trgm需要在lc_ctype!=C的环境中才能正常支持中文。

旧接口定义

pg_databases:
  - name: meta                      # name is the only required field for a database
    owner: postgres                 # optional, database owner
    template: template1             # optional, template1 by default
    encoding: UTF8                  # optional, UTF8 by default
    locale: C                       # optional, C by default
    allowconn: true                 # optional, true by default, false disable connect at all
    revokeconn: false               # optional, false by default, true revoke connect from public # (only default user and owner have connect privilege on database)
    tablespace: pg_default          # optional, 'pg_default' is the default tablespace
    connlimit: -1                   # optional, connection limit, -1 or none disable limit (default)
    extensions:                     # optional, extension name and where to create
      - {name: postgis, schema: public}
    parameters:                     # optional, extra parameters with ALTER DATABASE
      enable_partitionwise_join: true
    pgbouncer: true                 # optional, add this database to pgbouncer list? true by default
    comment: pigsty meta database   # optional, comment string for database

新的接口定义

pg_databases:
  - name: meta                      # name is the only required field for a database
    # owner: postgres                 # optional, database owner
    # template: template1             # optional, template1 by default
    # encoding: UTF8                # optional, UTF8 by default , must same as template database, leave blank to set to db default
    # locale: C                     # optional, C by default , must same as template database, leave blank to set to db default
    # lc_collate: C                 # optional, C by default , must same as template database, leave blank to set to db default
    # lc_ctype: C                   # optional, C by default , must same as template database, leave blank to set to db default
    allowconn: true                 # optional, true by default, false disable connect at all
    revokeconn: false               # optional, false by default, true revoke connect from public # (only default user and owner have connect privilege on database)
    # tablespace: pg_default          # optional, 'pg_default' is the default tablespace
    connlimit: -1                   # optional, connection limit, -1 or none disable limit (default)
    extensions:                     # optional, extension name and where to create
      - {name: postgis, schema: public}
    parameters:                     # optional, extra parameters with ALTER DATABASE
      enable_partitionwise_join: true
    pgbouncer: true                 # optional, add this database to pgbouncer list? true by default
    comment: pigsty meta database   # optional, comment string for database

v0.7.0

v0.7 针对接入已有数据库实例进行了改进,现在用户可以采用 仅监控部署(Monly Deployment) 模式使用 Pigsty。同时新增了专用于管理数据库与用户、以及单独部署监控的剧本,并对数据库与用户的定义进行改进。


Features

Bug Fix

API 变更

新增选项

prometheus_sd_target: batch                   # batch|single    监控目标定义文件采用单体还是每个实例一个
exporter_install: none                        # none|yum|binary 监控Exporter的安装模式
exporter_repo_url: ''                         # 如果设置,这里的REPO连接会加入目标的Yum源中
node_exporter_options: '--no-collector.softnet --collector.systemd --collector.ntp --collector.tcpstat --collector.processes'                          # Node Exporter默认的命令行选项
pg_exporter_url: ''                           # 可选,PG Exporter监控对象的URL
pgbouncer_exporter_url: ''                    # 可选,PGBOUNCER EXPORTER监控对象的URL

移除选项

exporter_binary_install: false                 # 功能被 exporter_install 覆盖

定义结构变更

pg_default_roles                               # 变化细节参考 用户管理。
pg_users                                       # 变化细节参考 用户管理。
pg_databases                                   # 变化细节参考 数据库管理。

重命名选项

pg_default_privilegs -> pg_default_privileges # 很明显这是一个错别字

仅监控模式

有时用户不希望使用 Pigsty 供给方案,只希望使用 Pigsty 监控系统管理现有 PostgreSQL 实例。

Pigsty 提供了仅监控部署(monly, monitor-only 模式,剥离供给方案部分,可用于监控现有 PostgreSQL 集群。

仅监控模式的部署流程与标准模式大体上保持一致,但省略了很多步骤

  • 元节点上完成基础设施初始化的部分与标准流程保持一致,仍然通过./infra.yml完成。
  • 不需要在数据库节点上完成 基础设施初始化
  • 不需要在数据库节点上执行数据库初始化的绝大多数任务,而是通过专用的./pgsql-monitor.yml 完成仅监控系统部署。
  • 实际使用的配置项大大减少,只保留基础设施相关变量,与 监控系统相关的少量变量。

数据库管理

Database provisioning interface enhancement #33

旧接口定义

pg_databases:                       # create a business database 'meta'
  - name: meta
    schemas: [meta]                 # create extra schema named 'meta'
    extensions: [{name: postgis}]   # create extra extension postgis
    parameters:                     # overwrite database meta's default search_path
      search_path: public, monitor

新的接口定义

pg_databases:
  - name: meta                      # name is the only required field for a database
    owner: postgres                 # optional, database owner
    template: template1             # optional, template1 by default
    encoding: UTF8                  # optional, UTF8 by default
    locale: C                       # optional, C by default
    allowconn: true                 # optional, true by default, false disable connect at all
    revokeconn: false               # optional, false by default, true revoke connect from public # (only default user and owner have connect privilege on database)
    tablespace: pg_default          # optional, 'pg_default' is the default tablespace
    connlimit: -1                   # optional, connection limit, -1 or none disable limit (default)
    extensions:                     # optional, extension name and where to create
      - {name: postgis, schema: public}
    parameters:                     # optional, extra parameters with ALTER DATABASE
      enable_partitionwise_join: true
    pgbouncer: true                 # optional, add this database to pgbouncer list? true by default
    comment: pigsty meta database   # optional, comment string for database

接口变更

  • Add new options: template , encoding, locale, allowconn, tablespace, connlimit
  • Add new option revokeconn, which revoke connect privileges from public for this database
  • Add comment field for database

数据库变更

在运行中集群中创建新数据库可以使用pgsql-createdb.yml剧本,在配置中定义完新数据库后,执行以下剧本。

./pgsql-createdb.yml -e pg_database=<your_new_database_name>

通过-e pg_datbase=告知需要创建的数据库名称,则该数据库即会被创建(或修改)。具体执行的命令参见集群主库/pg/tmp/pg-db-{{ database.name}}.sql文件。

用户管理

User provisioning interface enhancement #34

旧接口定义

pg_users:
  - username: test                  # example production user have read-write access
    password: test                  # example user's password
    options: LOGIN                  # extra options
    groups: [ dbrole_readwrite ]    # dborole_admin|dbrole_readwrite|dbrole_readonly
    comment: default test user for production usage
    pgbouncer: true                 # add to pgbouncer

新接口定义

pg_users:
  # complete example of user/role definition for production user
  - name: dbuser_meta               # example production user have read-write access
    password: DBUser.Meta           # example user's password, can be encrypted
    login: true                     # can login, true by default (should be false for role)
    superuser: false                # is superuser? false by default
    createdb: false                 # can create database? false by default
    createrole: false               # can create role? false by default
    inherit: true                   # can this role use inherited privileges?
    replication: false              # can this role do replication? false by default
    bypassrls: false                # can this role bypass row level security? false by default
    connlimit: -1                   # connection limit, -1 disable limit
    expire_at: '2030-12-31'         # 'timestamp' when this role is expired
    expire_in: 365                  # now + n days when this role is expired (OVERWRITE expire_at)
    roles: [dbrole_readwrite]       # dborole_admin|dbrole_readwrite|dbrole_readonly
    pgbouncer: true                 # add this user to pgbouncer? false by default (true for production user)
    parameters:                     # user's default search path
      search_path: public
    comment: test user

接口变更

  • username field rename to name
  • groups field rename to roles
  • options now split into separated configration entries: login, superuser, createdb, createrole, inherit, replication,bypassrls,connlimit
  • expire_at and expire_in options
  • pgbouncer option for user is now false by default

用户管理

在运行中集群中创建新数据库可以使用pgsql-createuser.yml剧本,在配置中定义完新数据库后,执行以下剧本。

./pgsql-createuser.yml -e pg_user=<your_new_user_name>

通过-e pg_user=告知需要创建的数据库名称,则该数据库即会被创建(或修改)。具体执行的命令参见集群主库/pg/tmp/pg-user-{{ user.name}}.sql文件。


v0.6.0

v0.6 对数据库供给方案进行了修改与调整,根据用户的反馈添加了一系列实用功能与修正。针对监控系统的移植性进行优化,便于与其他外部数据库供给方案对接。


BUG 修复

  • 修复了新版本 Patroni 重启后会重置 PG HBA 的问题
  • 修复了 PG Overview Dashboard 标题中的别字
  • 修复了沙箱集群pg-test的默认主库,原来为pg-test-2,应当为pg-test-1
  • 修复了过时代码注释

功能改进

  • 改造 Prometheus 与监控供给方式
    • 允许在无基础设施的情况下对已有 PG 集群进行监控部署,便于监控系统与其他供给方案集成。#11
    • 基于 Inventory 渲染所有监控对象的静态列表,用于静态服务发现。#11
    • Prometheus 添加了静态对象模式,用于替代动态服务发现,集中进行身份管理 #11
    • 监控 Exporter 现在添加了service_registry选项,Consul 服务注册变为可选项 #13
    • Exporter 现在可以通过拷贝二进制的方式直接安装:exporter_binary_install#14
    • Exporter 现在具有xxx_enabled选项,控制是否启用该组件。
  • Haproxy 供给重构与改进 #8
    • 新增了全局 HAProxy 管理界面导航,默认域名h.pigsty
    • 允许将主库加入只读服务集中,当集群中所有从库宕机时自动承接读流量。 #8
    • 允许位 Haproxy 实例管理界面启用认证 haproxy_admin_auth_enabled
    • 允许通过配置项调整每个服务对应后端的流量权重. #10
  • 访问控制模型改进。#7
    • 添加了默认角色dbrole_offline,用于慢查询,ETL,交互式查询场景。
    • 修改默认 HBA 规则,允许dbrole_offline分组的用户访问pg_role == 'offline'pg_offline_query == true的实例。
  • 软件更新 Release v0.6
    • PostgreSQL 13.2
    • Prometheus 2.25
    • PG Exporter 0.3.2
    • Node Exporter 1.1
    • Consul 1.9.3
    • 更新默认 PG 源:PostgreSQL 现在默认使用浙江大学的镜像,加速下载安装

接口变更

新增选项

service_registry: consul                      # 服务注册机制:none | consul | etcd | both
prometheus_options: '--storage.tsdb.retention=30d'  # prometheus命令行选项
prometheus_sd_method: consul                  # Prometheus使用的服务发现机制:static|consul
prometheus_sd_interval: 2s                    # Prometheus服务发现刷新间隔
pg_offline_query: false                       # 设置后将允许dbrole_offline角色连接与查询该实例
node_exporter_enabled: true                   # 设置后将安装配置Node Exporter
pg_exporter_enabled: true                     # 设置后将安装配置PG Exporter
pgbouncer_exporter_enabled: true              # 设置后将安装配置Pgbouncer Exporter
dcs_disable_purge: false                      # 双保险,强制 dcs_exists_action = abort 避免误删除DCS实例
pg_disable_purge: false                       # 双保险,强制 pg_exists_action = abort 避免误删除数据库实例
haproxy_weight: 100                           # 配置实例的相对负载均衡权重
haproxy_weight_fallback: 1                    # 配置集群主库在只读服务中的相对权重

移除选项

prometheus_metrics_path                       # 与 exporter_metrics_path 重复
prometheus_retention                          # 功能被 prometheus_options 覆盖

v0.5.0

Pigsty 现在有了官方网站啦:pigsty.cc 🎉 !


亮点特性

  • Pigsty 官方 文档站 正式上线!
  • 添加了数据库模板的定制支持,用户可以通过配置文件定制所需的数据库内部对象。
  • 对默认 访问控制 模型进行了改进
  • 重构了 HBA 管理的逻辑,现在将由 Pigsty 替代 Patroni 直接负责生成 HBA
  • 将 Grafana 监控系统的供给方案从 sqlite 改为 JSON 文件静态 Provision
  • pg-cluster-replication面板加入 Pigsty 开源免费套餐。
  • 最新的经过测试的离线安装包:pkg.tgz (v0.5)

定制数据库

您是否烦恼过单实例多租户的问题?比如总有研发拿着 PostgreSQL 当 MySQL 使,明明是一个 Schema 就能解决的问题,非要创建一个新的数据库出来,在一个实例中创建出几十个不同的 DB。 不要忧伤,不要心急。Pigsty 已经提供数据库内部对象的 Provision 方案,您可以轻松地在配置文件中指定所需的数据库内对象,包括:

  • 角色
    • 用户/角色名
    • 密码
    • 用户属性
    • 用户备注
    • 用户所属的权限组
  • 数据库
    • 属主
    • 额外的模式
    • 额外的扩展插件
    • 数据库级的自定义配置参数
  • 数据库
    • 属主
    • 额外的模式
    • 额外的扩展插件
    • 数据库级的自定义配置参数
  • 默认权限
    • 默认情况下这里配置的权限会应用至所有由 超级用户 和 管理员用户创建的对象上。
  • 默认扩展
    • 所有新创建的业务数据库都会安装有这些默认扩展
  • 默认模式
    • 所有新创建的业务数据库都会创建有这些默认的模式

配置样例

# 通常是每个DB集群配置的变量
pg_users:
  - username: test
    password: test
    comment: default test user
    groups: [ dbrole_readwrite ]    # dborole_admin|dbrole_readwrite|dbrole_readonly
pg_databases:                       # create a business database 'test'
  - name: test
    extensions: [{name: postgis}]   # create extra extension postgis
    parameters:                     # overwrite database meta's default search_path
      search_path: public,monitor

# 通常是整个环境统一配置的全局变量
# - system roles - #
pg_replication_username: replicator           # system replication user
pg_replication_password: DBUser.Replicator    # system replication password
pg_monitor_username: dbuser_monitor           # system monitor user
pg_monitor_password: DBUser.Monitor           # system monitor password
pg_admin_username: dbuser_admin               # system admin user
pg_admin_password: DBUser.Admin               # system admin password

# - default roles - #
pg_default_roles:
  - username: dbrole_readonly                 # sample user:
    options: NOLOGIN                          # role can not login
    comment: role for readonly access         # comment string

  - username: dbrole_readwrite                # sample user: one object for each user
    options: NOLOGIN
    comment: role for read-write access
    groups: [ dbrole_readonly ]               # read-write includes read-only access

  - username: dbrole_admin                    # sample user: one object for each user
    options: NOLOGIN BYPASSRLS                # admin can bypass row level security
    comment: role for object creation
    groups: [dbrole_readwrite,pg_monitor,pg_signal_backend]

  # NOTE: replicator, monitor, admin password are overwritten by separated config entry
  - username: postgres                        # reset dbsu password to NULL (if dbsu is not postgres)
    options: SUPERUSER LOGIN
    comment: system superuser

  - username: replicator
    options: REPLICATION LOGIN
    groups: [pg_monitor, dbrole_readonly]
    comment: system replicator

  - username: dbuser_monitor
    options: LOGIN CONNECTION LIMIT 10
    comment: system monitor user
    groups: [pg_monitor, dbrole_readonly]

  - username: dbuser_admin
    options: LOGIN BYPASSRLS
    comment: system admin user
    groups: [dbrole_admin]

  - username: dbuser_stats
    password: DBUser.Stats
    options: LOGIN
    comment: business read-only user for statistics
    groups: [dbrole_readonly]


# object created by dbsu and admin will have their privileges properly set
pg_default_privilegs:
  - GRANT USAGE                         ON SCHEMAS   TO dbrole_readonly
  - GRANT SELECT                        ON TABLES    TO dbrole_readonly
  - GRANT SELECT                        ON SEQUENCES TO dbrole_readonly
  - GRANT EXECUTE                       ON FUNCTIONS TO dbrole_readonly
  - GRANT INSERT, UPDATE, DELETE        ON TABLES    TO dbrole_readwrite
  - GRANT USAGE,  UPDATE                ON SEQUENCES TO dbrole_readwrite
  - GRANT TRUNCATE, REFERENCES, TRIGGER ON TABLES    TO dbrole_admin
  - GRANT CREATE                        ON SCHEMAS   TO dbrole_admin
  - GRANT USAGE                         ON TYPES     TO dbrole_admin

# schemas
pg_default_schemas: [monitor]

# extension
pg_default_extensions:
  - { name: 'pg_stat_statements',  schema: 'monitor' }
  - { name: 'pgstattuple',         schema: 'monitor' }
  - { name: 'pg_qualstats',        schema: 'monitor' }
  - { name: 'pg_buffercache',      schema: 'monitor' }
  - { name: 'pageinspect',         schema: 'monitor' }
  - { name: 'pg_prewarm',          schema: 'monitor' }
  - { name: 'pg_visibility',       schema: 'monitor' }
  - { name: 'pg_freespacemap',     schema: 'monitor' }
  - { name: 'pg_repack',           schema: 'monitor' }
  - name: postgres_fdw
  - name: file_fdw
  - name: btree_gist
  - name: btree_gin
  - name: pg_trgm
  - name: intagg
  - name: intarray

# postgres host-based authentication rules
pg_hba_rules:
  - title: allow meta node password access
    role: common
    rules:
      - host    all     all                         10.10.10.10/32      md5

  - title: allow intranet admin password access
    role: common
    rules:
      - host    all     +dbrole_admin               10.0.0.0/8          md5
      - host    all     +dbrole_admin               172.16.0.0/12       md5
      - host    all     +dbrole_admin               192.168.0.0/16      md5

  - title: allow intranet password access
    role: common
    rules:
      - host    all             all                 10.0.0.0/8          md5
      - host    all             all                 172.16.0.0/12       md5
      - host    all             all                 192.168.0.0/16      md5

  - title: allow local read-write access (local production user via pgbouncer)
    role: common
    rules:
      - local   all     +dbrole_readwrite                               md5
      - host    all     +dbrole_readwrite           127.0.0.1/32        md5

  - title: allow read-only user (stats, personal) password directly access
    role: replica
    rules:
      - local   all     +dbrole_readonly                               md5
      - host    all     +dbrole_readonly           127.0.0.1/32        md5
pg_hba_rules_extra: []

# pgbouncer host-based authentication rules
pgbouncer_hba_rules:
  - title: local password access
    role: common
    rules:
      - local  all          all                                     md5
      - host   all          all                     127.0.0.1/32    md5

  - title: intranet password access
    role: common
    rules:
      - host   all          all                     10.0.0.0/8      md5
      - host   all          all                     172.16.0.0/12   md5
      - host   all          all                     192.168.0.0/16  md5
pgbouncer_hba_rules_extra: []

数据库模板

权限模型

v0.5 改善了默认的权限模型,主要是针对单实例多租户的场景进行优化,并收紧权限控制。

  • 撤回了普通业务用户对非所属数据库的默认CONNECT权限
  • 撤回了非管理员用户对所属数据库的默认CREATE权限
  • 撤回了所有用户在public模式下的默认创建权限。

供给方式

原先 Pigsty 采用直接拷贝 Grafana 自带的 grafana.db 的方式完成监控系统的初始化。 这种方式虽然简单粗暴管用,但不适合进行精细化的版本控制管理。在 v0.5 中,Pigsty 采用了 Grafana API 完成了监控系统面板供给的工作。 您所需的就是在grafana_url中填入带有用户名密码的 Grafana URL。 因此,监控系统可以背方便地添加至已有的 Grafana 中。


v0.4.0

第二个公开测试版 v0.4 现已正式发行!


监控系统

Pigsty v0.4 对监控系统进行了整体升级改造,精心挑选了10个面板作为标准的 Pigsty 开源内容。同时,针对 Grafana 7.3的不兼容升级进行了大量适配改造工作。使用升级的pg_exporter v0.3.1作为默认指标导出器,调整了监控报警规则的监控面板连接。

Pigsty 开源版

Pigsty 开源版选定了以下10个 Dashboard 作为开源内容。其他 Dashboard 作为可选的商业支持内容提供。

  • PG Overview
  • PG Cluster
  • PG Service
  • PG Instance
  • PG Database
  • PG Query
  • PG Table
  • PG Table Catalog
  • PG Table Detail
  • Node

尽管进行了少量阉割,这10个监控面板所涵盖的内容仍然可以吊打所有同类软件。

软件升级

Pigsty v0.4 进行了大量软件适配工作,包括:

  • Upgrade to PostgreSQL 13.1, Patroni 2.0.1-4, add citus to repo.
  • Upgrade to pg_exporter 0.3.1
  • Upgrade to Grafana 7.3, Ton’s of compatibility work
  • Upgrade to prometheus 2.23, with new UI as default
  • Upgrade to consul 1.9

其他改进

  • Update prometheus alert rules
  • Fix alertmanager info links
  • Fix bugs and typos.
  • add a simple backup script

离线安装包

  • v0.4 的离线安装包(CentOS 7.8)已经可以从 Github 下载:pkg.tgz

v0.3.0

首个 Pigsty 公开测试版本现在已经释出!


监控系统

Pigsty v0.3 包含以下8个监控面板作为开源内容:

  • PG Overview
  • PG Cluster
  • PG Service
  • PG Instance
  • PG Database
  • PG Table Overview
  • PG Table Catalog
  • Node

离线安装包

  • v0.3 离线安装包(CentOS 7.8)已经可以从 Github 下载:pkg.tgz

最后修改 2026-07-10: pigsty v4.4 docs (a7753a3)