发布注记
Module:
Categories:
| 版本 | 发布时间 | 摘要 | 地址 | 
|---|---|---|---|
| v3.5.0 | 2025-05-31 | PG18 beta,421 扩展,监控升级,代码重构 | v3.5.0 | 
| v3.4.1 | 2025-04-05 | OpenHalo & OrioleDB,MySQL兼容,pgAdmin改进 | v3.4.1 | 
| v3.4.0 | 2025-03-30 | 备份改进,自动证书,AGE,Ivory 全平台,本地化,架构与参数改进 | v3.4.0 | 
| v3.3.0 | 2025-02-24 | 404 扩展,扩展目录,App 剧本,Nginx 定制,DocumentDB 支持 | v3.3.0 | 
| v3.2.2 | 2025-01-23 | 390扩展,Omnigres支持,Mooncake,Citus13与PG17支持 | v3.2.2 | 
| v3.2.1 | 2025-01-12 | 350扩展,Ivory4,Citus强化,Odoo模板 | v3.2.1 | 
| v3.2.0 | 2024-12-24 | 扩展管理 CLI ,Grafana 强化,ARM64 扩展补完 | v3.2.0 | 
| v3.1.0 | 2024-11-24 | PG 17 升默认大版本,配置简化,Ubuntu24与ARM 支持,Supabase,MinIO 改进 | v3.1.0 | 
| v3.0.4 | 2024-10-30 | PG 17 扩展,OLAP 全家桶,pg_duckdb | v3.0.4 | 
| v3.0.3 | 2024-09-27 | PostgreSQL 17,Etcd 运维优化,IvorySQL 3.4,PostGIS 3.5 | v3.0.3 | 
| v3.0.2 | 2024-09-07 | 精简安装模式,PolarDB 15支持,监控视图更新 | v3.0.2 | 
| v3.0.1 | 2024-08-31 | 例行问题修复,Patroni 4支持,Oracle兼容性改进 | v3.0.1 | 
| v3.0.0 | 2024-08-25 | 333个扩展插件,可插拔内核,MSSQL,Oracle,PolarDB 兼容性 | v3.0.0 | 
| v2.7.0 | 2024-05-20 | 扩展大爆炸,新增20+强力扩展插件,与多款Docker应用 | v2.7.0 | 
| v2.6.0 | 2024-02-28 | PG 16 作为默认大版本,引入 ParadeDB 与 DuckDB 等扩展 | v2.6.0 | 
| v2.5.1 | 2023-12-01 | 例行小版本更新,PG16重要扩展支持 | v2.5.1 | 
| v2.5.0 | 2023-09-24 | Ubuntu/Debian支持:bullseye, bookworm, jammy, focal | v2.5.0 | 
| v2.4.1 | 2023-09-24 | Supabase/PostgresML支持与各种新扩展:graphql, jwt, pg_net, vault | v2.4.1 | 
| v2.4.0 | 2023-09-14 | PG16,监控RDS,服务咨询支持,新扩展:中文分词全文检索/图/HTTP/嵌入等 | v2.4.0 | 
| v2.3.1 | 2023-09-01 | 带HNSW的PGVector,PG 16 RC1, 文档翻新,中文文档,例行问题修复 | v2.3.1 | 
| v2.3.0 | 2023-08-20 | 主机VIP, ferretdb, nocodb, MySQL存根, CVE修复 | v2.3.0 | 
| v2.2.0 | 2023-08-04 | 仪表盘 & 置备重做,UOS 兼容性 | v2.2.0 | 
| v2.1.0 | 2023-06-10 | 支持 PostgreSQL 12 ~ 16beta | v2.1.0 | 
| v2.0.2 | 2023-03-31 | 新增 pgvector 支持,修复 MinIO CVE | v2.0.2 | 
| v2.0.1 | 2023-03-21 | v2 错误修复,安全增强,升级 Grafana 版本 | v2.0.1 | 
| v2.0.0 | 2023-02-28 | 架构大升级,兼容性、安全性、可维护性显著增强 | v2.0.0 | 
| v1.5.1 | 2022-06-18 | Grafana 安全性修复 | v1.5.1 | 
| v1.5.0 | 2022-05-31 | Docker 应用程序支持 | v1.5.0 | 
| v1.4.1 | 2022-04-20 | 错误修复 & 英文文档完整翻译 | v1.4.1 | 
| v1.4.0 | 2022-03-31 | MatrixDB 支持,分离 INFRA/NODES/PGSQL/REDIS模块 | v1.4.0 | 
| v1.3.0 | 2021-11-30 | PGCAT 重整 & PGSQL 增强 & Redis Beta支持 | v1.3.0 | 
| v1.2.0 | 2021-11-03 | 默认 PGSQL 版本升级至 14 | v1.2.0 | 
| v1.1.0 | 2021-10-12 | 主页, JupyterLab, PGWEB, Pev2 & pgbadger | v1.1.0 | 
| v1.0.0 | 2021-07-26 | v1 正式版, 监控系统重整 | v1.0.0 | 
| v0.9.0 | 2021-04-04 | Pigsty 图形界面, 命令行界面, 日志集成 | v0.9.0 | 
| v0.8.0 | 2021-03-28 | 服务置备,定制对外暴露的数据库服务 | v0.8.0 | 
| v0.7.0 | 2021-03-01 | 仅监控部署,监控现有 PostgreSQL 实例 | v0.7.0 | 
| v0.6.0 | 2021-02-19 | 架构增强,将PG与Consul解耦 | v0.6.0 | 
| v0.5.0 | 2021-01-07 | 支持在配置中定义业务数据库/用户 | v0.5.0 | 
| v0.4.0 | 2020-12-14 | 支持 PostgreSQL 13,添加官方文档 | v0.4.0 | 
| v0.3.0 | 2020-10-22 | 虚拟机置备方案正式定稿 | v0.3.0 | 
| v0.2.0 | 2020-07-10 | PG监控系统第六版正式发布 | v0.2.0 | 
| v0.1.0 | 2020-06-20 | 在生产仿真测试环境中验证通过 | v0.1.0 | 
| v0.0.5 | 2020-08-19 | 离线安装模式:无需互联网访问即可交付 | v0.0.5 | 
| v0.0.4 | 2020-07-27 | 将 Ansible 剧本重构为 Role | v0.0.4 | 
| v0.0.3 | 2020-06-22 | 接口设计改进 | v0.0.3 | 
| v0.0.2 | 2020-04-30 | 首次提交 | v0.0.2 | 
| v0.0.1 | 2019-05-15 | 概念原型 | v0.0.1 | 
v3.5.0 (Beta2)
Beta2 : 2025-05-28
亮点特性
- 支持 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
- 重新调整了子任务标签,使其更符合配置小节的拆分逻辑
 
