v3.2:命令行工具pig,完备的ARM扩展仓库,Supabase & Grafana 加强
新年就要到了,Pigsty 迎来了 2024 年的最后一次发布 v3.2。
本次发布带来了一个命令行工具 pig
,以及完善的 ARM 扩展支持,两者合体,可为用户带来10大主流 Linux 系统上丝滑的 PG 交付能力。
本次发布例行修复了一些问题,同时跟进了 Supabase 发布周的密集变化,并为 Grafana 扩展插件与数据源提供了 RPM / DEB 包。
Pig 命令行工具
Pigsty v3.2 默认提供了一个命令行工具 pig ,可以用来进一步简化 Pigsty 的安装部署配置过程。
但 pig
并非仅仅是一个 Pigsty 的命令行工具,它还是一个可以独立使用的全功能 PostgreSQL 包管理器。
你是否曾在安装 PostgreSQL 的扩展插件时,面对各种发行版、各种芯片架构,一把辛酸泪? 将大把时间耗费在过时的 README,晦涩的配置脚本和随机的 GitHub 分支中翻找? 又或者苦恼于国内网络环境,仓库缺失、镜像被墙?下载犹如便秘阻塞?
现在好了,“小猪骑大象”正式登场,为你打包解决所有难题: 让我们迎来 Pig,一个全新的、基于 Go 的包管理器,它能够处理 Postgres 和 它不断扩展的扩展库,而不会让你的一天变成调试马拉松。
Pig 本身是用 Go 编写的轻量级二进制,无依赖、易安装:只需一行命令即可安装,即刻开启“猪猪冲锋”。 它尊重操作系统的包管理传统,拒绝重新发明轮子,基于 yum/dnf/apt 实现包管理;
Pig 专注于跨发行版的和谐——无论你是在 Debian、Ubuntu 还是 Red Hat 衍生版上, 你都可以获得一种单一、流畅的安装和更新 Postgres 及任何扩展的方法。不再需要从源代码编译或处理半成品仓库。
如果说 PostgreSQL 的未来是无法阻挡的可扩展性,Pig 就是帮助你解锁它的精灵。 老实说,没有人会抱怨他们的 Postgres 实例拥有太多扩展 —— 毕竟不用的时候没有任何影响,用的事后它就在手边,免费的午餐谁不爱?
ARM 扩展仓库
Pig 的幕后魔法是一个充满难找或新发布扩展的补充扩展仓库,因此你总是可以轻松获取优质扩展 —— 经过测试驱动、精心策划并准备就绪。
在最近一个月内,Pigsty 已经为 ARM64 系统架构做好了完整的支持。我们为受支持的五个主流 Linux 发行版 (EL8,EL9, Debian12,Ubuntu 22/24)提供了 完整 的 ARM 支持。 完整的意思是你在 AMD64 上使用的配置文件可以一模一样用在 ARM64 架构的系统上。当然少不了零星例外:极个别扩展目前缺少 ARM 支持,我们将在后面逐一解决这些特里。
还在为寻找那些小众的 Git 仓库、不完整的 Docker 构建或者过时的维基文档而苦恼,只为安装某个必须的 Postgres 插件吗? 我们懂你的痛。尽管 PostgreSQL 的可扩展性堪称超能力,但整个生态面临的最大难题一直是分发——如何在不陷入编译地狱的情况下,顺利安装各种 FDW、向量扩展、GIS 库、Rust 模块等“神兵利器”?
现在有了 Pigsty Extension Repo,它集合了 340+ 精选 Postgres 扩展,编译成方便使用的 .rpm 和 .deb 包,支持多版本、多架构。Timescale?OK。Supabase 相关?全套到位。 DuckDB 的各种缝合包?都已就绪。我们搭建了一个跨发行版的流水线,将社区自研的新扩展、历久弥新的老模块,以及官方 PGDG 包整合在一起,让它们能在 Debian、Ubuntu、Red Hat 系列等各大系统上一键无缝安装。 秘诀是什么?我们不造轮子,而是直接基于每个发行版原生的包管理器(YUM、APT、DNF 等),保持与官方 PGDG 仓库的版本对齐。
从底层看,这个仓库是更大范围的 Pigsty PostgreSQL 发行版一部分,但你也可以在自己的环境中独立使用,无需全部接纳 Pigsty。 我们投入了大量精力来修补、测试和打磨每个扩展,你可以坐收渔利。所有内容都是免费、开源的,而且整合起来非常轻松。已经有几家友商将它作为额外的上游用于安装扩展了!
想彻底解决你对 Postgres 扩展的所有烦恼?点击访问 ext.pigsty.io 深入了解,查阅完整的扩展索引和使用说明。 我们把能找到的所有插件都进行了打包测试,只为让 Postgres 成为那个本该无所不能的“最终形态”——毕竟,谁会嫌自己的超能力太多呢?欢迎体验!
针对 ARM64 平台的支持给了我很大信心,因此我也将目光放到了更多的芯片架构支持上。 例如 IBM LinuxOne Cloud 最近有一个活动,赞助开源项目一台永久的虚拟机 (2c/8g/100g),最主要的是还是 s390x 大型机。 所以我准备最近试试水,让 Pigsty 跑在 IBM 大型机上,哈哈。
Supabase 例行跟进
Pigsty 之前推出的 Supabase 自建教程 能让用户在一台机器上迅速拉起自建的 Supabase 服务。 对于密集使用 Supabase 的创业群体中引起了一些反响,所以我们也在 Supabase 的最新版本上做了一些跟进。
Supabase 最近在 2024 年的最后一个月里发布了一系列重要更新,Pigsty v3.2 也跟进了这些变化,为用户提供了最新的 Supabase 版本。 当然说实话除了 AI 噱头,大部分都是:Supabase 又提供了XXX能力(比如队列),但底下本质上是新收录了 XXX PG 扩展(比如 PGMQ)。
当然 Supabase 最近的大动作是 OrieloDB(年中被 supabase 收购了!),一个很有趣的 PostgreSQL Fork,专注于提升 PG 的 OLTP 性能。 目前这项功能在 Supabase 中被标记为 Beta,作为一个用户的可选项存在,但我需要确保即使以后 Supabase 使用它作为主干,Pigsty 也能支持。
目前,我们正在准备 OrieloDB 的 RPM/DEB 包,以及针对 OrieloDB 的扩展插件。凭借这个契机,我们也准备进一步将这些扩展的超能力普及到更多的 PG 分叉上, 例如 Oracle 兼容的 IvorySQL 3/4 ,SQL Server 兼容的 WiltonDB,以及 PolarDB PG。
Grafana 的可扩展性
Grafana 是一个非常流行的开源监控和可视化工具。当然,它也有着许多扩展插件,比如各类数据可视化面板与数据源。但这些扩展插件的安装和管理一直是一个问题。 Grafana自己的 CLI 工具确实可以用于安装插件,不过墙内的用户必须科学上网才能使用,带来了很大的不便。
在 v3.2 中,我们将 Grafana 常用的扩展面板与数据源插件都做成了 RPM/DEB 包,方便开箱即用。例如,以下这些架构无关的扩展现在被制作成了一个 grafana-plugins 软件包:
- volkovlabs-echarts-panel
- volkovlabs-image-panel
- volkovlabs-form-panel
- volkovlabs-table-panel
- volkovlabs-variable-panel
- knightss27-weathermap-panel
- marcusolsson-dynamictext-panel
- marcusolsson-treemap-panel
- marcusolsson-calendar-panel
- marcusolsson-hourly-heatmap-panel
- marcusolsson-static-datasource
- marcusolsson-json-datasource
- volkovlabs-rss-datasource
- volkovlabs-grapi-datasource
而此外,我们还针对那些架构相关(里面包含了 x86, ARM 二进制)的数据源扩展制作独立的 RPM/DEB 包,例如 Grafana 最近推出的 Infinity 数据源插件: 你可以使用任意 REST/GRAPHQL API,使用 CSV/TSV/XML/HTML 作为数据源,这极大扩展了 Grafana 的数据接入能力。
与此同时,我们还针对 VictoriaMetrics 和 VictoriaLogs 的 Grafana 数据源插件制作了 RPM/DEB 包,方便用户在 Grafana 中使用这两个开源的时序数据库和日志数据库。
下一步的发展规划
目前,Pigsty 本身已经达到了一个让我非常满意的状态。 接下来一段时间的工作中心,我会放在 pig 这个工具,以及扩展仓库的维护上。
目前是一个比较难得的机会窗口,用户与开发者开始意识到了扩展的重要性,但 PostgreSQL 还没有扩展分发的事实标准。 在这个关键时刻,我希望 Pigsty / pig 能够成为一个有影响力的 PG扩展插件事实标准,抢占生态位高地。
当然,Pigsty 本身一直也缺少一个足够好用的 CLI 工具,接下来我会把散落在各个Ansible剧本中的功能整合到 pig 中,让用户可以更方便地管理 Pigsty 与 PostgreSQL。
v3.2.0 发行注记
亮点特性
- Pigsty 命令行工具:
pig
0.2.0,可用于管理扩展插件。 - 提供五大发行版上 340 个扩展 的 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