下载
在 Pigsty 中,下载和安装扩展是两个独立的步骤。在 INFRA 模块安装期间,Pigsty 将所有必需的软件下载到本地机器上,并为整个部署创建本地 YUM/APT 仓库。
这种方法加速了安装过程,消除了冗余下载,移除了数据库节点访问互联网的需求,减少了网络流量,提高了交付可靠性,并确保了环境中版本的一致性——这些都是生产部署的最佳实践。
对于开发环境,直接从互联网仓库安装扩展也是可以接受的
快速开始
在 repo_packages 和 repo_extra_packages 中定义的包会在 Pigsty 安装期间自动下载到您的本地仓库。
对于 PostgreSQL 相关的包(内核和扩展),通常将它们放在 repo_extra_packages 中,而让 repo_packages 保持其特定于操作系统的全局默认值。
repo_extra_packages 的默认值是 [pgsql-main],这是一个别名,代表当前活跃主版本的核心 PostgreSQL 和关键扩展。
要添加特定扩展,只需将 Pigsty 扩展包名称(pkg)添加到此参数中。Pigsty 会自动为您的活跃 PG 版本和当前操作系统发行版下载适当的包。
要下载当前 PG 版本的所有可用扩展,添加所有 16 个扩展类别别名(如 rich 配置模板中所示):
或者,使用特定版本的别名来下载多个 PostgreSQL 版本的扩展:
要向本地仓库添加新扩展,修改上述参数并运行:
要在您环境中的所有其他节点上刷新仓库元数据,运行:
别名映射
PostgreSQL 拥有丰富的开源生态系统,在不同系统和架构中有众多包。
Pigsty 提供了一个抽象层,将 PostgreSQL 包分类为"别名",隐藏了系统、架构和 PG 版本之间的差异。
在 快速开始部分,我们使用了 pgsql-main 和 pgsql-core 等别名。这些别名根据您的系统和架构转换为特定的包名称。对于 EL 系统,pgsql-main 扩展为 postgresql$v* 内核包以及 pgvector_$v*、pg_repack_$v* 和 wal2json_$v* 扩展包。
$v 占位符被 pg_version 值(默认:18)替换以指向正确的版本。* 通配符扩展以包括所有包变体(例如 server、libs、contrib、devel)。Pigsty 自动处理这些细节。
可用包和别名的完整列表在 roles/node_id/vars/<os_package>.yml 中。以下是在所有支持的系统中可用的常用别名:
使用这些别名时,$v 占位符会被来自 pg_version(默认:18)的 PostgreSQL 主版本号替换。
要为不同的 PostgreSQL 版本下载包,可以:
- 更改
pg_version参数,或 - 通过将
pgsql-前缀替换为pg18-、pg17-、pg16-等来使用特定版本的别名。
并非所有扩展在所有系统上都可用。某些扩展在别名中被注释掉,因为它们:
- 在特定系统上不可用
- 具有大量依赖项(如
pl/R) - 依赖于商业软件(如
oracle_fdw) - 在最新的 PG 18 中不可用但在早期版本中可用
如果需要,您仍然可以手动添加这些扩展。