安装扩展

如何从 Pigsty 本地软件源,或直接从上游互联网软件源安装 PostgreSQL 扩展插件?

Pigsty 使用操作系统标准的包管理器(yum/apt)来安装 PostgreSQL 扩展插件。


扩展安装相关参数

您可以在以下变量中指定要安装哪些扩展,两者的效果基本相同:

通常 pg_packages 用于在全局指定整个环境中所有 PostgreSQL 集群都需要统一安装的软件包: 例如 PostgreSQL 内核,高可用组建 Patroni,连接池 pgBouncer,监控 pgExporter 等。 Pigsty 默认也会在这里指定安装两个必选扩展: pg_repackwal2json 用于膨胀治理和 CDC 变更抽取。

pg_extensions 则通常用于在特定集群中,指定本集群需要安装的扩展插件。 Pigsty 默认安装三个PG生态的重要扩展:postgis, timescaledb, pgvector,您可以在这里指定需要安装的其他扩展插件。

pg_packages:                      # pg packages to be installed, alias can be used
  - postgresql
  - patroni pgbouncer pgbackrest pg_exporter pgbadger vip-manager wal2json pg_repack
pg_extensions:                    # pg extensions to be installed, alias can be used
  - postgis timescaledb pgvector

另一个重要区别是:pg_packages 安装的软件包只确保存在,而 pg_extensions 安装的软件包会默认升级到最新可用版本。 当使用本地软件源时,这并不是一个问题。当您直接使用互联网上游软件源时,请充分考虑这一点,并将不希望升级的扩展插件转移到 pg_packages 中。

在 PGSQL 集群初始化时,Pigsty 会自动安装 pg_packagespg_extensions 中指定的扩展插件。


在已有集群上安装扩展

对于一个已经完成置备初始化的 PostgreSQL 集群,您可以首先将所需的扩展添加至 pg_packagespg_extensions 中,然后通过以下命令安装扩展:

./pgsql.yml -t pg_extension  # 安装 pg_extensions 中指定的扩展插件

扩展名翻译机制

在 Pigsty 中,您可以在 pg_packagespg_extensions 中使用:

  • 原始的操作系统包名
  • 标准扩展名(Alias)

例如:

postgis                    # 安装当前 PG 大版本对应的 PostGIS 包
postgis34_$v*              # 安装当前 PG 大版本对应的 PostGIS RPM 包
postgis34_15*              # 安装 PG 15 大版本对应的 PostGIS RPM 包
postgresql-$v-postgis-3*   # 安装当前 PG 大版本对应的 PostGIS DEB 包
postgresql-14-postgis-3*   # 安装 PG 14 大版本对应的 PostGIS DEB 包

我们建议使用 Pigsty 提供的标准化扩展名(Alias),在不同的操作系统发行版中,Pigsty 将标准扩展名翻译为对应 PG 大版本的 RPM / DEB 包名,这样用户可以无需关心不同操作系统发行版的扩展包名差异:

Pigsty 尽最大努力对齐 EL 操作系统与 Debian 操作系统生态的 PostgreSQL 扩展,但仍有少量扩展因为各种原因难以/尚未移植, 请参考 RPM扩展列表DEB扩展列表 了解更多信息。