# Pigsty v2.7.0

> 扩展大爆炸，新增20+强力扩展插件，与多款 Docker 应用

---

LLMS 索引： [llms.txt](/zh/llms.txt)

---

**v2\.7\.0 · 2024-05-16**
- [查看发布](https://github.com/pgsty/pigsty/releases/tag/v2.7.0)
- [源码 · tar\.gz](https://github.com/pgsty/pigsty/archive/refs/tags/v2.7.0.tar.gz)
- [源码 · zip](https://github.com/pgsty/pigsty/archive/refs/tags/v2.7.0.zip)
- [pgsty\/pigsty](https://github.com/pgsty/pigsty)

## 亮点特性

新增了大量强力扩展插件，特别是一些使用 `rust` 与 `pgrx` 进行开发的强力扩展：

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

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

- [parquet_s3_fdw](https://github.com/pgspider/parquet_s3_fdw) 1.1.0：从 S3 存取 Parquet 格式文件，作为湖仓之用
- [plv8](https://github.com/plv8/plv8) 3.2.2：使用 V8 引擎，允许在 PostgreSQL 中使用 Javascript 语言编写存储过程
- [md5hash](https://github.com/tvondra/md5hash) 1.0.1：用于存储原生 MD5 哈希数据类型，而非文本。
- [pg_tde](https://github.com/Percona-Lab/pg_tde) 1.0 alpha：PostgreSQL 的实验性加密存储引擎。
- [pg_dirtyread](https://github.com/df7cb/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 进行了一系列铺垫与准备。
- 新增了 [防呆设计](https://github.com/pgsty/pigsty/issues/402)，避免在非 Pigsty 纳管的节点上运行 pgsql.yml 剧本 （[AdamYLK](https://github.com/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](https://github.com/pgsty/pigsty/tree/master/app/odoo)：开源 ERP 软件与插件
- [Jupyter](https://github.com/pgsty/pigsty/tree/master/app/jupyter)：使用容器运行 Jupyter Notebook
- [PolarDB](https://github.com/pgsty/pigsty/tree/v2.7.0/app/polardb)：运行“国产数据库” PolarDB，应付信创检查！
- [supabase](https://github.com/pgsty/pigsty/tree/master/app/supabase)：更新至最近的 GA 版本
- [bytebase](https://github.com/pgsty/pigsty/tree/master/app/bytebase)：使用 `latest` 标签替代特定版本号。
- [pg_exporter](https://github.com/pgsty/pigsty/tree/master/app/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

## 离线软件包校验和

```bash
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
```

## 信息来源

- [GitHub Release](https://github.com/pgsty/pigsty/releases/tag/v2.7.0)
- [Pigsty v2.7 发布文章](https://pigsty.cc/blog/pigsty/v2.7/)
- [历史 About / 发布注记](https://pigsty.cc/docs/about/release/#v270)
- [源码对比：`v2.6.0...v2.7.0`](https://github.com/pgsty/pigsty/compare/v2.6.0...v2.7.0)