- PGSQL 重构,将 PG 监控抽离为单独的 
- 
重构 pg_remove模块- 重命名参数:pg_rm_data,pg_rm_bkup,pg_rm_pkg用于控制删除的内容
- 重新调整角色代码结构,使用更清楚的标签进行划分
 
- 重命名参数:
- 
新增 pg_monitor模块- pgbouncer_exporter现在不再和- pg_exporter共享配置文件
- 新增了 TimescaleDB, Citus,pg_wait_event 的监控指标。
- 使用 pg_exporter1.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 new extension
- pgsentinel 1.1.0 new extension
- pgdd 0.6.0 (pgrx 0.14.1) new extension add back
- convert 0.0.4 (pgrx 0.14.1) new extension
- 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 rpm & add debian/ubuntu support
- openhalo 14.10 add debian/ubuntu support
- omnigres 20250507 (miss on d12/u22)
- citus 12.0.3
- timescaledb 2.20.0 (DROP PG14 support)
- 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 support)
- 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)
校验和
df30f2599a6416eea11acfd0f05ee14b  pigsty-v3.5.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扩展升级
- 更新 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
新特性
- 新增 pgbackrest 备份监控指标与面板
- 丰富了 Nginx 服务器的配置项,支持自动化 Certbot 证书申请
- 优先使用 PostgreSQL 自带的 C,C.UTF-8本地化规则集
- IvorySQL 4.4 全平台支持(RPM/DEB x x86/ARM)
- 新增可用软件包:Juicefs, Restic, TimescaleDB EventStreamer
- 图数据库扩展 Apache AGE 现提供 EL 上 PG 13-17 的完整支持
- 优化 app.yml剧本的使用体验,现在可以免配置拉起普通 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
- WiltonDB 13.17
PostgreSQL扩展包
- pgspider_ext 1.3.0 (new extension)
- 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
- fix ddl_historization ver 0.7 -> 0.0.7
- fix pg_sqlog 3.1.7 -> 1.6
- fix pg_random remove dev suffix
- asn1oid 1.5 -> 1.6
- table_log 0.6.1 -> 0.6.4
接口变更
- 新增 Docker 参数:docker_data, 以及docker_storage_driverby #521 by [@waitingsong]https://github.com/waitingsong)
- 新增 Infra 参数: alertmanager_port,可指定 AlertManager 端口
- 新增 Infra 参数:certbot_sign:是否在 Nginx 初始化时自动申请 Certbot 证书?默认为否
- 新增 Infra 参数:certbot_email:使用 Certbot 申请证书时使用的 email
- 新增 Infra 参数:certbot_options:使用 Certbot 申请证书时使用的额外参数
- 从 IvorySQL 4.4 版本起调整了 IvorySQL 的默认二进制路径:/usr/ivory-4
- pg_lc_ctype与其他 Locale 相关参数默认值由- en_US.UTF-8修改为- C。
- 对于 PG 17 ,如果使用 UTF8编码和C/C.UTF-8Locale,则优先使用PG自带的本地化规则。
- configure现在会根据 PG 版本与环境是否支持- C.utf8,自动配置 locale 相关选项
- 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中移除LANG和LC_ALL环境变量设置
- 现在使用 bento/rockylinux-8,bento/rockylinux-9作为 EL 的 Vagrant box 镜像
- 新增 Alias:extra_modules,包含额外的可选模块:
- 调整 PGSQL Alias: postgresql,pgsql-main,pgsql-core,pgsql-full
- 仓库:Gitlab 仓库现已加入可用模块列表
- 仓库:Docker 模块现已合并入 Infra 模块中
- node.yml剧本新增了- node_pip任务,将- pip镜像站写入节点 pip 配置
- pgsql.yml剧本新增了- pgbackrest_exporter任务,收集备份监控指标
- 允许在 Makefile中使用META/PKG环境变量
- 新增了 /pg/spool目录用于 pgBackrest 临时文件存储
- pgBackRest 的 link-all选项默认关闭
- 对于 MinIO 备份仓库,现在默认启用块增量备份模式`
缺陷修复
- 修复 pg-backup 返回状态码:#532 by [@waitingsong]https://github.com/waitingsong)
- 在 pg-tune-hugepage中设置只允许 PG 使用大页 #527 by [@waitingsong]https://github.com/waitingsong)
- 修复 pg-role中的问题逻辑
- 修复 hugepage 配置参数类型转换问题
- 修复 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 2 月小版本更新:17.4, 16.8, 15.12, 14.17, 13.20
- 新功能:app.yml剧本可以自动安装应用,如 Odoo, Supabase,Dify。
- 新特性:支持 DocumentDB 与 FerretDB 2.0 以提供 MongoDB 兼容的PG。
- 新功能:允许在 infra_portal中进一步定制 Nginx 配置文件。
- 新功能:添加了对 certbot 的支持,允许用户快速申请免费 HTTPS 证书
- 新特性:允许在 pg_default_extensions中使用纯文本扩展列表。
- 新特性:默认可用仓库列表中添加了 mongo, redis, groonga, haproxy 等。
- 新参数:node_aliases,允许为 Node 添加命令别名
- 修复:修复了 Bootstrap 剧本中 EPEL 国际仓库的默认地址
- 改进:为 Debian Security 仓库添加阿里云国内镜像
- 改进:针对 IvorySQL 内核提供 pgBackRest 备份支持
- 改进: 针对 PolarDB 提供 ARM64,Debian/Ubuntu 支持
- pg_exporter 0.8.0,提供对 pgbouncer 1.24 新增指标的支持
- 新特性:为常见命令 git,docker,systemctl添加自动补全支持 #506 #507 by @waitingsong
- 改进:改进 pgbouncer配置模板的ignore_startup_parameters参数,忽略若干超时参数设置 #488 by @waitingsong
- 全新首页:现在 Pigsty 官网使用全新的网站设计。
- 扩展目录:现在 Pigsty 提供关于扩展 RPM/DEB 二进制包的详细信息与下载链接。
- 扩展构建:现在 pig 命令行可以自动设置 PostgreSQL 扩展构建环境。
新增扩展
新增 12 个 PostgreSQL 扩展,可用总数达到 404 整。
- documentdb 0.101-0
- VectorChord-bm25 (vchord_bm25) 0.1.0
- pg_tracing 0.1.2
- pg_curl 2.4
- pgxicor 0.1.0
- pgsparql 1.0
- pgjq 0.1.0
- hashtypes 0.1.5
- db_migrator 1.0.0
- pg_cooldown 0.1
- pgcollection 0.9.1
- pg_bzip 1.0.0
更新扩展
- citus 13.0.0 -> 13.0.1
- pg_duckdb 0.2.0 -> 0.3.1
- pg_mooncake 0.1.0 -> 0.1.2
- timescaledb 2.17.2 -> 2.18.2
- supautils 2.5.0 -> 2.6.0
- supabase_vault 0.3.1 (become C)
- VectorChord 0.1.0 -> 0.2.1
- pg_bulkload 3.1.22 (+pg17)
- pg_store_plan 1.8 (+pg17)
- pg_search 0.14 -> 0.15.2
- pg_analytics 0.3.0 -> 0.3.4
- pgroonga 3.2.5 -> 4.0.0
- zhparser 2.2 -> 2.3
- pg_vectorize 0.20.0 -> 0.21.1
- pg_net 0.14.0
- pg_curl 2.4.2
- table_version 1.10.3 -> 1.11.0
- pg_duration 1.0.2
- pg_graphql 1.5.9 -> 1.5.11
- vchord 0.1.1 -> 0.2.1 ((+13))
- vchord_bm25 0.1.0 -> 0.1.1
- pg_mooncake 0.1.1 -> 0.1.2
- pgddl 0.29
- pgsql_tweaks 0.11.0
基础设施软件包更新
- pig 0.1.3 -> 0.3.0
- pushgateway 1.10.0 -> 1.11.0
- alertmanager 0.27.0 -> 0.28.0
- nginx_exporter 1.4.0 -> 1.4.1
- pgbackrest_exporter 0.18.0 -> 0.19.0
- redis_exporter 1.66.0 -> 1.67.0
- mongodb_exporter 0.43.0 -> 0.43.1
- VictoriaMetrics 1.107.0 -> 1.111.0
- VictoriaLogs v1.3.2 -> 1.9.1
- DuckDB 1.1.3 -> 1.2.0
- Etcd 3.5.17 -> 3.5.18
- pg_timetable 5.10.0 -> 5.11.0
- FerretDB 1.24.0 -> 2.0.0-rc
- tigerbeetle 0.16.13 -> 0.16.27
- grafana 11.4.0 -> 11.5.2
- vector 0.43.1 -> 0.44.0
- minio 20241218131544 -> 20250218162555
- mcli 20241121172154 -> 20250215103616
- rclone 1.68.2 -> 1.69.0
- vray 5.23 -> 5.28
v3.2.2
- 新增扩展包: Omnigres33个扩展,将postgres作为应用开发平台
- 新增扩展: pg_mooncake: postgres中的duckdb
- 新增扩展: pg_xxhash
- 新增扩展: timescaledb_toolkit
- 新增扩展: pg_xenophile
- 新增扩展: pg_drop_events
- 新增扩展: pg_incremental
- 升级 citus至13.0.0,支持PostgreSQL 17
- 升级 pgml至2.10.0
- 升级 pg_extra_time至2.0.0
- 升级 pg_vectorize至0.20.0
变更内容
- 升级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 命令行工具:pig0.2.0,可用于管理扩展插件。
- 提供五大发行版上 390 个扩展 的 ARM64 扩展支持
- Supabase 发布周最新版本更新,全发行版均可自建。
- Grafana 更新至 11.4 ,新增 infinity 数据源。
软件包变化
- 
新增扩展 - 新增 timescaledb, timescaledb-loader timescaledb-toolkit timescaledb-tool to PIGSTY repo
- 新增 pg_timescaledb,针对 EL 进行的编译重制版本
- 新增 pgroonga,针对 EL 全系进行编译重制
- 新增 vchord 0.1.0
- 新增 pg_bestmatch.rs 0.0.1
- 新增 pglite_fusion 0.0.3
- 新增 pgpdf 0.1.0
 
- 
更新扩展 - 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_snapshot 与 adminpack 被标记为 PG 17 不可用。
- pgml 被设置为默认不下载不安装。
 
- pg_mooncake 因为与 
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中使用软件包组别名
- 提供了 WiltonDB,IvorySQL,PolarDB 的软件源镜像,简化三者的安装。
- 默认启用数据库校验和。
- 修复 ETCD 与 MINIO 日志面板
软件升级
- PostgreSQL 17.2, 16.6, 15.10, 14.15, 13.18, 12.22
- PostgreSQL 扩展版本变动请参考:https://ext.pigsty.io
- 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_duckdb与pg_parquet
- 简化并优化了最新版本 Supabase 自建的流程
- 新增参数 docker_image,允许在 Docker 安装后自动拉取镜像。
扩展
欢迎查阅我们最新的 PostgreSQL 扩展目录: https://ext.pigsty.io
| 统计项 | 总计 | PGDG | PIGSTY | MISC | MISS | PG17 | PG16 | PG15 | PG14 | PG13 | PG12 | 
|---|---|---|---|---|---|---|---|---|---|---|---|
| EL系统扩展 | 338 | 134 | 130 | 4 | 7 | 298 | 334 | 336 | 328 | 319 | 310 | 
| Deb系统扩展 | 326 | 109 | 143 | 74 | 19 | 290 | 322 | 324 | 316 | 307 | 300 | 
| RPM 软件包 | 313 | 122 | 129 | 4 | 6 | 275 | 309 | 311 | 303 | 294 | 285 | 
| DEB 软件包 | 298 | 93 | 142 | 64 | 19 | 264 | 294 | 296 | 288 | 279 | 272 | 
版本升级
- 
新的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_bloat与monitor.pg_index_bloat,使用安全定义包装函数规避 PolarDB 统计视图权限问题。
- 在各模块的监控注册阶段,尊重 prometheus_enabled与grafana_enabled配置选项,关闭时不再注册。
- 在 /etc/profile.d/pgsql.sh中添加PGDATABASE与PGPORT环境变量,设置为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 用户时,设置 PGHOST与PGPORT环境变量。
- 临时移除 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_fdw与jdbc_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包 与 133 个 DEB包,数量已经超过了 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 #wiltondb
- 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 WiltonDB),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四大类。
 
- EL 系与 Debian 系配置模板现在收拢统一,有差异的参数统一放置于 
其他新特性
- 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.ymlAnsible 剧本,替换了原有制作离线软件包的bin/cache与bin/release-pkg脚本。
API变更
- 新参数选项: pg_mode现在支持的模式有pgsql,citus,gpsql,mssql,ivory,polar,用于指定 PostgreSQL 集群的模式- pgsql: 标准 PostgreSQL 高可用集群
- citus: Citus 水平分布式 PostgreSQL 原生高可用集群
- gpsql: 用于 Greenplum 与 GP 兼容数据库的监控(专业版)
- mssql: 安装 WiltonDB / 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.yml或deb.yml中定义的repo_upstream_default提取对应系统的默认值。
- 参数强化:repo_packages参数如果没有显式覆盖定义,将从rpm.yml或deb.yml中定义的repo_packages_default提取对应系统的默认值。
- 参数强化:infra_packages参数如果没有显式覆盖定义,将从rpm.yml或deb.yml中定义的infra_packages_default提取对应系统的默认值。
- 参数强化:node_default_packages参数如果没有显式覆盖定义,将从rpm.yml或deb.yml中定义的node_packages_default提取对应系统的默认值。
- 参数强化:pg_packages与pg_extensions中的扩展现在都会从rpm.yml或deb.yml中定义的pg_package_map执行一次查找与翻译。
- 参数强化:node_packages与pg_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_senders与max_replication_slots至 50,并增大 OLAP 模板临时文件的大小限制为主磁盘的 1/5
版本升级
截止至发布时刻,Pigsty 主要组件的版本升级如下:
- PostgreSQL 16.4, 15.8, 14.13, 13.16, 12.20
- pg_exporter : 0.7.0
- Patroni: 3.3.2
- pgBouncer: 1.23.1
- pgBackRest: 2.53.1
- duckdb : 1.0.0
- etcd : 3.5.15
- pg_timetable: 5.9.0
- ferretdb: 1.23.1
- vip-manager: 2.6.0
- minio: 20240817012454
- mcli: 20240817113350
- grafana : 11.1.4
- loki : 3.1.1
- promtail : 3.0.0
- prometheus : 2.54.0
- pushgateway : 1.9.0
- alertmanager : 0.27.0
- blackbox_exporter : 0.25.0
- nginx_exporter : 1.3.0
- node_exporter : 1.8.2
- keepalived_exporter : 0.7.0
- pgbackrest_exporter 0.18.0
- mysqld_exporter : 0.15.1
- redis_exporter : v1.62.0
- kafka_exporter : 1.8.0
- mongodb_exporter : 0.40.0
- VictoriaMetrics : 1.102.1
- VictoriaLogs : v0.28.0
- sealos: 5.0.0
- vector : 0.40.0
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
亮点特性
新增了大量强力扩展插件,特别是一些使用 rust 与 pgrx 进行开发的强力扩展:
- 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,降低对节点根证书的依赖。
新的贡献者
- @NeroSong made their first contribution in https://github.com/pgsty/pigsty/pull/373
- @waitingsong made their first contribution in https://github.com/pgsty/pigsty/pull/405
完整的变更日志: 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
亮点特性
- 现已将 PostgreSQL 16 作为默认主要版本(16.2)
- 新增 ParadeDB 扩展插件:pg_analytics,pg_bm25, andpg_sparse
- 新增 DuckDB 与 duckdb_fdw插件支持
- 全球 Cloudflare CDN https://repo.pigsty.io 与中国大陆CDN https://repo.pigsty.cc
软件配置变更
- 使用 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_packages,infra_packages,pg_packages,pg_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_repack 与 timescaledb 支持)
- 软件更新:
- 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
亮点特性
- 
使用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): imgsmlr,pg_similarity,pg_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 watchdogand- chown watchdogif- patroni_watchdog_modeis- required
- 当 pg_dbsu_sudo=limitandpatroni_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.cc与demo.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
 
- PGSERVICEin- .pigsty被移除了,取而代之的是- PGDATABASE=postgres,这用户只需 IP 地址就可以从管理节点访问特定实例。
目录结构变化:
- bin/dnsand- 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
- MinIO CVE-2023-28432 问题修复
变更
- 新扩展插件 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_connections和log_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用于批处理任务指标。
- loki与- promtail现在使用 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,或使用Chromethisisunsafe)
- 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_database与- grafana_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,添加新功能,scale与default,允许为指标指定一个倍乘因子,以及指定默认值。
- pg_bgwriter,- pg_wal,- pg_query,- pg_db,- pgbouncer_stat关于时间的指标,单位由默认的毫秒或微秒统一缩放至秒。
- pg_table中的相关计数器指标,现在配置有默认值- 0,替代原有的- NaN。
- pg_class指标收集器默认移除,相关指标添加至- pg_table与- pg_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 修复
- 修复 promtail & loki 配置变量问题
- 修复 grafana 旧版警报。
- 默认禁用 nameserver
- 为 patroni 快捷方式重命名 pg-alias.sh
- 为所有仪表板禁用 exemplars 查询
- 修复 loki 数据目录问题 https://github.com/pgsty/pigsty/issues/100
- 将 autovacuum_freeze_max_age 从 100000000 更改为 1000000000
v1.4.0
架构
- 将系统解耦为4大类别:INFRA、NODES、PGSQL、REDIS,这使得pigsty更加清晰、更易于扩展。
- 单节点部署 = INFRA+NODES+PGSQL
- 部署pgsql集群 = NODES+PGSQL
- 部署redis集群 = NODES+REDIS
- 部署其他数据库 = NODES+ xxx(例如MONGO、KAFKA…待定)
可访问性
- 为中国大陆提供CDN。
- 使用 bash -c "$(curl -fsSL http://get.pigsty.cc/latest)"获取最新源代码。
- 使用新的 download脚本下载并提取包。
监控增强
- 将监控系统分为5大类别:INFRA、NODES、REDIS、PGSQL、APP
- 默认启用日志记录
- 现在默认启用loki和promtail,带有预构建的 loki-rpm。
 
- 现在默认启用
- 模型和标签
- 为所有仪表板添加了一个隐藏的dsprometheus数据源变量,因此您只需选择一个新的数据源而不是修改Grafana数据源和仪表板。
- 为所有指标添加了一个ip标签,并将其用作数据库指标和节点指标之间的连接键。
 
- 为所有仪表板添加了一个隐藏的
- INFRA监控
- Infra主仪表板:INFRA概览
- 添加日志仪表板:日志实例
- PGLOG分析和PGLOG会话现在被视为一个示例Pigsty APP。
 
- NODES监控应用
- 如果您完全不关心数据库,现在可以单独使用Pigsty作为主机监控软件!
- 包括4个核心仪表板:节点概览 & 节点集群 & 节点实例 & 节点警报
- 为节点引入新的身份变量:node_cluster和nodename
- 变量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.ymlplaybook可以部署MatrixDB(Greenplum 7)
- MatrixDB监控仪表板:PGSQL MatrixDB
- 添加示例配置:pigsty-mxdb.yml
监控增强
- 将监控系统分为5大类别:INFRA、NODES、REDIS、PGSQL、APP
- 默认启用日志记录
- 现在默认启用loki和promtail,带有预构建的 loki-rpm。
 
- 现在默认启用
- 模型和标签
- 为所有仪表板添加了一个隐藏的dsprometheus数据源变量,因此您只需选择一个新的数据源而不是修改Grafana数据源和仪表板。
- 为所有指标添加了一个ip标签,并将其用作数据库指标和节点指标之间的连接键。
 
- 为所有仪表板添加了一个隐藏的
- INFRA监控
- Infra主仪表板:INFRA概览
- 添加日志仪表板:日志实例
- PGLOG分析和PGLOG会话现在被视为一个示例Pigsty APP。
 
- NODES监控应用
- 如果您完全不关心数据库,现在可以单独使用Pigsty作为主机监控软件!
- 包括4个核心仪表板:节点概览 & 节点集群 & 节点实例 & 节点警报
- 为节点引入新的身份变量:node_cluster和nodename
- 变量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.ymlplaybook可以部署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.yml和- infra-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_service在register角色中从剧本的中间开始时的问题
- 修复在没有 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_tune和pg_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
- 添加新角色 loki和promtail用于日志记录
- 为管理员节点上的管理员用户添加新角色 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 脚本 createpg,createdb,createuser
- 添加 cmdb 动态库存脚本:load_conf.py,inventory_cmdb,inventory_conf
- 移除过时的剧本:pgsql-monitor,pgsql-service,node-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_url为grafana_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.yml与pgsql-promtail.yml
- 定义基于日志的监控指标
- 使用Grafana制作日志相关可视化面板。
 
- 
监控组件可以使用二进制安装,使用 files/get_bin.sh下载监控二进制组件。
- 
飞升模式: 当集群元节点初始化完成后,可以使用 bin/upgrade升级为动态Inventory 使用pg-meta上的数据库代替YAML配置文件。
问题修复
- 集中修复日志相关问题:
- 修复了HAProxy健康检查造成PG日志中大量 connection reset by peer的问题。
- 修复了HAProxy健康检查造成Patroni日志中大量出现Connect ResetException的问题
- 修复了Patroni日志时间戳格式,去除毫秒时间戳,附加完整时区信息。
- 为dbuser_monitor配置1秒的log_min_duration_statement,避免监控查询出现在日志中。
 
- 修复了HAProxy健康检查造成PG日志中大量 
- 重构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_portpromtail使用的默认端口,默认为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变更
原有vip与haproxy角色的所有配置项,现在迁移至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_services 与 pg_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_ctype与lc_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
- Monitor Only Deployment Support #25
- Split monolith static monitor target file into per-cluster conf #36
- Add create user playbook #29
- Add create database playbook #28
- Database provisioning interface enhancement #33
- User provisioning interface enhancement #34
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 commentfield 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
接口变更
- usernamefield rename to- name
- groupsfield rename to- roles
- optionsnow split into separated configration entries:- login,- superuser,- createdb,- createrole,- inherit,- replication,- bypassrls,- connlimit
- expire_atand- expire_inoptions
- pgbounceroption for user is now- falseby 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与监控供给方式
- Haproxy供给重构与改进 #8
- 访问控制模型改进。#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: []
数据库模板
- pg-init-template.sql 用于初始化template1数据的脚本模板
- pg-init-business.sql 用于初始化其他业务数据库的脚本模板
权限模型
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