Pigsty v3.0.0
亮点特性
- 扩展大爆炸:
Pigsty v3 提供了史无前例的 333 个可用扩展插件。 包括 121 个扩展 RPM包 与 133 个 DEB包,数量已经超过了 PGDG 官方仓库提供的扩展数量总和(135 RPM/ 109 DEB)。 而且,Pigsty 还将 EL 系统与 Debian 生态的独有 PG 扩展插件相互移植,实现了两大发行版的插件生态大对齐。
- 可插拔内核:
Pigsty v3 允许您更换 PostgreSQL 内核,目前支持了 SQL Server 兼容的 Babelfish (线缆协议级仿真),Oracle 兼容的 IvorySQL,以及 PG 版的 RAC PolarDB;此外,现在自托管 Supabase 也在 Debian 系统中可用。 您可以让 Pigsty 中带有 HA,IaC,PITR,监控的生产级 PostgreSQL 集群仿真 MSSQL (via Babelfish),Oracle via (IvorySQL),Oracle RAC (via PolarDB), MongoDB(via FerretDB),以及 Firebase (via Supabase)。
- 专业级服务:
我们现在提供 Pigsty Pro 专业版,在开源版的功能基础上提供增值服务。专业版提供额外的功能模块:MSSQL,Oracle,Mongo,K8S,Victoria,Kafka,TigerBeetle 等……,并提供更广泛的 PG 大版本、操作系统、芯片架构的支持。 提供针对全系操作系统精准小版本定制的离线安装包,以及 EL7,Debian 11,Ubuntu 20.04 等过保老系统的支持;此外,专业版还提供内核可插拔定制服务,并对 PolarDB PG 的原生部署、监控管控支持以满足“国产化”需要。
使用以下命令快速安装体验:
重大变更
本次 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: 安装 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)