参考
1 - Linux 兼容性
Pigsty 运行于 Linux 操作系统上,支持 amd64/x86_64 与 arm64/aarch64 架构,支持 EL,Debian,Ubuntu 三大主流 Linux 发行版。
Pigsty 不使用任何虚拟化容器化技术,直接运行于裸操作系统上。我们为三大主流 Linux 发行版最近两个大版本的两种架构提供支持。
概述
Pigsty 推荐使用的操作系统版本:RockyLinux 10.1、Ubuntu 24.04.3、Debian 13.3。
| 发行版 | 架构 | 系统代码 | PG18 | PG17 | PG16 | PG15 | PG14 | PG13 |
|---|---|---|---|---|---|---|---|---|
| RHEL / Rocky / Alma 10 | x86_64 | el10.x86_64 | ||||||
| RHEL / Rocky / Alma 10 | aarch64 | el10.aarch64 | ||||||
Ubuntu 24.04 (noble) | x86_64 | u24.x86_64 | ||||||
Ubuntu 24.04 (noble) | aarch64 | u24.aarch64 | ||||||
Debian 13 (trixie) | x86_64 | d13.x86_64 | ||||||
Debian 13 (trixie) | aarch64 | d13.aarch64 |
EL
Pigsty 支持 RHEL / Rocky / Alma / Anolis / CentOS 8、9、10 版本。
| EL 发行版 | 架构 | 系统代码 | PG18 | PG17 | PG16 | PG15 | PG14 | PG13 |
|---|---|---|---|---|---|---|---|---|
| RHEL10 / Rocky10 / Alma10 | x86_64 | el10.x86_64 | ||||||
| RHEL10 / Rocky10 / Alma10 | aarch64 | el10.aarch64 | ||||||
| RHEL9 / Rocky9 / Alma9 | x86_64 | el9.x86_64 | ||||||
| RHEL9 / Rocky9 / Alma9 | aarch64 | el9.aarch64 | ||||||
| RHEL8 / Rocky8 / Alma8 | x86_64 | el8.x86_64 | ||||||
| RHEL8 / Rocky8 / Alma8 | aarch64 | el8.aarch64 | ||||||
| RHEL7 / CentOS7 | x86_64 | el7.x86_64 | ||||||
| RHEL7 / CentOS7 | aarch64 | - |
请注意,PGDG Yum 仓库 从 EL9 / EL10 开始,针对 EL 小版本 进行构建,目前支持的小版本为:9.6, 9.7, 10.0, 10.1。 建议离线安装包/自建离线仓库与系统 EL 小版本(例如 RockyLinux 9.7 / 10.1)保持一致,跨小版本可能因 OpenSSL 等依赖版本跳变导致不可用。
EL8 将于 2029 年进入 EOL,建议尽早规划升级。鉴于 EL10 适配已经完成,我们将在下个版本移除对 EL8 的支持。
Red Hat Enterprise Linux 7 已经于 2024年6月停止维护,PGDG 也不再为 PostgreSQL 16/17/18 提供 EL7 二进制包支持。
如需在老旧操作系统上获得运行支持,请考虑我们的 专业订阅服务。
Ubuntu
Pigsty 支持 Ubuntu 24.04 / 22.04:
| Ubuntu 发行版 | 架构 | 系统代码 | PG18 | PG17 | PG16 | PG15 | PG14 | PG13 |
|---|---|---|---|---|---|---|---|---|
Ubuntu 24.04 (noble) | x86_64 | u24.x86_64 | ||||||
Ubuntu 24.04 (noble) | aarch64 | u24.aarch64 | ||||||
Ubuntu 22.04 (jammy) | x86_64 | u22.x86_64 | ||||||
Ubuntu 22.04 (jammy) | aarch64 | u22.aarch64 | ||||||
Ubuntu 20.04 (focal) | x86_64 | u20.x86_64 | ||||||
Ubuntu 20.04 (focal) | aarch64 | - |
Ubuntu 24.04 在系统可靠性/稳定性与软件版本的新颖性/齐全性上取得了良好的平衡,推荐使用此系统。
Ubuntu 20.04 已于 2025年4月进入 EOL。 如需在老旧操作系统上获得扩展支持,请考虑我们的 专业订阅服务。
Debian
Pigsty 支持 Debian 12 / 13,推荐使用最新的 Debian 13.3
| Debian 发行版 | 架构 | 系统代码 | PG18 | PG17 | PG16 | PG15 | PG14 | PG13 |
|---|---|---|---|---|---|---|---|---|
Debian 13 (trixie) | x86_64 | d13.x86_64 | ||||||
Debian 13 (trixie) | aarch64 | d13.aarch64 | ||||||
Debian 12 (bookworm) | x86_64 | d12.x86_64 | ||||||
Debian 12 (bookworm) | aarch64 | d12.aarch64 | ||||||
Debian 11 (bullseye) | x86_64 | d11.x86_64 | ||||||
Debian 11 (bullseye) | aarch64 | - |
Debian 11 已经于 2024-07 进入 EOL。如需在老旧操作系统上获得扩展支持,请考虑我们的 专业订阅服务。
Vagrant
当您使用本地虚拟机部署 Pigsty 时,可以考虑使用以下 Vagrant 操作系统镜像,这也是 Pigsty 开发测试使用的镜像。
| 系统 | 镜像 |
|---|---|
| AlmaLinux 8.10 | cloud-image/almalinux-8 |
| Rocky 9.7 | bento/rockylinux-9 |
| AlmaLinux 10.1 | cloud-image/almalinux-10 |
| Debian 12.13 | cloud-image/debian-12 |
| Debian 13.3 | cloud-image/debian-13 |
| Ubuntu 22.04 | cloud-image/ubuntu-22.04 |
| Ubuntu 24.04 | bento/ubuntu-24.04 |
Terraform
当您使用云服务器部署 Pigsty 时,可以考虑在 Terraform 中使用以下操作系统基础镜像,以 阿里云 为例:
| x86_64 | 镜像 |
|---|---|
| Rocky 8.10 | rockylinux_8_10_x64_20G_alibase_20240923.vhd |
| Rocky 9.7 | rockylinux_9_7_x64_20G_alibase_20260119.vhd |
| Rocky 10.1 | rockylinux_10_1_x64_20G_alibase_20260119.vhd |
| Ubuntu 22.04 | ubuntu_22_04_x64_20G_alibase_20240926.vhd |
| Ubuntu 24.04 | ubuntu_24_04_x64_20G_alibase_20240923.vhd |
| Debian 12.13 | debian_12_13_x64_20G_alibase_20241201.vhd |
| Debian 13.3 | debian_13_3_x64_20G_alibase_20250101.vhd |
| aarch64 | 镜像 |
|---|---|
| Rocky 8.10 | rockylinux_8_10_arm64_20G_alibase_20251120.vhd |
| Rocky 9.7 | rockylinux_9_7_arm64_20G_alibase_20260119.vhd |
| Rocky 10.1 | rockylinux_10_1_arm64_20G_alibase_20260119.vhd |
| Ubuntu 22.04 | ubuntu_22_04_arm64_20G_alibase_20251126.vhd |
| Ubuntu 24.04 | ubuntu_24_04_arm64_20G_alibase_20251126.vhd |
| Debian 12.13 | debian_12_13_arm64_20G_alibase_20250825.vhd |
| Debian 13.3 | debian_13_3_arm64_20G_alibase_20251121.vhd |
2 - 模块列表
正式模块
| 模块 | 类别 | 状态 | 文档入口 | 简介 |
|---|---|---|---|---|
PGSQL | 核心 | GA | /docs/pgsql | 高可用 PostgreSQL 集群,内置备份、监控、SOP 与扩展生态。 |
INFRA | 核心 | GA | /docs/infra | 本地软件仓库 + VictoriaMetrics/Logs/Traces + Grafana 等基础设施。 |
NODE | 核心 | GA | /docs/node | 节点初始化与收敛:系统调优、管理员、HAProxy、Vector、Docker 等。 |
ETCD | 核心 | GA | /docs/etcd | PostgreSQL 高可用 DCS(服务发现、配置、选主元数据)。 |
MINIO | 扩展 | GA | /docs/minio | S3 兼容对象存储,可作为 PostgreSQL 备份仓库。 |
REDIS | 扩展 | GA | /docs/redis | Redis 独立/哨兵/集群模式部署与监控。 |
FERRET | 扩展 | GA | /docs/ferret | FerretDB 模块(MONGO API 兼容),为 PG 提供 MongoDB 协议访问。 |
DOCKER | 扩展 | GA | /docs/docker | Docker Daemon 及容器化应用运行基础能力。 |
JUICE | 扩展 | BETA | /docs/juice | JuiceFS 分布式文件系统,使用 PostgreSQL 作为元数据引擎。 |
VIBE | 扩展 | BETA | /docs/vibe | 浏览器化开发环境,集成 Code-Server、JupyterLab、Node.js 与 Claude Code。 |
核心模块
Pigsty 提供了四个 基础 功能模块,对于提供完整高可用的 PostgreSQL 服务非常重要:
PGSQL:带有高可用,时间点恢复,IaC,SOP,监控系统,以及 444 个扩展插件的自治的 PostgreSQL 集群。INFRA:本地软件仓库、Prometheus、Grafana、Loki、AlertManager、PushGateway、Blackbox Exporter…NODE:调整节点到所需状态、名称、时区、NTP、ssh、sudo、haproxy、docker、vector、keepalivedETCD:分布式键值存储,用作高可用 Postgres 集群的 DCS:共识选主/配置管理/服务发现。
尽管这四个模块通常会同时安装,但单独使用也是可行的 —— 只有 NODE 模块通常是必选的。
扩展模块
Pigsty 提供了六个 扩展 功能模块,它们对于核心功能来说并非必须,但可以用于增强 PostgreSQL 的能力:
MINIO:S3 兼容的简单对象存储服务器,可作为可选的 PostgreSQL 数据库备份仓库,带有生产部署支持与监控。REDIS:Redis 服务器,高性能数据结构服务器,支持独立主从、哨兵、集群模式生产部署,并带有完善的监控支持。MONGO:FerretDB 原生部署支持 —— 它为 PostgreSQL 添加了 MongoDB 线缆协议级别的 API 兼容支持!DOCKER:Docker Daemon 服务,允许用户一键拉起容器化的无状态软件工具模板,为 Pigsty 加装各种功能!JUICE:JuiceFS 分布式文件系统模块,以 PostgreSQL 作为元数据引擎,提供可共享的 POSIX 存储能力。VIBE:浏览器化开发环境模块,集成 Code-Server、JupyterLab、Node.js 与 Claude Code,开箱即用。
生态模块
以下模块与 PostgreSQL 生态紧密相关,属于可选生态能力,不计入上述 10 个正式模块:
3 - 扩展列表
Pigsty 扩展完整信息请见 PGEXT.CLOUD。
当前共有 451 个可用 PostgreSQL 扩展。
TIME
| 扩展版名称 | 版本号 | 分类 | 说明 |
|---|---|---|---|
| timescaledb | 2.25.0 | TIME | 时序数据库扩展插件 |
| timescaledb_toolkit | 1.22.0 | TIME | 超表分析查询,时间序列流式处理,以及其他SQL工具 |
| timeseries | 0.2.0 | TIME | 时序数据API封装 |
| periods | 1.2.3 | TIME | 为 PERIODs 和 SYSTEM VERSIONING 提供标准 SQL 功能 |
| temporal_tables | 1.2.2 | TIME | 时态表功能支持 |
| emaj | 4.7.1 | TIME | 让数据库的子集具有细粒度日志和时间旅行功能 |
| table_version | 1.11.1 | TIME | PostgreSQL 版本控制表扩展 |
| pg_cron | 1.6.7 | TIME | 定时任务调度器 |
| pg_task | 1.0.0 | TIME | 在特定时间点在后台执行SQL命令 |
| pg_later | 0.4.0 | TIME | 执行查询,并在稍后异步获取查询结果 |
| pg_background | 1.6 | TIME | 在后台运行 SQL 查询 |
GIS
| 扩展版名称 | 版本号 | 分类 | 说明 |
|---|---|---|---|
| postgis | 3.6.2 | GIS | PostGIS 几何和地理空间扩展 |
| postgis_topology | 3.6.2 | GIS | PostGIS 拓扑空间类型和函数 |
| postgis_raster | 3.6.2 | GIS | PostGIS 光栅类型和函数 |
| postgis_sfcgal | 3.6.2 | GIS | PostGIS SFCGAL 函数 |
| postgis_tiger_geocoder | 3.6.2 | GIS | PostGIS tiger 地理编码器和反向地理编码器 |
| address_standardizer | 3.6.2 | GIS | 地址标准化函数。 |
| address_standardizer_data_us | 3.6.2 | GIS | 地址标准化函数:美国数据集示例 |
| pgrouting | 4.0.1 | GIS | 提供寻路能力 |
| pointcloud | 1.2.5 | GIS | 提供激光雷达点云数据类型支持 |
| pointcloud_postgis | 1.2.5 | GIS | 将激光雷达点云与PostGIS几何类型相集成 |
| h3 | 4.2.3 | GIS | H3六边形层级索引支持 |
| h3_postgis | 4.2.3 | GIS | H3与PostGIS集成的扩展插件 |
| q3c | 2.0.1 | GIS | Q3C天空索引插件 |
| ogr_fdw | 1.1.7 | GIS | GIS 数据外部数据源包装器 |
| geoip | 0.3.0 | GIS | IP 地理位置扩展(围绕 MaxMind GeoLite 数据集的包装器) |
| pg_polyline | 0.0.1 | GIS | Google快速Polyline编码解码扩展 |
| pg_geohash | 1.0 | GIS | 使用GeoHash处理空间坐标的函数包 |
| mobilitydb | 1.3.0 | GIS | MobilityDB地理空间投影数据管理分析平台 |
| mobilitydb_datagen | 1.3.0 | GIS | MobilityDB随机数据生成函数 |
| tzf | 0.2.3 | GIS | 快速根据GPS经纬度坐标查找时区 |
| earthdistance | 1.2 | GIS | 计算地球表面上的大圆距离 |
RAG
| 扩展版名称 | 版本号 | 分类 | 说明 |
|---|---|---|---|
| vector | 0.8.1 | RAG | 向量数据类型和 ivfflat / hnsw 访问方法 |
| vchord | 1.1.0 | RAG | 使用Rust重写的高性能向量扩展 |
| vectorscale | 0.9.0 | RAG | 使用DiskANN算法对向量进行高效索引 |
| vectorize | 0.26.0 | RAG | 在PostgreSQL中封装RAG向量检索服务 |
| pg_similarity | 1.0 | RAG | 提供17种距离度量函数 |
| smlar | 1.0 | RAG | 高效的相似度搜索函数 |
| pg_summarize | 0.0.1 | RAG | 使用LLM对文本字段进行总结 |
| pg_tiktoken | 0.0.1 | RAG | 在PostgreSQL中计算OpenAI使用的Token数 |
| pg4ml | 2.0 | RAG | PG4ML是一个机器学习框架 |
| pgml | 2.10.0 | RAG | PostgresML:用SQL运行机器学习算法并训练模型 |
FTS
| 扩展版名称 | 版本号 | 分类 | 说明 |
|---|---|---|---|
| pg_search | 0.21.7 | FTS | ParadeDB BM25算法全文检索插件,ES全文检索 |
| pgroonga | 4.0.4 | FTS | 使用Groonga,面向所有语言的高速全文检索平台 |
| pgroonga_database | 4.0.4 | FTS | PGGroonga 数据库管理模块 |
| pg_bigm | 1.2 | FTS | 基于二字组的多语言全文检索扩展 |
| zhparser | 2.3 | FTS | 中文分词,全文搜索解析器 |
| pg_bestmatch | 0.0.2 | FTS | 在数据库内生成BM25稀疏向量 |
| vchord_bm25 | 0.3.0 | FTS | BM25排序算法 |
| pg_tokenizer | 0.1.1 | FTS | 用于全文检索的分词器 |
| biscuit | 2.2.2 | FTS | 使用IAM的高性能文本模式匹配 |
| pg_textsearch | 0.5.0 | FTS | 带有BM25排序的全文搜索扩展 |
| hunspell_cs_cz | 1.0 | FTS | Hunspell捷克语全文检索词典 |
| hunspell_de_de | 1.0 | FTS | Hunspell德语全文检索词典 |
| hunspell_en_us | 1.0 | FTS | Hunspell英语全文检索词典 |
| hunspell_fr | 1.0 | FTS | Hunspell法语全文检索词典 |
| hunspell_ne_np | 1.0 | FTS | Hunspell尼泊尔语全文检索词典 |
| hunspell_nl_nl | 1.0 | FTS | Hunspell荷兰语全文检索词典 |
| hunspell_nn_no | 1.0 | FTS | Hunspell挪威语全文检索词典 |
| hunspell_pt_pt | 1.0 | FTS | Hunspell葡萄牙语全文检索词典 |
| hunspell_ru_ru | 1.0 | FTS | Hunspell俄语全文检索词典 |
| hunspell_ru_ru_aot | 1.0 | FTS | Hunspell俄语全文检索词典(来自AOT.ru小组) |
| fuzzystrmatch | 1.2 | FTS | 确定字符串之间的相似性和距离 |
| pg_trgm | 1.6 | FTS | 文本相似度测量函数与模糊检索 |
OLAP
| 扩展版名称 | 版本号 | 分类 | 说明 |
|---|---|---|---|
| citus | 14.0.0 | OLAP | Citus 分布式数据库 |
| citus_columnar | 14.0.0 | OLAP | Citus 列式存储引擎 |
| columnar | 1.1.2 | OLAP | 开源列式存储扩展 |
| pg_analytics | 0.3.7 | OLAP | 由 DuckDB 驱动的数据分析引擎 |
| pg_duckdb | 1.1.1 | OLAP | 在PostgreSQL中的嵌入式DuckDB扩展 |
| pg_mooncake | 0.2.0 | OLAP | PostgreSQL列式存储表 |
| pg_clickhouse | 0.1.3 | OLAP | 从PostgreSQL中查询ClickHouse的接口 |
| duckdb_fdw | 1.1.2 | OLAP | DuckDB 外部数据源包装器 |
| pg_parquet | 0.5.1 | OLAP | 在PostgreSQL与本地/S3中的Parquet文件复制数据 |
| pg_fkpart | 1.7.0 | OLAP | 按外键实用程序进行表分区的扩展 |
| pg_partman | 5.4.1 | OLAP | 用于按时间或 ID 管理分区表的扩展 |
| plproxy | 2.11.0 | OLAP | 作为过程语言实现的数据库分区 |
| pg_strom | 6.1 | OLAP | 使用GPU与NVMe加速大数据处理 |
| tablefunc | 1.0 | OLAP | 交叉表函数 |
FEAT
| 扩展版名称 | 版本号 | 分类 | 说明 |
|---|---|---|---|
| age | 1.7.0 | FEAT | Apache AGE,图数据库扩展 (Deb可用) |
| hll | 2.19 | FEAT | hyperloglog 数据类型 |
| rum | 1.3.15 | FEAT | RUM 索引访问方法 |
| pg_ai_query | 0.1.1 | FEAT | AI驱动的 Postgres SQL 查询生成 |
| pg_ttl_index | 2.0.0 | FEAT | 基于TTL索引的自动数据过期清理 |
| pg_graphql | 1.5.12 | FEAT | PG内的GraphQL支持 |
| pg_jsonschema | 0.3.4 | FEAT | 提供JSON Schema校验能力 |
| jsquery | 1.2 | FEAT | 用于内省 JSONB 数据类型的查询类型 |
| pg_hint_plan | 1.8.0 | FEAT | 添加强制指定执行计划的能力 |
| hypopg | 1.4.2 | FEAT | 假设索引,用于创建一个虚拟索引检验执行计划 |
| index_advisor | 0.2.0 | FEAT | 查询索引建议器 |
| plan_filter | 0.0.1 | FEAT | 使用执行计划代价过滤阻止特定查询语句 |
| imgsmlr | 1.0 | FEAT | 使用Haar小波分析计算图片相似度 |
| pg_ivm | 1.13 | FEAT | 增量维护的物化视图 |
| pg_incremental | 1.4.1 | FEAT | 增量处理流式事件 |
| pgmb | 1.0.0 | FEAT | 一个简单的PostgreSQL消息代理系统 |
| pgmq | 1.10.0 | FEAT | 基于Postgres实现类似AWS SQS/RSMQ的消息队列 |
| pgq | 3.5.1 | FEAT | 通用队列的PG实现 |
| orioledb | 1.5 | FEAT | OrioleDB,下一代事务处理引擎 |
| pg_cardano | 1.1.1 | FEAT | Cardano相关工具包:加密函数,地址编解码,区块链处理 |
| rdkit | 202503.1 | FEAT | 在PostgreSQL化学领域数据管理功能 |
| omni | 0.2.14 | FEAT | PostgreSQL即平台,Omnigres主扩展与加载器 |
| omni_auth | 0.1.3 | FEAT | Omnigres 基础会话认证管理模块 |
| omni_aws | 0.1.2 | FEAT | Omnigres AWS S3 API封装 |
| omni_cloudevents | 0.1.0 | FEAT | Omnigres CloudEvents 支持 |
| omni_containers | 0.2.0 | FEAT | Omnigres Docker容器管理模块 |
| omni_credentials | 0.2.0 | FEAT | Omnigres 应用密钥管理模块 |
| omni_csv | 0.1.1 | FEAT | Omnigres CSV 工具箱 |
| omni_datasets | 0.1.0 | FEAT | Omnigres 数据库置备工具 |
| omni_email | 0.1.0 | FEAT | Omnigres Email 框架 |
| omni_http | 0.1.0 | FEAT | Omnigres 基本HTTP类型 |
| omni_httpc | 0.1.10 | FEAT | Omnigres HTTP客户端 |
| omni_httpd | 0.4.11 | FEAT | Omnigres HTTP服务器 |
| omni_id | 0.4.3 | FEAT | Omnigres ID身份数据类型 |
| omni_json | 0.1.1 | FEAT | Omnigres JSON工具箱 |
| omni_kube | 0.4.2 | FEAT | Omnigres Kubernetes集成模块 |
| omni_ledger | 0.1.3 | FEAT | Omnigres 金融账本模块 |
| omni_manifest | 0.1.2 | FEAT | Omnigres 包管理清单模块 |
| omni_mimetypes | 0.1.0 | FEAT | Omnigres MIME数据类型 |
| omni_os | 0.1.1 | FEAT | Omnigres 操作系统集成模块 |
| omni_polyfill | 0.2.2 | FEAT | Omnigres Postgres多态API |
| omni_python | 0.1.1 | FEAT | Omnigres 第一类Python支持模块 |
| omni_regex | 0.1.0 | FEAT | Omnigres PCRE兼容正则表达式模块 |
| omni_rest | 0.1.1 | FEAT | Omnigres REST API 工具包 |
| omni_schema | 0.3.0 | FEAT | Omnigres 高级模式管理组件 |
| omni_seq | 0.1.1 | FEAT | Omnigres 分布式整型序列号 |
| omni_service | 0.1.0 | FEAT | Omnigres 服务管理器 |
| omni_session | 0.2.0 | FEAT | Omnigres 会话管理器 |
| omni_shmem | 0.1.0 | FEAT | Omnigres 共享内存管理 |
| omni_sql | 0.5.3 | FEAT | Omnigres SQL编程组件 |
| omni_sqlite | 0.2.2 | FEAT | Omnigres 嵌入的SQLite支持 |
| omni_test | 0.4.0 | FEAT | Omnigres 测试框架 |
| omni_txn | 0.5.0 | FEAT | Omnigres 事务管理器模块 |
| omni_types | 0.3.6 | FEAT | Omnigres 高级数据类型模块 |
| omni_var | 0.3.0 | FEAT | Omnigres 局部变量模块 |
| omni_vfs | 0.2.2 | FEAT | Omnigres 虚拟文件系统 |
| omni_vfs_types_v1 | 0.1.0 | FEAT | Omnigres 虚拟文件系统(v1) |
| omni_web | 0.3.0 | FEAT | Omnigres Web工具箱 |
| omni_worker | 0.2.1 | FEAT | Omnigres 通用Worker池 |
| omni_xml | 0.1.2 | FEAT | Omnigres XML工具包 |
| omni_yaml | 0.1.0 | FEAT | Omnigres YAML工具包 |
| bloom | 1.0 | FEAT | bloom 索引-基于指纹的索引 |
LANG
| 扩展版名称 | 版本号 | 分类 | 说明 |
|---|---|---|---|
| pg_tle | 1.5.2 | LANG | AWS 可信语言扩展 |
| plv8 | 3.2.4 | LANG | PL/JavaScript (v8) 可信过程程序语言 |
| pljs | 1.0.5 | LANG | PL/JS 可信过程程序语言 |
| pllua | 2.0.12 | LANG | Lua 程序语言 |
| hstore_pllua | 2.0.12 | LANG | Lua 程序语言的Hstore适配扩展 |
| plluau | 2.0.12 | LANG | Lua 程序语言(不受信任的) |
| hstore_plluau | 2.0.12 | LANG | Lua 程序语言的Hstore适配扩展(不受信任的) |
| plprql | 18.0.1 | LANG | 在PostgreSQL使用PRQL——管线式关系查询语言 |
| pldbgapi | 1.9 | LANG | 用于调试 PL/pgSQL 函数的服务器端支持 |
| plpgsql_check | 2.8.8 | LANG | 对 plpgsql 函数进行扩展检查 |
| plprofiler | 4.2.5 | LANG | 剖析 PL/pgSQL 函数 |
| plsh | 1.20220917 | LANG | PL/sh 程序语言 |
| pljava | 1.6.10 | LANG | Java 程序语言 |
| plr | 8.4.8 | LANG | 从数据库中加载R语言解释器并执行R脚本 |
| plxslt | 0.20140221 | LANG | XSLT 存储过程语言 |
| pgtap | 1.3.4 | LANG | PostgreSQL单元测试框架 |
| faker | 0.5.3 | LANG | 插入生成的测试伪造数据,Python库的包装 |
| dbt2 | 0.61.7 | LANG | OSDL-DBT-2 测试组件 |
| pltcl | 1.0 | LANG | PL/TCL 存储过程语言 |
| pltclu | 1.0 | LANG | PL/TCL 存储过程语言(未受信/高权限) |
| plperl | 1.0 | LANG | PL/Perl 存储过程语言 |
| bool_plperl | 1.0 | LANG | 在 bool 和 plperl 之间转换 |
| hstore_plperl | 1.0 | LANG | 在 hstore 和 plperl 之间转换适配类型 |
| jsonb_plperl | 1.0 | LANG | 在 jsonb 和 plperl 之间转换 |
| plperlu | 1.0 | LANG | PL/PerlU 存储过程语言(未受信/高权限) |
| bool_plperlu | 1.0 | LANG | 在 bool 和 plperlu 之间转换 |
| jsonb_plperlu | 1.0 | LANG | 在 jsonb 和 plperlu 之间转换 |
| hstore_plperlu | 1.0 | LANG | 在 hstore 和 plperlu 之间转换适配类型 |
| plpgsql | 1.0 | LANG | PL/pgSQL 程序设计语言 |
| plpython3u | 1.0 | LANG | PL/Python3 存储过程语言(未受信/高权限) |
| jsonb_plpython3u | 1.0 | LANG | 在 jsonb 和 plpython3u 之间转换 |
| ltree_plpython3u | 1.0 | LANG | 在 ltree 和 plpython3u 之间转换 |
| hstore_plpython3u | 1.0 | LANG | 在 hstore 和 plpython3u 之间转换 |
TYPE
| 扩展版名称 | 版本号 | 分类 | 说明 |
|---|---|---|---|
| prefix | 1.2.10 | TYPE | 前缀树数据类型 |
| semver | 0.41.0 | TYPE | 语义版本号数据类型 |
| unit | 7.10 | TYPE | SI 国标单位扩展 |
| pgpdf | 0.1.0 | TYPE | PDF数据类型,管理函数与全文检索 |
| pglite_fusion | 0.0.6 | TYPE | 在PG表中嵌入SQLite数据库作为数据类型 |
| md5hash | 1.0.1 | TYPE | 提供128位MD5的原生数据类型 |
| asn1oid | 1.6 | TYPE | ASN1OID数据类型支持 |
| roaringbitmap | 1.1.0 | TYPE | 支持RoaringBitmap数据类型 |
| pgfaceting | 0.2.0 | TYPE | 使用倒排索引的高速切面查询 |
| pg_sphere | 1.5.2 | TYPE | 球面对象函数、运算符与索引支持 |
| country | 0.0.3 | TYPE | 国家代码数据类型,遵循ISO 3166-1标准 |
| pg_xenophile | 0.8.3 | TYPE | PostgreSQL i8n与l10n工具包 |
| l10n_table_dependent_extension | 0.8.3 | TYPE | PostgreSQL l10n 工具包 |
| currency | 0.0.3 | TYPE | 使用1字节表示的货币数据类型 |
| collection | 1.1.1 | TYPE | 在PlPGSQL中使用的内存优化高性能集合数据结构 |
| pgmp | 1.0.5 | TYPE | 多精度算术扩展 |
| numeral | 1.3 | TYPE | 数值类型扩展 |
| pg_rational | 0.0.2 | TYPE | 使用BIGINT表示的有理数数据类型 |
| uint | 1.20250815 | TYPE | 无符号整型数据类型 |
| uint128 | 1.2.0 | TYPE | 原生128位无符号整型数据类型 |
| hashtypes | 0.1.5 | TYPE | 包括SHA1,MD5在内的多种哈希数据类型 |
| ip4r | 2.4.2 | TYPE | PostgreSQL 的 IPv4/v6 和 IPv4/v6 范围索引类型 |
| pg_duration | 1.0.2 | TYPE | 用于表示时间段的强化数据类型 |
| uri | 1.20251029 | TYPE | URI数据类型 |
| emailaddr | 0 | TYPE | Email地址数据类型 |
| acl | 1.0.4 | TYPE | ACL数据类型 |
| debversion | 1.2.0 | TYPE | Debian版本号数据类型 |
| pg_rrule | 0.3.0 | TYPE | 日历重复规则RRULE数据类型 |
| timestamp9 | 1.4.0 | TYPE | 纳秒分辨率时间戳 |
| chkpass | 1.0 | TYPE | 数据类型:自动加密的密码 |
| isn | 1.2 | TYPE | 用于国际产品编号标准的数据类型 |
| seg | 1.4 | TYPE | 表示线段或浮点间隔的数据类型 |
| cube | 1.5 | TYPE | 用于存储多维立方体的数据类型 |
| ltree | 1.3 | TYPE | 用于表示分层树状结构的数据类型 |
| hstore | 1.8 | TYPE | 用于存储(键,值)对集合的数据类型 |
| citext | 1.6 | TYPE | 提供大小写不敏感的字符串类型 |
| xml2 | 1.1 | TYPE | XPath 查询和 XSLT |
UTIL
| 扩展版名称 | 版本号 | 分类 | 说明 |
|---|---|---|---|
| gzip | 1.0.0 | UTIL | 使用SQL执行Gzip压缩与解压缩 |
| bzip | 1.0.0 | UTIL | BZIP压缩解压缩函数包 |
| zstd | 1.1.2 | UTIL | ZSTD压缩解压缩函数包 |
| http | 1.7.0 | UTIL | HTTP客户端,允许在数据库内收发HTTP请求 (supabase) |
| pg_net | 0.20.2 | UTIL | 用 SQL 进行异步非阻塞HTTP/HTTPS 请求的扩展 (supabase) |
| pg_curl | 2.4.5 | UTIL | 封装CURL,执行各种用URL传输数据的操作 |
| pg_retry | 1.0.0 | UTIL | 在临时错误中使用指数退避重试语句 |
| pgjq | 0.1.0 | UTIL | 在Postgres中使用jq查询JSON |
| pgjwt | 0.2.0 | UTIL | JSON Web Token API 的PG实现 (supabase) |
| pg_smtp_client | 0.2.1 | UTIL | 使用SMTP从PostgreSQL内发送邮件的客户端扩展 |
| pg_html5_email_address | 1.2.3 | UTIL | 验证Email是否符合HTML5规范的扩展 |
| url_encode | 1.2.5 | UTIL | 提供URL编码解码函数 |
| pgsql_tweaks | 1.0.2 | UTIL | 一些日常会用到的便利函数与视图 |
| pg_extra_time | 2.0.0 | UTIL | 一些关于日期与时间的扩展函数 |
| pgpcre | 0.20190509 | UTIL | PCRE/Perl风格的正则表达式支持 |
| icu_ext | 1.10.0 | UTIL | 访问ICU库提供的函数 |
| pgqr | 1.0 | UTIL | 从数据库中直接生成QR二维码 |
| pg_protobuf | 1.0 | UTIL | 提供Protobuf函数支持 |
| envvar | 1.0.1 | UTIL | 获取环境变量的函数 |
| floatfile | 1.3.1 | UTIL | 将浮点数组存储到文件中而不是堆表中 |
| pg_render | 0.1.3 | UTIL | 使用SQL渲染HTML页面 |
| pg_readme | 0.7.0 | UTIL | 为模式与扩展生成Markdown文档 |
| pg_readme_test_extension | 0.7.0 | UTIL | 为模式与扩展生成Markdown文档 |
| ddl_historization | 0.0.7 | UTIL | 用SQL将所有DDL变更写入到数据库表中 |
| data_historization | 1.1.0 | UTIL | 用SQL将数据变更历史保存到分区表中 |
| schedoc | 0.0.1 | UTIL | 在Django与DBT之间通过注释文档交换元数据 |
| hashlib | 1.1 | UTIL | 稳定哈希函数包 |
| xxhash | 0.0.1 | UTIL | xxhash哈希函数包 |
| shacrypt | 1.1 | UTIL | 实现SHA256-CRYPT与SHA512-CRYPT密钥加密算法 |
| cryptint | 1.0.0 | UTIL | 加密INT与BIGINT类型 |
| pguecc | 1.0 | UTIL | PostgreSQL的uECC绑定,椭圆曲线加解密函数包 |
| sparql | 1.0 | UTIL | 使用SQL查询SPARQL数据源 |
FUNC
| 扩展版名称 | 版本号 | 分类 | 说明 |
|---|---|---|---|
| pg_idkit | 0.4.0 | FUNC | 生成各式各样的唯一标识符:UUIDv6, ULID, KSUID |
| pgx_ulid | 0.2.2 | FUNC | ULID数据类型与函数 |
| pg_uuidv7 | 1.7.0 | FUNC | UUIDv7 支持 |
| permuteseq | 1.2.2 | FUNC | 伪随机数ID置换生成器 |
| pg_hashids | 1.3 | FUNC | 加盐将整型ID转为短字符串ID |
| sequential_uuids | 1.0.3 | FUNC | 生成连续生成的UUID |
| typeid | 0.3.0 | FUNC | PG原生TypeID类型与函数 |
| topn | 2.7.0 | FUNC | top-n JSONB 的类型 |
| quantile | 1.1.8 | FUNC | Quantile聚合函数 |
| lower_quantile | 1.0.3 | FUNC | Lower Quantile 聚合函数 |
| count_distinct | 3.0.2 | FUNC | COUNT(DISTINCT …) 聚合的替代方案 |
| omnisketch | 1.0.2 | FUNC | 实现OmniSketch数据结构,实现近似摘要聚合 |
| ddsketch | 1.0.1 | FUNC | 实现DDSketch数据结构,实现在线的Quantile聚合 |
| vasco | 0.1.0 | FUNC | 使用MIC发现数据中隐含的关联 |
| xicor | 0.1.0 | FUNC | 在PG中计算XI相关系数 |
| weighted_statistics | 1.0.0 | FUNC | 针对稀疏数据的高性能加权统计量计算 |
| tdigest | 1.4.3 | FUNC | tdigest 聚合函数 |
| first_last_agg | 0.1.4 | FUNC | first() 与 last() 聚合函数 |
| extra_window_functions | 1.0 | FUNC | 额外的窗口函数 |
| floatvec | 1.1.1 | FUNC | 数组类型数学运算扩展 |
| aggs_for_vecs | 1.4.0 | FUNC | 针对数组类型的聚合函数集合扩展 |
| aggs_for_arrays | 1.3.3 | FUNC | 计算数组聚合统计值的函数包 |
| pg_csv | 1.0.1 | FUNC | 灵活的CSV聚合处理函数 |
| arraymath | 1.1 | FUNC | 数组逐元素数学运算符包 |
| pg_math | 1.1.0 | FUNC | 使用GSL库的数学统计函数 |
| random | 2.0.0 | FUNC | 随机数生成器 |
| base36 | 1.0.0 | FUNC | Base36编码解码扩展 |
| base62 | 0.0.1 | FUNC | Base62编码解码扩展 |
| pg_base58 | 0.0.1 | FUNC | Base58 编码/解码函数 |
| financial | 1.0.1 | FUNC | 金融领域聚合函数 |
| convert | 0.1.0 | FUNC | 用于空间里程等的公英制转换函数 |
| refint | 1.0 | FUNC | 实现引用完整性的函数 |
| autoinc | 1.0 | FUNC | 用于自动递增字段的函数 |
| insert_username | 1.0 | FUNC | 用于跟踪谁更改了表的函数 |
| moddatetime | 1.0 | FUNC | 跟踪最后修改时间 |
| tsm_system_time | 1.0 | FUNC | 接受毫秒数限制的 TABLESAMPLE 方法 |
| dict_xsyn | 1.0 | FUNC | 用于扩展同义词处理的文本搜索字典模板 |
| tsm_system_rows | 1.0 | FUNC | 接受行数限制的 TABLESAMPLE 方法 |
| tcn | 1.0 | FUNC | 用触发器通知变更 |
| uuid-ossp | 1.1 | FUNC | 生成通用唯一标识符(UUIDs) |
| btree_gist | 1.7 | FUNC | 用GiST索引常见数据类型 |
| btree_gin | 1.3 | FUNC | 用GIN索引常见数据类型 |
| intarray | 1.5 | FUNC | 1维整数数组的额外函数、运算符和索引支持 |
| intagg | 1.1 | FUNC | 整数聚合器和枚举器(过时) |
| dict_int | 1.0 | FUNC | 用于整数的文本搜索字典模板 |
| unaccent | 1.1 | FUNC | 删除重音的文本搜索字典 |
ADMIN
| 扩展版名称 | 版本号 | 分类 | 说明 |
|---|---|---|---|
| pg_repack | 1.5.3 | ADMIN | 在线垃圾清理与表膨胀治理 |
| pg_rewrite | 2.0.0 | ADMIN | 在线重写整表,不阻塞读写 |
| pg_squeeze | 1.9.1 | ADMIN | 从关系中删除未使用空间 |
| pg_dirtyread | 2.7 | ADMIN | 从表中读取尚未垃圾回收的行 |
| pgfincore | 1.3.1 | ADMIN | 检查和管理操作系统缓冲区缓存 |
| pg_cooldown | 0.1 | ADMIN | 从缓冲区中移除特定关系的页面 |
| ddlx | 0.30 | ADMIN | 提取数据库对象的DDL |
| pglinter | 1.1.0 | ADMIN | PG数据库规则检查插件 |
| prioritize | 1.0.4 | ADMIN | 获取和设置 PostgreSQL 后端的优先级 |
| pg_checksums | 1.3 | ADMIN | 在离线模式下激活/启用/禁用数据库集群的校验和功能 |
| pg_readonly | 1.0.4 | ADMIN | 将集群设置为只读 |
| pgdd | 0.6.1 | ADMIN | 提供通过标准SQL查询数据库目录集簇的能力 |
| pg_permissions | 1.4 | ADMIN | 查看对象权限并将其与期望状态进行比较 |
| pgautofailover | 2.2 | ADMIN | PG 自动故障迁移 |
| pg_catcheck | 1.6.0 | ADMIN | 用于诊断系统目录是否损坏的工具 |
| pre_prepare | 0.9 | ADMIN | 在服务端预先准备好PreparedStatement备用 |
| pg_upless | 0.0.3 | ADMIN | 检测表上的无用UPDATE |
| pgcozy | 1.0 | ADMIN | 根据先前的pg_buffercache快照预热内存缓冲区 |
| pg_orphaned | 1.0 | ADMIN | 处理孤儿文件的扩展插件 |
| pg_crash | 1.0 | ADMIN | 向数据库进程随机发送信号模拟故障 |
| pg_cheat_funcs | 1.0 | ADMIN | 一些超级实用的作弊函数 |
| fio | 1.0 | ADMIN | PostgreSQL文件IO函数包 |
| pg_savior | 0.0.1 | ADMIN | 阻止不带条件的全表更新以避免意外事故 |
| safeupdate | 1.5 | ADMIN | 强制在 UPDATE 和 DELETE 时提供 Where 条件 |
| pg_strict | 1.0.2 | ADMIN | 防止不带WHERE条件的危险UPDATE和DELETE操作 |
| pg_drop_events | 0.1.0 | ADMIN | 记录删表删列删视图的事务号,辅助PITR确定时间点 |
| table_log | 0.6.4 | ADMIN | 记录某张表的修改日志并做表/行级时间点恢复 |
| pgagent | 4.2.3 | ADMIN | PostgreSQL任务调度工具,与PGADMIN配合使用 |
| pg_prewarm | 1.2 | ADMIN | 预热关系数据 |
| pgpool_adm | 4.7.0 | ADMIN | PGPool 管理函数 |
| pgpool_recovery | 4.7.0 | ADMIN | PGPool辅助扩展,从v4.3提供的恢复函数 |
| pgpool_regclass | 4.7.0 | ADMIN | PGPool辅助扩展,RegClass替代 |
| lo | 1.1 | ADMIN | 大对象维护 |
| basic_archive | - | ADMIN | 归档模块样例 |
| basebackup_to_shell | - | ADMIN | 添加一种备份到Shell终端到基础备份方式 |
| old_snapshot | 1.0 | ADMIN | 支持 old_snapshot_threshold 的实用程序 |
| adminpack | 2.1 | ADMIN | PostgreSQL 管理函数集合 |
| amcheck | 1.4 | ADMIN | 校验关系完整性 |
| pg_surgery | 1.0 | ADMIN | 对损坏的关系进行手术 |
STAT
| 扩展版名称 | 版本号 | 分类 | 说明 |
|---|---|---|---|
| pg_profile | 4.11 | STAT | PostgreSQL 数据库负载记录与AWR报表工具 |
| pg_tracing | 0.1.3 | STAT | PostgreSQL分布式Tracing |
| pg_show_plans | 2.1.7 | STAT | 打印所有当前正在运行查询的执行计划 |
| pg_stat_kcache | 2.3.1 | STAT | 内核统计信息收集 |
| pg_stat_monitor | 2.3.1 | STAT | 提供查询聚合统计、客户端信息、执行计划详细信息和直方图 |
| pg_qualstats | 2.1.3 | STAT | 收集有关 quals 的统计信息的扩展 |
| pg_store_plans | 1.9 | STAT | 跟踪所有执行的 SQL 语句的计划统计信息 |
| pg_track_settings | 2.1.2 | STAT | 跟踪设置更改 |
| pg_track_optimizer | 0.9.1 | STAT | 跟踪规划器决策与实际执行的差距 |
| pg_wait_sampling | 1.1.9 | STAT | 基于采样的等待事件统计 |
| pgsentinel | 1.4.0 | STAT | 活跃会话历史 |
| system_stats | 3.2 | STAT | PostgreSQL 的系统统计函数 |
| meta | 0.4.0 | STAT | 标准化,更友好的PostgreSQL系统目录视图 |
| pgnodemx | 1.7 | STAT | 使用SQL查询获取操作系统指标 |
| pg_proctab | 1.7 | STAT | 通过SQL接口访问操作系统进程表 |
| pg_sqlog | 1.6 | STAT | 提供访问PostgreSQL日志的SQL接口 |
| bgw_replstatus | 1.0.8 | STAT | 用于汇报本机主从状态的后台工作进程 |
| pgmeminfo | 1.0.0 | STAT | 显示内存使用情况 |
| toastinfo | 1.5 | STAT | 显示TOAST字段的详细信息 |
| explain_ui | 0.0.2 | STAT | 快速跳转至PEV查阅可视化执行计划 |
| pg_relusage | 0.0.1 | STAT | 打印查询引用的表与列 |
| pagevis | 0.1 | STAT | 使用ASCII字符可视化数据库物理页面布局 |
| powa | 5.1.1 | STAT | PostgreSQL 工作负载分析器-核心 |
| pg_overexplain | 1.0 | STAT | 允许 EXPLAIN 转储更多详细 |
| pg_logicalinspect | 1.0 | STAT | 检视逻辑解码组件详情 |
| pageinspect | 1.12 | STAT | 检查数据库页面二进制内容 |
| pgrowlocks | 1.2 | STAT | 显示行级锁信息 |
| sslinfo | 1.2 | STAT | 关于 SSL 证书的信息 |
| pg_buffercache | 1.5 | STAT | 检查共享缓冲区缓存 |
| pg_walinspect | 1.1 | STAT | 用于检查 PostgreSQL WAL 日志内容的函数 |
| pg_freespacemap | 1.2 | STAT | 检查自由空间映射的内容(FSM) |
| pg_visibility | 1.2 | STAT | 检查可见性图(VM)和页面级可见性信息 |
| pgstattuple | 1.5 | STAT | 显示元组级统计信息 |
| auto_explain | - | STAT | 提供一种自动记录执行计划的手段 |
| pg_stat_statements | 1.11 | STAT | 跟踪所有执行的 SQL 语句的计划和执行统计信息 |
SEC
| 扩展版名称 | 版本号 | 分类 | 说明 |
|---|---|---|---|
| passwordcheck_cracklib | 3.1.0 | SEC | 使用cracklib加固PG用户密码 |
| supautils | 3.1.0 | SEC | 用于在云环境中确保数据库集群的安全 |
| pgsodium | 3.1.9 | SEC | 表数据加密存储 TDE |
| supabase_vault | 0.3.1 | SEC | 在 Vault 中存储加密凭证的扩展 (supabase) |
| pg_session_jwt | 0.4.0 | SEC | 使用JWT进行会话认证 |
| anon | 3.0.1 | SEC | 数据匿名化处理工具 |
| pgsmcrypto | 0.1.1 | SEC | 为PostgreSQL提供商密算法支持:SM2,SM3,SM4 |
| pg_enigma | 0.5.0 | SEC | PostgreSQL 加密数据类型 |
| pgaudit | 18.0 | SEC | 提供审计功能 |
| pgauditlogtofile | 1.7.6 | SEC | pgAudit 子扩展,将审计日志写入单独的文件中 |
| pg_auditor | 0.2 | SEC | 审计数据变更并提供闪回能力 |
| logerrors | 2.1.5 | SEC | 用于收集日志文件中消息统计信息的函数 |
| pg_auth_mon | 3.0 | SEC | 监控每个用户的连接尝试 |
| pg_jobmon | 1.4.1 | SEC | 记录和监控函数 |
| credcheck | 4.5 | SEC | 明文凭证检查器 |
| pgcryptokey | 0.85 | SEC | PG密钥管理 |
| pg_pwhash | 1.0 | SEC | PostgreSQL 高级密码哈希扩展(Argon2/scrypt/yescrypt) |
| login_hook | 1.7 | SEC | 在用户登陆时执行login_hook.login()函数 |
| set_user | 4.2.0 | SEC | 增加了日志记录的 SET ROLE |
| pg_snakeoil | 1.4 | SEC | PostgreSQL动态链接库反病毒功能 |
| pgextwlist | 1.19 | SEC | PostgreSQL扩展白名单功能 |
| sslutils | 1.4 | SEC | 使用SQL管理SSL证书 |
| noset | 0.3.0 | SEC | 阻止非超级用户使用SET/RESET设置变量 |
| pg_tde | 1.0 | SEC | Percona加密存储引擎 |
| sepgsql | - | SEC | 基于SELinux标签的强制访问控制 |
| auth_delay | - | SEC | 在返回认证失败前暂停一会,避免爆破 |
| pgcrypto | 1.3 | SEC | 实用加解密函数 |
| passwordcheck | - | SEC | 用于强制拒绝修改弱密码的扩展 |
FDW
| 扩展版名称 | 版本号 | 分类 | 说明 |
|---|---|---|---|
| wrappers | 0.5.7 | FDW | Supabase提供的外部数据源包装器捆绑包 |
| multicorn | 3.2 | FDW | 用Python编写自定义的外部数据源包装器 |
| odbc_fdw | 0.5.1 | FDW | 访问ODBC可访问的任何外部数据源 |
| jdbc_fdw | 0.4.0 | FDW | 访问JDBC可访问的任何外部数据源 |
| pgspider_ext | 1.3.0 | FDW | 使用多种FDW访问远程数据库服务器 |
| mysql_fdw | 2.9.3 | FDW | MySQL外部数据包装器 |
| oracle_fdw | 2.8.0 | FDW | 提供对Oracle的外部数据源包装器 |
| tds_fdw | 2.0.5 | FDW | TDS 数据库(Sybase/SQL Server)外部数据包装器 |
| db2_fdw | 18.1.1 | FDW | 提供对DB2的外部数据源包装器 |
| sqlite_fdw | 2.5.0 | FDW | SQLite 外部数据包装器 |
| pgbouncer_fdw | 1.4.0 | FDW | 用SQL查询pgbouncer统计信息,并执行pgbouncer命令 |
| etcd_fdw | 0.0.0 | FDW | etcd分布式键值存储外部数据包装器 |
| informix_fdw | 0.6.3 | FDW | Informix 外部数据包装器 |
| nominatim_fdw | 1.1.0 | FDW | Nominatim 地理编码接口的 FDW 扩展 |
| mongo_fdw | 5.5.3 | FDW | MongoDB 外部数据包装器 |
| redis_fdw | 1.0 | FDW | 查询外部Redis数据源 |
| redis | 0.0.1 | FDW | 从PG向Redis发送Pub/Sub消息 |
| kafka_fdw | 0.0.3 | FDW | Kafka外部数据源包装器 |
| hdfs_fdw | 2.3.3 | FDW | hdfs 外部数据包装器 |
| firebird_fdw | 1.4.1 | FDW | Firebird外部数据源包装器 |
| aws_s3 | 0.0.1 | FDW | 从S3导入导出数据的外部数据源包装器 |
| log_fdw | 1.4 | FDW | 访问PostgreSQL日志文件的FDW |
| dblink | 1.2 | FDW | 从数据库内连接到其他 PostgreSQL 数据库 |
| file_fdw | 1.0 | FDW | 访问外部文件的外部数据包装器 |
| postgres_fdw | 1.1 | FDW | 用于远程 PostgreSQL 服务器的外部数据包装器 |
SIM
| 扩展版名称 | 版本号 | 分类 | 说明 |
|---|---|---|---|
| documentdb | 0.109 | SIM | 微软DocumentDB的API层 |
| documentdb_core | 0.109 | SIM | 微软DocumentDB的核心API层实现 |
| documentdb_distributed | 0.109 | SIM | DocumentDB多节点模式的API层 |
| documentdb_extended_rum | 0.109 | SIM | DocumentDB扩展RUM索引访问方法 |
| orafce | 4.16.3 | SIM | 模拟 Oracle RDBMS 的一部分函数和包的函数和运算符 |
| pgtt | 4.4 | SIM | 类似Oracle的全局临时表功能 |
| session_variable | 3.4 | SIM | Oracle兼容的会话变量/常量操作函数 |
| pg_statement_rollback | 1.5 | SIM | 在服务端提供类似Oracle/DB2的语句级回滚能力 |
| pg_dbms_metadata | 1.0.0 | SIM | 添加 Oracle DBMS_METADATA 兼容性支持的扩展 |
| pg_dbms_lock | 1.0 | SIM | 为PG添加对 Oracle DBMS_LOCK 的完整兼容性支持 |
| pg_dbms_job | 1.5 | SIM | 添加 Oracle DBMS_JOB 兼容性支持的扩展 |
| pg_dbms_errlog | 2.2 | SIM | 模仿 Oracle DBMS_ERRLOG 模块来记录特定表的DML错误 |
| pg_utl_smtp | 1.0.0 | SIM | Oracle UTL_SMTP 兼容扩展(基于 plperlu) |
| babelfishpg_common | 3.3.3 | SIM | SQL Server 数据类型兼容扩展 |
| babelfishpg_tsql | 3.3.1 | SIM | SQL Server SQL语法兼容性扩展 |
| babelfishpg_tds | 1.0.0 | SIM | SQL Server TDS线缆协议兼容扩展 |
| babelfishpg_money | 1.1.0 | SIM | SQL Server 货币数据类型兼容扩展 |
| spat | 0.1.0a4 | SIM | 在PG中嵌入Redis风格的内存数据库 |
| pgmemcache | 2.3.0 | SIM | 为PG提供memcached兼容接口 |
ETL
| 扩展版名称 | 版本号 | 分类 | 说明 |
|---|---|---|---|
| pglogical | 2.4.6 | ETL | PostgreSQL逻辑复制:三方扩展实现 |
| pglogical_origin | 2.4.6 | ETL | 用于从 Postgres 9.4 升级时的兼容性虚拟扩展 |
| pglogical_ticker | 1.4.1 | ETL | pglogical复制延迟以秒计的精确视图 |
| pgl_ddl_deploy | 2.2.1 | ETL | 使用 pglogical 执行自动 DDL 部署 |
| pg_failover_slots | 1.2.0 | ETL | 在Failover过程中保留复制槽 |
| db_migrator | 1.0.0 | ETL | 使用FDW从其他DBMS迁移到PostgreSQL |
| pgactive | 2.1.7 | ETL | PostgreSQL多主逻辑复制 |
| wal2json | 2.6 | ETL | 用逻辑解码捕获 JSON 格式的 CDC 变更 |
| wal2mongo | 1.0.7 | ETL | 使用逻辑解码捕获MongoDB JSON格式的CDC变更 |
| decoderbufs | 3.4.0 | ETL | 将WAL逻辑解码为ProtocolBuffer协议的消息 |
| decoder_raw | 1.0 | ETL | 逻辑复制解码输出插件:RAW SQL格式 |
| mimeo | 1.5.1 | ETL | 在PostgreSQL实例间进行表级复制 |
| repmgr | 5.5.0 | ETL | PostgreSQL复制管理组件 |
| pg_fact_loader | 2.0.1 | ETL | 在 Postgres 中构建事实表 |
| pg_bulkload | 3.1.23 | ETL | 向 PostgreSQL 中高速加载数据 |
| test_decoding | - | ETL | 基于SQL的WAL逻辑解码样例 |
| pgoutput | - | ETL | PG内置的逻辑解码输出插件 |
4 - 文件结构
Pigsty FHS
Pigsty 的主目录默认放置于 ~/pigsty,该目录下的文件结构如下所示:
#------------------------------------------------------------------------------
# pigsty
# ^-----@app # 额外的示例应用资源
# ^-----@bin # bin 脚本
# ^-----@docs # 文档(可docsify化)
# ^-----@files # ansible 文件资源
# ^-----@victoria # Victoria 规则与运维脚本(bin/rules)
# ^-----@grafana # grafana 仪表盘
# ^-----@postgres # /pg/bin/ 脚本
# ^-----@migration # pgsql 迁移任务定义
# ^-----@pki # 自签名 CA 和证书
# ^-----@roles # ansible 剧本实现
# ^-----@templates # ansible 模板文件
# ^-----@vagrant # Vagrant 沙箱虚拟机定义模板
# ^-----@terraform # Terraform 云虚拟机申请模板
# ^-----configure # 配置向导脚本
# ^-----ansible.cfg # ansible 默认配置文件
# ^-----pigsty.yml # pigsty 默认配置文件
# ^-----*.yml # ansible 剧本
#------------------------------------------------------------------------------
# /infra -> /data/infra # infra 运行时目录软链接
# /data/infra # root:infra 0771
# ^-----@metrics # VictoriaMetrics TSDB 数据
# ^-----@logs # VictoriaLogs 数据
# ^-----@traces # VictoriaTraces 数据
# ^-----@alertmgr # AlertManager 数据
# ^-----@rules # 规则定义(含 agent.yml)
# ^-----@targets # FileSD 监控目标
# ^-----@dashboards # Grafana 仪表盘定义
# ^-----@datasources # Grafana 数据源定义
# ^-----prometheus.yml # Victoria 的 Prometheus 兼容配置
#------------------------------------------------------------------------------
CA FHS
Pigsty 的 自签名 CA 位于 Pigsty 主目录下的 files/pki/。
你必须妥善保管 CA 的密钥文件:files/pki/ca/ca.key,该密钥是在 deploy.yml 或 infra.yml 的 ca 角色负责生成的。
# pigsty/files/pki # (local_user) 0755
# ^-----@ca # (local_user) 0700
# ^-----@ca.key # 0600,非常重要:保守其秘密
# ^-----@ca.crt # 0644,非常重要:在所有地方都受信任
# ^-----@csr # (local_user) 0755,签名请求 csr
# ^-----@misc # (local_user) 0755,杂项证书,已签发证书
# ^-----@etcd # (local_user) 0755,etcd 服务器证书
# ^-----@minio # (local_user) 0755,minio 服务器证书
# ^-----@nginx # (local_user) 0755,nginx SSL 证书
# ^-----@infra # (local_user) 0755,infra 客户端证书
# ^-----@pgsql # (local_user) 0755,pgsql 服务器证书
# ^-----@mongo # (local_user) 0755,mongodb/ferretdb 服务器证书
# ^-----@mysql # (local_user) 0755,mysql 服务器证书(占位符)
被 Pigsty 所管理的节点将安装以下证书文件:
/etc/pki/ca.crt # root:root 0644,所有节点都添加的根证书
/etc/pki/ca-trust/source/anchors/ca.crt # 软链接到系统受信任的锚点
所有 infra 节点都会有以下证书:
/etc/pki/infra.crt # root:infra 0644,infra 节点证书
/etc/pki/infra.key # root:infra 0640,infra 节点密钥
当您的管理节点出现故障时,files/pki 目录与 pigsty.yml 文件应当在备份的管理节点上可用。你可以用 rsync 做到这一点。
# run on meta-1, rsync to meta2
cd ~/pigsty;
rsync -avz ./ meta-2:~/pigsty
INFRA FHS
infra 角色会创建 infra_data(默认 /data/infra)并建立 /infra -> /data/infra 软链接。/data/infra 的权限为 root:infra 0771,子目录默认权限为 *:infra 0750,覆盖项如下:
# /infra -> /data/infra
# /data/infra # root:infra 0771
# ^-----@pgadmin # 5050:5050 0700
# ^-----@alertmgr # prometheus:infra 0700
# ^-----@conf # root:infra 0750
# ^-----patronictl.yml # root:admin 0640
# ^-----@tmp # root:infra 0750
# ^-----@hosts # dnsmasq:dnsmasq 0755(DNS 记录)
# ^-----default # root:root 0644
# ^-----@datasources # root:infra 0750
# ^-----*.json # 0600(register 生成)
# ^-----@dashboards # grafana:infra 0750
# ^-----@metrics # victoria:infra 0750
# ^-----@logs # victoria:infra 0750
# ^-----@traces # victoria:infra 0750
# ^-----@bin # victoria:infra 0750
# ^-----check|new|reload|status # root:infra 0755
# ^-----@rules # victoria:infra 0750
# ^-----agent.yml # victoria:infra 0644
# ^-----infra.yml # victoria:infra 0644
# ^-----node.yml # victoria:infra 0644
# ^-----pgsql.yml # victoria:infra 0644
# ^-----redis.yml # victoria:infra 0644
# ^-----etcd.yml # victoria:infra 0644
# ^-----minio.yml # victoria:infra 0644
# ^-----kafka.yml # victoria:infra 0644
# ^-----mysql.yml # victoria:infra 0644
# ^-----@targets # victoria:infra 0750
# ^-----@infra # infra 组件目标(文件 0640)
# ^-----@node # 节点目标(文件 0640)
# ^-----@ping # ping 目标(文件 0640)
# ^-----@etcd # etcd 目标(文件 0640)
# ^-----@pgsql # pgsql 目标(文件 0640)
# ^-----@pgrds # pgrds 目标(文件 0640)
# ^-----@redis # redis 目标(文件 0640)
# ^-----@minio # minio 目标(文件 0640)
# ^-----@mongo # mongo 目标(文件 0640)
# ^-----@juice # juicefs 目标(文件 0640)
# ^-----@mysql # mysql 目标(文件 0640)
# ^-----@kafka # kafka 目标(文件 0640)
# ^-----@docker # docker 目标(文件 0640)
# ^-----@patroni # patroni SSL 目标(文件 0640)
# ^-----prometheus.yml # victoria:infra 0644
上述结构由以下实现生成:roles/infra/tasks/dir.yml、roles/infra/tasks/victoria.yml、roles/infra/tasks/register.yml、roles/infra/tasks/dns.yml、roles/infra/tasks/env.yml。
NODE FHS
节点的数据目录由参数 node_data 指定,默认为 /data,由 root:root 持有,权限为 0755。
每个组件的默认数据目录都位于这个数据库目录下,如下所示:
/data # root:root 0755
# ^-----@postgres # postgres:postgres 0700(默认 pg_fs_main)
# ^-----@backups # postgres:postgres 0700(默认 pg_fs_backup)
# ^-----@redis # redis:redis 0700(多实例共用)
# ^-----@minio # minio:minio 0750(单机单盘模式)
# ^-----@etcd # etcd:etcd 0700(etcd_data)
# ^-----@infra # root:infra 0771(infra 模块数据目录)
# ^-----@docker # root:root 0755(Docker 数据目录)
# ^-----@... # 其他组件的数据目录
Victoria FHS
监控配置已经从旧的 /etc/prometheus 目录布局迁移为 /infra 运行时布局。主配置模板位于 roles/infra/templates/victoria/prometheus.yml,渲染结果为 /infra/prometheus.yml。
files/victoria/bin/* 与 files/victoria/rules/* 会被同步到 /infra/bin/ 与 /infra/rules/,各模块再向 /infra/targets/* 注册 FileSD 目标。
# /infra
# ^-----prometheus.yml # Victoria 主配置(Prometheus 兼容格式)0644
# ^-----@bin # 工具脚本(check/new/reload/status)0755
# ^-----@rules # 记录与告警规则(*.yml 0644)
# ^-----agent.yml # Agent 预聚合规则
# ^-----infra.yml # infra 规则和告警
# ^-----etcd.yml # etcd 规则和告警
# ^-----node.yml # node 规则和告警
# ^-----pgsql.yml # pgsql 规则和告警
# ^-----redis.yml # redis 规则和告警
# ^-----minio.yml # minio 规则和告警
# ^-----kafka.yml # kafka 规则和告警
# ^-----mysql.yml # mysql 规则和告警
# ^-----@targets # FileSD 服务发现目标(*.yml 0640)
# ^-----@infra # infra 静态目标
# ^-----@node # node 静态目标
# ^-----@pgsql # pgsql 静态目标
# ^-----@pgrds # pgsql 远程 RDS 目标
# ^-----@redis # redis 静态目标
# ^-----@minio # minio 静态目标
# ^-----@mongo # mongo 静态目标
# ^-----@mysql # mysql 静态目标
# ^-----@etcd # etcd 静态目标
# ^-----@ping # ping 静态目标
# ^-----@kafka # kafka 静态目标
# ^-----@juice # juicefs 静态目标
# ^-----@docker # docker 静态目标
# ^-----@patroni # patroni 静态目标(启用 SSL 时)
# /etc/default/vmetrics # vmetrics 启动参数(victoria:infra 0644)
# /etc/default/vlogs # vlogs 启动参数(victoria:infra 0644)
# /etc/default/vtraces # vtraces 启动参数(victoria:infra 0644)
# /etc/default/vmalert # vmalert 启动参数(victoria:infra 0644)
# /etc/alertmanager.yml # 告警组件主配置(prometheus:infra 0644)
# /etc/default/alertmanager # 告警组件环境变量(prometheus:infra 0640)
# /etc/blackbox.yml # 黑盒探测主配置(prometheus:infra 0644)
# /etc/default/blackbox_exporter # 黑盒探测环境变量(prometheus:infra 0644)
Postgres FHS
以下参数与PostgreSQL数据库目录结构相关:
pg_dbsu_home: Postgres 默认用户的家目录,默认为/var/lib/pgsqlpg_bin_dir: Postgres二进制目录,默认为/usr/pgsql/bin/pg_data:Postgres数据库目录,默认为/pg/datapg_fs_main:Postgres主数据目录,默认为/data/postgrespg_fs_backup:Postgres 备份盘挂载点,默认为/data/backups(可选,也可以选择备份到主数据盘上的子目录)pg_cluster_dir:派生变量,{{ pg_fs_main }}/{{ pg_cluster }}-{{ pg_version }}pg_backup_dir:派生变量,{{ pg_fs_backup }}/{{ pg_cluster }}-{{ pg_version }}
#--------------------------------------------------------------#
# 工作假设:
# {{ pg_fs_main }} 主数据目录,默认位置:`/data/postgres` [SSD]
# {{ pg_fs_backup }} 备份数据盘,默认位置:`/data/backups` [HDD]
#--------------------------------------------------------------#
# 默认配置(pg_cluster=pg-test, pg_version=18):
# pg_fs_main = /data/postgres 高速SSD
# pg_fs_backup = /data/backups 廉价HDD (可选)
#
# /pg -> /data/postgres/pg-test-18
# /pg/data -> /data/postgres/pg-test-18/data
# /pg/backup -> /data/backups/pg-test-18/backup
#--------------------------------------------------------------#
- name: create pgsql directories
tags: pg_dir
become: true
block:
- name: create pgsql directories
file: path={{ item.path }} state=directory owner={{ item.owner|default(pg_dbsu) }} group={{ item.group|default('postgres') }} mode={{ item.mode }}
with_items:
- { path: "{{ pg_fs_main }}" ,mode: "0700" }
- { path: "{{ pg_fs_backup }}" ,mode: "0700" }
- { path: "{{ pg_cluster_dir }}" ,mode: "0700" }
- { path: "{{ pg_cluster_dir }}/bin" ,mode: "0700" }
- { path: "{{ pg_cluster_dir }}/log" ,mode: "0750" }
- { path: "{{ pg_cluster_dir }}/tmp" ,mode: "0700" }
- { path: "{{ pg_cluster_dir }}/cert" ,mode: "0700" }
- { path: "{{ pg_cluster_dir }}/conf" ,mode: "0700" }
- { path: "{{ pg_cluster_dir }}/data" ,mode: "0700" }
- { path: "{{ pg_cluster_dir }}/spool" ,mode: "0700" }
- { path: "{{ pg_backup_dir }}/backup" ,mode: "0700" }
- { path: "/var/run/postgresql" ,owner: root, group: root, mode: "0755" }
- name: link pgsql directories
file: src={{ item.src }} dest={{ item.dest }} state=link
with_items:
- { src: "{{ pg_backup_dir }}/backup" ,dest: "{{ pg_cluster_dir }}/backup" }
- { src: "{{ pg_cluster_dir }}" ,dest: "/pg" }
数据文件结构
# 真实目录
{{ pg_fs_main }} /data/postgres # postgres:postgres 0700,主数据目录
{{ pg_cluster_dir }} /data/postgres/pg-test-18 # postgres:postgres 0700,集群目录
/data/postgres/pg-test-18/bin # postgres:postgres 0700(脚本文件 root:postgres 0755)
/data/postgres/pg-test-18/log # postgres:postgres 0750,日志目录
/data/postgres/pg-test-18/tmp # postgres:postgres 0700,临时文件
/data/postgres/pg-test-18/cert # postgres:postgres 0700,证书
/data/postgres/pg-test-18/conf # postgres:postgres 0700,配置索引
/data/postgres/pg-test-18/data # postgres:postgres 0700,主数据目录
/data/postgres/pg-test-18/spool # postgres:postgres 0700,pgBackRest spool
/data/postgres/pg-test-18/backup # -> /data/backups/pg-test-18/backup
{{ pg_fs_backup }} /data/backups # postgres:postgres 0700,可选备份盘目录/挂载点
{{ pg_backup_dir }} /data/backups/pg-test-18 # postgres:postgres 0700,集群备份目录
/data/backups/pg-test-18/backup # postgres:postgres 0700,实际备份位置
# 软链接
/pg -> /data/postgres/pg-test-18 # pg 根软链接
/pg/data -> /data/postgres/pg-test-18/data # pg 数据目录
/pg/backup -> /data/backups/pg-test-18/backup # pg 备份目录
二进制文件结构
在 EL 兼容发行版上(使用yum),PostgreSQL 默认安装位置为
/usr/pgsql-${pg_version}/
Pigsty 会创建一个名为 /usr/pgsql 的软连接,指向由 pg_version 参数指定的实际版本,例如
/usr/pgsql -> /usr/pgsql-18
因此,默认的 pg_bin_dir 是 /usr/pgsql/bin/,而该路径会被添加至系统的 PATH 环境变量中,定义文件为:/etc/profile.d/pgsql.sh.
export PATH="/usr/pgsql/bin:/pg/bin:$PATH"
export PGHOME=/usr/pgsql
export PGDATA=/pg/data
在 Ubuntu/Debian 上,PostgreSQL Deb 包的默认安装位置是:
/usr/lib/postgresql/${pg_version}/bin
Pgbouncer FHS
Pgbouncer 使用与 {{ pg_dbsu }}(默认为 postgres)相同的用户运行,配置文件位于/etc/pgbouncer。
pgbouncer.ini:连接池主配置文件(postgres:postgres 0640)database.txt:定义连接池中的数据库(postgres:postgres 0600)useropts.txt:业务用户连接参数(postgres:postgres 0600)userlist.txt:由/pg/bin/pgb-user维护的用户密码文件pgb_hba.conf:连接池访问控制文件(postgres:postgres 0600)
/etc/pgbouncer/ # postgres:postgres 0750
/etc/pgbouncer/pgbouncer.ini # postgres:postgres 0640
/etc/pgbouncer/database.txt # postgres:postgres 0600
/etc/pgbouncer/useropts.txt # postgres:postgres 0600
/etc/pgbouncer/userlist.txt # postgres:postgres (由 pgb-user 维护)
/etc/pgbouncer/pgb_hba.conf # postgres:postgres 0600
/pg/log/pgbouncer # postgres:postgres 0750
/var/run/postgresql # {{ pg_dbsu }}:postgres 0755(tmpfiles 维护)
Redis FHS
Pigsty 提供了对 Redis 部署与监控的基础支持。
Redis 二进制通常由系统包管理器安装(服务调用路径为 /bin/*,在多数发行版上由 /usr/bin/* 软链接兼容):
redis-server
redis-cli
redis-sentinel
redis-check-rdb
redis-check-aof
redis-benchmark
/usr/libexec/redis-shutdown
对于一个名为 redis-test-1-6379 的 Redis 实例,与其相关的资源如下所示:
/usr/lib/systemd/system/redis-test-1-6379.service # root:root 0644(Debian系为 /lib/systemd/system)
/etc/redis/ # redis:redis 0700
/etc/redis/redis-test-1-6379.conf # redis:redis 0700
/data/redis/ # redis:redis 0700
/data/redis/redis-test-1-6379 # redis:redis 0700
/data/redis/redis-test-1-6379/redis-test-1-6379.rdb # RDB 文件
/data/redis/redis-test-1-6379/redis-test-1-6379.aof # AOF 文件
/var/log/redis/ # redis:redis 0700
/var/log/redis/redis-test-1-6379.log # 日志
/var/run/redis/ # redis:redis 0700(开机 tmpfiles 为 0755)
/var/run/redis/redis-test-1-6379.pid # PID
对于 Ubuntu / Debian 而言,systemd 服务的默认目录不是 /usr/lib/systemd/system/ 而是 /lib/systemd/system/
5 - 参数列表
本文是 Pigsty v4.x 的参数导航页,不重复展开每个参数的详细解释。
参数细节请进入各模块的 param 页面查看。
按照当前文档口径,正式模块合计约 360 个参数,分布在 10 个模块中。
模块参数导航
| 模块 | 参数组 | 参数量 | 说明 |
|---|---|---|---|
PGSQL | 9 | 125 | PostgreSQL 高可用集群配置 |
INFRA | 10 | 72 | 软件仓库与 Victoria 可观测基础设施 |
NODE | 11 | 73 | 节点初始化、系统调优与运维基线 |
ETCD | 2 | 13 | ETCD 集群与移除保护参数 |
MINIO | 2 | 21 | MinIO 部署与移除参数 |
REDIS | 2 | 21 | Redis 部署与移除参数 |
FERRET | 1 | 9 | FerretDB(Mongo API)参数 |
DOCKER | 1 | 8 | Docker 引擎参数 |
JUICE | 1 | 2 | JuiceFS 实例与缓存参数 |
VIBE | 1 | 16 | Code/Jupyter/Node.js/Claude 配置 |
参数组速览
使用建议
6 - 剧本列表
本文汇总 Pigsty v4.x 各模块剧本入口与执行要点,详细任务标签请进入对应模块 playbook 文档。
模块剧本导航
| 模块 | 数量 | 剧本 |
|---|---|---|
INFRA | 3 | deploy.yml infra.yml infra-rm.yml |
NODE | 2 | node.yml node-rm.yml |
ETCD | 2 | etcd.yml etcd-rm.yml |
PGSQL | 7 | pgsql.yml pgsql-rm.ymlpgsql-user.yml pgsql-db.ymlpgsql-monitor.yml pgsql-migration.yml pgsql-pitr.yml |
REDIS | 2 | redis.yml redis-rm.yml |
MINIO | 2 | minio.yml minio-rm.yml |
FERRET | 1 | mongo.yml |
DOCKER | 1 | docker.yml |
JUICE | 1 | juice.yml |
VIBE | 1 | vibe.yml |
剧本总表
| 剧本 | 模块 | 主要用途 |
|---|---|---|
deploy.yml | INFRA | 一次性部署核心链路(Infra/Node/Etcd/PGSQL,按配置启用 MinIO) |
infra.yml | INFRA | 初始化基础设施节点 |
infra-rm.yml | INFRA | 移除基础设施组件 |
node.yml | NODE | 节点纳管与基线配置 |
node-rm.yml | NODE | 节点去纳管 |
etcd.yml | ETCD | ETCD 安装/扩容 |
etcd-rm.yml | ETCD | ETCD 移除/缩容 |
pgsql.yml | PGSQL | 初始化 PostgreSQL 集群或新增实例 |
pgsql-rm.yml | PGSQL | 移除 PostgreSQL 集群/实例 |
pgsql-user.yml | PGSQL | 增加业务用户 |
pgsql-db.yml | PGSQL | 增加业务数据库 |
pgsql-monitor.yml | PGSQL | 纳管远程 PostgreSQL 监控 |
pgsql-migration.yml | PGSQL | 生成迁移手册与脚本 |
pgsql-pitr.yml | PGSQL | 时间点恢复(PITR) |
redis.yml | REDIS | Redis 部署 |
redis-rm.yml | REDIS | Redis 移除 |
minio.yml | MINIO | MinIO 部署 |
minio-rm.yml | MINIO | MinIO 移除 |
mongo.yml | FERRET | FerretDB(Mongo API)部署 |
docker.yml | DOCKER | Docker 引擎部署 |
juice.yml | JUICE | JuiceFS 实例部署/移除 |
vibe.yml | VIBE | VIBE 开发环境部署 |
辅助剧本
以下剧本不归属于特定模块,提供一些辅助功能。
| 剧本 | 说明 |
|---|---|
cache.yml | 构建离线安装包缓存 |
cert.yml | 使用 Pigsty CA 签发证书 |
app.yml | 使用 Docker Compose 安装应用模板 |
slim.yml | 最小化组件安装场景 |
剧本使用注意事项
保护机制
多个模块提供了防误删保险,通过 *_safeguard 参数控制:
- PGSQL:
pg_safeguard参数用于防止误删 PostgreSQL 集群 - ETCD:
etcd_safeguard参数用于防止误删 Etcd 集群 - MINIO:
minio_safeguard参数用于防止误删 MinIO 集群
默认情况下,这些 safeguard 参数均未启用(未定义)。建议在生产环境中为已初始化的集群显式设置为 true。
当保护开关设置为 true 时,对应的 *-rm.yml 剧本会立即中止执行,防止误删。可以通过命令行参数强制覆盖:
./pgsql-rm.yml -l pg-test -e pg_safeguard=false
./etcd-rm.yml -l etcd -e etcd_safeguard=false
./minio-rm.yml -l minio -e minio_safeguard=false
限制执行范围
执行剧本时建议使用 -l 参数限制命令执行的对象范围:
./pgsql.yml -l pg-meta # 限制在集群 pg-meta 上执行
./node.yml -l 10.10.10.10 # 限制在特定节点上执行
./redis.yml -l redis-test # 限制在 redis-test 集群上执行
在大规模部署上批量执行时,建议先在单集群灰度验证,再分批执行到全局。
幂等性
大部分剧本都是幂等的,可以重复执行。但需要注意:
infra.yml默认不会清除数据,可安全重复执行。所有 clean 参数(vmetrics_clean、vlogs_clean、vtraces_clean、grafana_clean、nginx_clean)默认均为false- 如需清除基础设施数据重建,需显式设置对应的 clean 参数为
true - 重复执行
*-rm.yml删除剧本需格外小心,确保在正确的目标上执行
任务标签
可以使用 -t 参数只执行特定的任务子集:
./pgsql.yml -l pg-test -t pg_service # 只刷新集群 pg-test 的服务
./node.yml -t haproxy # 只在节点上设置 haproxy
./etcd.yml -t etcd_launch # 只重启 etcd 服务
常用命令速查
INFRA 模块
./deploy.yml # 一次性完整部署 Pigsty
./infra.yml # 初始化基础设施
./infra-rm.yml # 移除基础设施
./cache.yml # 从现有仓库创建离线安装包
./cert.yml -e cn=<name> # 签发客户端证书
NODE 模块
./node.yml -l <cls|ip> # 添加节点
./node-rm.yml -l <cls|ip> # 移除节点
bin/node-add <cls|ip> # 添加节点 (包装脚本)
bin/node-rm <cls|ip> # 移除节点 (包装脚本)
ETCD 模块
./etcd.yml # 初始化 etcd 集群
./etcd-rm.yml # 移除 etcd 集群
bin/etcd-add <ip> # 添加 etcd 成员 (包装脚本)
bin/etcd-rm <ip> # 移除 etcd 成员 (包装脚本)
PGSQL 模块
./pgsql.yml -l <cls> # 初始化 PostgreSQL 集群
./pgsql-rm.yml -l <cls> # 移除 PostgreSQL 集群
./pgsql-user.yml -l <cls> -e username=<user> # 创建业务用户
./pgsql-db.yml -l <cls> -e dbname=<db> # 创建业务数据库
./pgsql-monitor.yml -e clsname=<cls> # 监控远程集群
./pgsql-migration.yml -e@files/migration/<cls>.yml # 生成迁移手册
./pgsql-pitr.yml -l <cls> -e '{"pg_pitr": {}}' # 执行 PITR 恢复
bin/pgsql-add <cls> # 初始化集群 (包装脚本)
bin/pgsql-rm <cls> # 移除集群 (包装脚本)
bin/pgsql-user <cls> <user> # 创建用户 (包装脚本)
bin/pgsql-db <cls> <db> # 创建数据库 (包装脚本)
bin/pgsql-svc <cls> # 刷新服务 (包装脚本)
bin/pgsql-hba <cls> # 重载 HBA (包装脚本)
bin/pgmon-add <cls> # 监控远程集群 (包装脚本)
REDIS 模块
./redis.yml -l <cls> # 初始化 Redis 集群
./redis-rm.yml -l <cls> # 移除 Redis 集群
MINIO 模块
./minio.yml -l <cls> # 初始化 MinIO 集群
./minio-rm.yml -l <cls> # 移除 MinIO 集群
FERRET 模块
./mongo.yml -l ferret # 安装 FerretDB
DOCKER 模块
./docker.yml -l <host> # 安装 Docker
./app.yml -e app=<name> # 部署 Docker Compose 应用
7 - 端口列表
以下为 Pigsty 中各模块组件使用的默认端口及其对应参数,您可以按需调整,或者作为内部防火墙精细配置的参考。
| 模块 | 组件 | 端口 | 参数 | 状态 |
|---|---|---|---|---|
NODE | node_exporter | 9100 | node_exporter_port | ✅ 默认启用 |
NODE | haproxy | 9101 | haproxy_exporter_port | ✅ 默认启用 |
NODE | vector | 9598 | vector_port | ✅ 默认启用 |
NODE | keepalived_exporter | 9650 | vip_exporter_port | ⚠️ 按需启用 |
NODE | chronyd | 123 | - | ✅ 默认启用 |
DOCKER | docker | 9323 | docker_exporter_port | ⚠️ 按需启用 |
INFRA | nginx | 80 | nginx_port | ✅ 默认启用 |
INFRA | nginx | 443 | nginx_ssl_port | ✅ 默认启用 |
INFRA | nginx_exporter | 9113 | nginx_exporter_port | ✅ 默认启用 |
INFRA | grafana | 3000 | grafana_port | ✅ 默认启用 |
INFRA | victoriaMetrics | 8428 | vmetrics_port | ✅ 默认启用 |
INFRA | victoriaLogs | 9428 | vlogs_port | ✅ 默认启用 |
INFRA | victoriaTraces | 10428 | vtraces_port | ✅ 默认启用 |
INFRA | vmalert | 8880 | vmalert_port | ✅ 默认启用 |
INFRA | alertmanager | 9059 | alertmanager_port | ✅ 默认启用 |
INFRA | blackbox_exporter | 9115 | blackbox_port | ✅ 默认启用 |
INFRA | dnsmasq | 53 | dns_port | ✅ 默认启用 |
ETCD | etcd | 2379 | etcd_port | ✅ 默认启用 |
ETCD | etcd | 2380 | etcd_peer_port | ✅ 默认启用 |
MINIO | minio | 9000 | minio_port | ✅ 默认启用 |
MINIO | minio | 9001 | minio_admin_port | ✅ 默认启用 |
REDIS | redis | 6379 | redis_instances | ⚠️ 按需启用 |
REDIS | redis_exporter | 9121 | redis_exporter_port | ⚠️ 按需启用 |
FERRET | ferretdb | 27017 | mongo_port | ⚠️ 按需启用 |
FERRET | ferretdb (TLS) | 27018 | mongo_ssl_port | ⚠️ 按需启用 |
FERRET | mongo_exporter | 9216 | mongo_exporter_port | ✅ 默认启用 |
VIBE | code-server | 8443 | code_port | ⚠️ 按需启用 |
VIBE | jupyterlab | 8888 | jupyter_port | ⚠️ 按需启用 |
PGSQL | postgres | 5432 | pg_port | ✅ 默认启用 |
PGSQL | pgbouncer | 6432 | pgbouncer_port | ✅ 默认启用 |
PGSQL | patroni | 8008 | patroni_port | ✅ 默认启用 |
PGSQL | pg_exporter | 9630 | pg_exporter_port | ✅ 默认启用 |
PGSQL | pgbouncer_exporter | 9631 | pgbouncer_exporter_port | ✅ 默认启用 |
PGSQL | pgbackrest_exporter | 9854 | pgbackrest_exporter_port | ✅ 默认启用 |
PGSQL | {{ pg_cluster }}-primary | 5433 | pg_default_services | ✅ 默认启用 |
PGSQL | {{ pg_cluster }}-replica | 5434 | pg_default_services | ✅ 默认启用 |
PGSQL | {{ pg_cluster }}-default | 5436 | pg_default_services | ✅ 默认启用 |
PGSQL | {{ pg_cluster }}-offline | 5438 | pg_default_services | ✅ 默认启用 |
PGSQL | {{ pg_cluster }}-<service> | 543x | pg_services | ⚠️ 按需启用 |
公网开放端口建议
如果您使用防火墙 zone 模式,建议通过 node_firewall_public_port 仅开放最小必要端口:
- 最小管理面:
22, 80, 443(推荐) - 需要公网直连数据库:额外开放
5432
不建议直接对公网开放:etcd(2379/2380)、patroni(8008)、各类 exporter(9xxx)、minio(9000/9001)、redis(6379)、ferretdb(27017/27018)等内部组件端口。
node_firewall_mode: zone
node_firewall_public_port: [22, 80, 443]
# node_firewall_public_port: [22, 80, 443, 5432] # only if public DB access is required