Pigsty 完整指南:企业级 PostgreSQL 发行版的 HA、PITR 与 IaC 实战
数据库运维云原生高可用监控【免费下载链接】pigstyEnterprise-Grade OSS PostgreSQL Distribution with HA, PITR, IaC, Monitor, 12 kernel forks and 575 PG extensions. Best-of-breed products integrated as a platform. Self-host Postgres like a Pro!项目地址https://gitcode.com/GitHub_Trending/pi/pigsty点击查看免费下载项目定位PostgreSQL In Great STYlePigsty 是一个企业级开源PostgreSQL 发行版官方定位为 Self-Host Postgres like a Pro。名字本身即是设计哲学的浓缩Postgres、Infras、Graphics、Service、Toolboxits allYours——数据库、基础设施、图形监控、服务接入、工具箱全部自持自管。它解决的核心问题是云数据库RDS时代的痛点托管数据库成本高、能力受限、难以深度定制。Pigsty 把一套完整的数据库交付能力打包成开源项目让你在自有的裸金属 Linux 上以接近 RDS 的体验获得数据库服务同时保留对内核、参数、扩展的完全控制权。从仓库根目录的 README.md 可以看到Pigsty 的关键能力画像包括555 个 PostgreSQL 扩展与12 种 PostgreSQL 内核分支打包覆盖16 个 Linux 发行版平台开箱即用battery-included基于 Patroni Etcd 的自愈式高可用HA、基于 pgBackRest 的预配置时间点恢复PITR、内置ACL 访问控制与CA/SSL 安全最佳实践基于VictoriaMetrics Grafana技术栈的 PostgreSQL / 基础设施 / 节点三层面监控基于 HAProxy、PgBouncer 与 VIP 的自动路由、连接池化数据库服务接入一键部署、自动调优、本地软件源、IaC 配置以及 Vagrant / Terraform 环境支持可选的 Redis、MinIO、Etcd、Docker、DuckDB、FerretDB、Supabase 等附加模块无需 Docker 与 Kubernetes直接运行于裸机 Linux云中立、可自给自足的基础设施闭环。核心特性从可扩展到可负担README 中归纳了八个维度的特性它们共同定义了 Pigsty 的工程能力特性维度具体内容仓库内证据可扩展555 个 PG 扩展、12 个 PG 内核、16 个 Linux 平台打包roles/node_id/vars/ 下按发行版与架构拆分的标识文件可靠自愈 HA、预配置 PITR、内置 ACL 与 CA/SSLdeploy.yml 的 etcd、pgsql 阶段编排roles/pgsql/可观测PG / Infra / Node 三层监控Victoria Grafana 栈files/grafana/ 下 pgsql、infra、node、redis、minio 等仪表盘 JSON可扩展ScaleHAProxy PgBouncer VIP 自动路由与池化服务conf/ha/full.yml 的 pg-test 三节点集群定义可维护一键部署、管理 SOP、自动调优、本地软件源、IaC、Vagrant/TerraformMakefile 的 bootstrap/configure/deploy 目标vagrant/ 与 terraform/可组合Redis、MinIO、Etcd、Docker、FerretDB、Supabase 等附加模块conf/ha/full.yml 的 redis-ms / redis-meta / redis-test 定义可控自给自足基础设施闭环云中立 FOSS裸机运行无需容器conf/meta.yml 的单节点全局参数可负担自托管专业级数据库无需 RDS 订阅成本—12 种 PostgreSQL 内核一平台多引擎Pigsty 最具辨识度的能力之一是允许在同一个平台上以「就地替换」的方式部署多种 PostgreSQL 内核分支并将其包装为完整的 RDS 服务。README 中列出的内核及定位如下内核关键能力说明PostgreSQL开箱即用原生 PGDG PostgreSQL携带 555 个扩展Supabase后端即服务BaaS构建于 PostgreSQL 之上的 Firebase 替代品Citus水平扩展通过原生扩展实现分布式 PostgreSQLBabelfishSQL Server 模拟微软 SQL Server 线级协议兼容IvorySQLOracle 模拟Oracle 语法与 PL/SQL 兼容OpenHaloMySQL 模拟MySQL 线级协议兼容FerretDBMongoDB 模拟MongoDB 线级协议兼容Percona透明数据加密Percona 发行版 pg_tdeOrioleDBOLTP 优化引擎无膨胀no bloat、无 XID 回卷、S3 存储PolarDBAurora 风格 RACRAC 形态、中国境内合规AgensGraph原生图数据库基于 PostgreSQL 的事务图数据库pgEdge多主分布式地理分布的多写 PostgresCloudberryMPP 数据仓库Greenplum 7 Apache 开源分支说明README 特性横幅中概括为 12 个内核表格则细分到 13 行Supabase 同时以应用模块与内核两种身份出现以其表格为准可更精确地理解各内核能力。这些内核的配置入口在仓库中均有对应模板例如 Citus 见 conf/ha/citus.ymlIvorySQL 见 conf/ivory.ymlPolarDB 见 conf/polar.ymlOrioleDB 见 conf/oriole.ymlpgEdge 见 conf/pgedge.yml。快速开始从零到可用 PostgreSQL 的三种路径README 提供了三种安装 Pigsty 的方式推荐运行环境为全新、干净的x86_64/aarch64Linux 节点建议使用具备 nopass sudo 与 nopass ssh 的管理用户而非 root。路径一get 脚本官方推荐可指定版本curl -fsSL https://repo.pigsty.io/get | bash -s v4.4.0该脚本会在节点上依次完成版本下载、MD5 校验、解压安装、Ansible 引导bootstrap与环境检测。README 展示了完整的安装日志流程检测 region/kernel/machine/package/vendor/version、移动旧软件源、添加 Pigsty 与上游软件源、构建元数据缓存、安装 Ansible 与依赖集合最终提示proceed with ./configure。路径二pig 命令行curl -fsSL https://repo.pigsty.io/pig | bash # 安装 pig pig sty init # 安装最新 pigsty 源码到 ~/pigsty pig sty conf # 自动生成 pigsty.yml 配置文件 pig sty deploy # 运行 deploy.yml playbook路径三git 克隆源码git clone https://github.com/pgsty/pigsty; cd pigsty; git checkout v4.4.0注意main分支为开发分支使用前务必检出对应版本 tag。配置与部署安装完成后进入 pigsty 家目录执行配置与部署./configure -g # 生成配置并随机密码 ./deploy.yml # 在当前节点部署一切./configure是交互式配置向导用于生成 pigsty.yml 清单文件Ansible inventory见仓库根 ansible.cfg 中inventory pigsty.yml./deploy.yml是核心 playbook。从源码看它按顺序交织执行了IDENTITY → CA → REPO → NODE INIT → INFRA INIT → NODE MONITOR → ETCD INIT → MINIO INIT → PGSQL INIT九个阶段deploy.yml等价于依次运行infra.yml -l infra、node.yml -l all、etcd.yml -l etcd、minio.yml -l minio、pgsql.yml -l all五个 playbook。部署完成后你将得到一个开箱即用的单节点singletonPigsty 环境WebUI 位于 80/443 端口PostgreSQL 位于 5432 端口。对于开发/测试场景也可以在 Docker 容器内运行 Pigstycd docker; make launch对应 docker/ 目录。架构模块化设计的四大支柱与可选模块Pigsty 采用模块化设计核心是四个相互独立、可自由组合的模块模块职责PGSQL由 Patroni、PgBouncer、PgBackRest 与 HAProxy 驱动的自愈 PostgreSQL HA 集群INFRANginx、本地软件源、DNSMasq以及整套 Victoria Grafana 可观测栈NODE初始化节点主机名、软件源、软件包、NTP、ssh、admin、内核调优暴露服务并采集日志与指标ETCDEtcd 集群作为 PostgreSQL HA 代理的分布式配置存储DCS组合规则非常简单仅需主机监控时INFRANODE即可需要 HA PG 集群时加入ETCD与PGSQL并在多个节点上安装即可自动组成 HA 集群。默认 deploy.yml 会在当前节点部署INFRA、NODE、ETCD、PGSQL四者交付开箱即用的 PostgreSQL 单实例admin_ip:5432。节点同时可充当管理控制机用于部署与监控更多节点和集群。README 还列出了 6 个可选附加模块用于高级场景MinIOS3 兼容对象存储作为 PGSQL 的可选集中备份服务器Redis支持单机主从、哨兵sentinel与原生集群三种模式Ferret原生支持 FerretDB为 Postgres 增加 MongoDB 线级协议兼容Docker启动可选 Docker 守护进程运行 Pigsty RDS 之外的无状态组件JuiceJuiceFS可将 S3/MinIO 乃至 PostgreSQL 挂载为多用户共享文件系统Vibe包含 VS Code Server、JupyterLab、Node.js 与 Claude Code 的 Vibe 编码环境。除此之外仓库还有 pro / beta / pilot 级别的更多模块方向如 Kafka对应角色 roles/kafka/、MySQL、DuckDB、Kubernetes、Consul、Jupyter 等。PostgreSQL RDS声明式集群定义与一键创建Pigsty 的数据库交付核心是「声明式清单 一条命令」。部署一个额外的 3 节点 HA 集群pg-test只需在 pigsty.yml 的all.children下加入以下片段pg-test: hosts: 10.10.10.11: { pg_seq: 1, pg_role: primary } 10.10.10.12: { pg_seq: 2, pg_role: replica } 10.10.10.13: { pg_seq: 3, pg_role: offline } vars: { pg_cluster: pg-test }然后调用内置脚本一次创建bin/pgsql-add pg-test # init pg-test cluster从 bin/pgsql-add 源码可见该脚本的分支行为只给一个参数时创建整个集群执行./pgsql.yml -l cls给出多个 IP 参数时为既有集群追加副本实例先./pgsql.yml -l cls,ip1,ip2初始化新实例再./pgsql.yml -l cls,!ip... -t pg_service重载既有实例的 HAProxy 服务以重路由流量。这与 README 中「add replicas to cluster」的用法完全一致。创建完成后集群自带全部标配能力高可用Patroni Etcd 驱动RPO 0同步模式RPO 1MB异步模式切换switchoverRTO 约 2 秒故障转移failoverRTO 小于 30 秒——只要任一实例存活集群持续对外服务时间点恢复pgBackRest 驱动可搭配本地 POSIX 文件系统或可选的 MinIO / S3服务接入PgBouncer 池化 HAProxy 暴露自动路由读写流量支持默认服务与自定义服务监控告警由 INFRA 模块提供开箱即用的仪表盘与告警规则。复杂定制数据库、用户、服务与访问控制的完整语法README 以集群pg-meta为例给出了生产级复杂 PostgreSQL 定制的完整配置涉及 pg_databases数据库、pg_users用户/角色、pg_services服务三类实体定义。以下按实体分类整理全部参数语义。数据库定义pg_databasesname是唯一必填字段其余均为可选参数默认值说明baseline—数据库初始化 SQL 基线文件路径如cmdb.sqlpgbouncertrue是否将该库加入 pgbouncer 数据库列表schemas[]额外创建的 schema 数组extensions[]额外安装的扩展数组{name[, schema]}形式comment/owner/template— / postgres / template1注释、属主、模板库encoding/locale/lc_collate/lc_ctypeUTF8 / C / C / C编码与区域设置必须与模板库一致tablespacepg_default默认表空间allowconntrue是否允许连接false 完全禁连revokeconnfalse是否撤销 public 连接权限保留属主 grant 权限register_datasourcetrue是否注册为 Grafana 数据源connlimit-1数据库连接上限-1 不限pool_auth_user/pool_mode— / transactionpgbouncer 认证用户 / 池模式pool_size/pool_reserve/pool_size_min/pool_connlimit64 / 32 / 0 / 100pgbouncer 池大小、保留、最小、连接上限is_templatefalse标记为模板库strategywal_logPG15wal_log或file_copylocale_provider/icu_locale/icu_rules/builtin_localelibc / / / PG15 / PG15 / PG16 / PG17 本地化选项parameters{}通过ALTER DATABASE SET设置的库级参数用户/角色定义pg_usersname为唯一必填字段参数默认值说明password—密码可为 scram-sha-256 哈希串或明文logintrue是否允许登录新建业务角色应设 falsesuperuser/createdb/createrole/inherit/replication/bypassrls均为 false角色权限位pgbouncerfalse是否加入 pgbouncer 用户列表生产用户应显式 trueconnlimit-1用户连接上限expire_in/expire_at—过期时间now n 天 / 指定日期expire_in 覆盖 expire_atcomment—注释roles[]所属角色默认可使用dbrole_{admin,readonly,readwrite,offline}parameters{}ALTER ROLE SET角色级参数pool_mode/pool_connlimittransaction / -1pgbouncer 用户级池模式与连接上限PostgreSQL 16 还支持角色定义的扩展格式进行细粒度授权roles: - dbrole_readwrite # 简单格式直接授予角色 - name: dbrole_admin # 扩展格式携带选项 state: grant # grant默认| revoke/absent admin: false # 是否带 admin 选项 inherit: true # 是否带 inherit 选项PG16 set: true # 是否带 set 选项PG16服务定义pg_services自定义服务用于暴露额外的接入端口README 中的standby示例可将 5435 端口的流量路由到同步副本的 pgbouncer5435 → 6432 standbypg_services: - name: standby # 必填实际服务名会加 pg_cluster 前缀如 pg-meta-standby port: 5435 # 必填暴露端口类似 k8s NodePort ip: * # 绑定地址默认 * 全部 selector: [] # 必填用 JMESPath 过滤清单选择成员 dest: default # 目标端口default|postgres|pgbouncer|port check: /sync # 健康检查 URL 路径 backup: [? pg_role primary] # 备用服务器选择器 maxconn: 3000 # 前端最大连接数 balance: roundrobin # haproxy 负载均衡算法roundrobin/leastconn #options: inter 3s fastinter 1s downinter 5s rise 3 fall 3 on-marked-down shutdown-sessions slowstart 30s maxconn 3000 maxqueue 128 weight 100访问控制、VIP 与定时任务pg_hba_rules: - {user: dbuser_view , db: all ,addr: infra ,auth: pwd ,title: allow grafana dashboard access cmdb from infra nodes} pg_vip_enabled: true pg_vip_address: 10.10.10.2/24 pg_crontab: # make a full backup 1 am everyday - 00 01 * * * /pg/bin/pg-backup fullpg_hba_rules以声明式数组追加 HBA 规则addr支持local/localhost/intra/world等预定义集合与具体网段auth支持ident/pwd/ssl/cert/trust/deny等pg_vip_enabledpg_vip_address启用绑定到主节点的 L2 VIPkeepalived 实现见 roles/node/tasks/vip.ymlpg_crontab通过 files/postgres/pg-backup 脚本编排 pgBackRest 定时全量/增量备份。自定义场景四种代表性配置模板Pigsty 内置大量配置模板conf/ 目录README 展开讲解了三种典型场景加上单节点默认模板共四种。单节点 metaconf/meta.yml默认 1 节点在线安装配置包含 INFRA、NODE、PGSQL、ETCD、MINIO、DOCKER、APP 模块附带基础扩展 postgis、pgvector。关键点pg_extensions: [postgis, pgvector]声明集群级扩展见 conf/meta.yml通过 files/cmdb.sql 作为meta数据库基线单节点模式下关闭本地软件源repo_enabled: false使用node_repo_modules: node,infra,pgsql直接把软件源加入节点默认附带 pgadmin 应用app: pgadmin部署后可通过./app.yml启动端口 8885。4 节点沙箱双 PGconf/ha/full.yml四个节点部署两个 PG 集群单实例pg-meta10.10.10.10 三节点 HA 集群pg-test10.10.10.11/12/13同时带有 redis-ms主从、redis-meta3 哨兵、redis-test3 主 3 从原生集群等模块。README 中的 4 节点示例即为该模板的精简版其中pg-test的 3 节点定义与 README 完全一致。安全增强与延迟副本conf/ha/safe.yml4 节点安全增强模板3 节点pg-meta集群 可选延迟副本pg-meta-delaypg_upstream指向主集群、pg_delay: 1h将数据滞后 1 小时用于误操作恢复。其安全策略包括pg_conf: crit.yml使用 templates/crit.yml 关键参数模板强制校验checksum enforced、无数据丢失patroni_ssl_enabled: true、pgbouncer_sslmode: require、pg_default_service_dest: postgresSSL 全链路强制默认服务直达 PostgreSQLpg_libs加入$libdir/passwordcheck强制强密码策略并装载 pgaudit、credcheck、set_user、anonymizer 等一批安全扩展pg_default_roles/pg_default_hba_rules/pgb_default_hba_rules全量定制默认角色与两层 HBA 规则所有用户强制设置过期时间expire_in: 7300约 20 年全局密码一律使用显式强口令示例并提示更换见 conf/ha/safe.yml。Citus 水平分片conf/ha/citus.yml在原生 PostgreSQL 上叠加 Citus 实现水平分片13 节点1 个协调节点组 6 个工作节点组每组主备成对README 展示了 10 节点 5 组的精简写法。关键参数pg_mode: citus # pgsql cluster mode: citus pg_shard: pg-citus # citus shard name pg_primary_db: test # citus 使用的 primary database pg_dbsu_password: DBUser.Postgres # 全集群 dbsu 密码访问 pg_extensions: [ citus postgis timescaledb pgvector ] pg_libs: citus, timescaledb, pg_stat_statements, auto_explain每个节点通过pg_group分组、pg_cluster命名子集群、pg_vip_address分配组内 VIPHBA 规则对集群成员网段放行trust、对内网强制ssl。除上述实例类型外Pigsty 还支持部署primary、replica、offline、delayed、sync standby等不同角色实例并在同一部署内混用不同 PG 大版本与内核分支。用户、数据库、服务、HBA 等实体均可「以代码定义、一遍开通」。自托管应用以 Supabase 为例Pigsty 同样用于自托管 Postgres 生态软件Supabase、Odoo、Dify、Electric、GitLab 等。README 给出启动自托管 Supabase 的四条命令./configure -c supabase # 使用 supabase 配置模板 ./deploy.yml # 安装 pigsty ./docker.yml # 安装 docker compose ./app.yml # 用 docker 启动 supabase 无状态部分conf/supabase.yml 描述了一切所需在pg-meta集群中预置 Supabase 角色anon、authenticated、dashboard_user、service_role及supabase_admin、authenticator等 8 个用户、两个数据库postgres承载业务、_supabase承载内部分析并在postgres库中创建 7 个 schemaextensions、auth、realtime、storage、graphql_public、supabase_functions、_realtime与 14 个扩展pgcrypto、pg_net、pgjwt、uuid-ossp、pgsodium、supabase_vault、pg_jsonschema、wrappers、http、pg_cron、timescaledb、pg_tle、vector、pgmq。配套机制包括pg_libs装载timescaledb, pgsodium, plpgsql, plpgsql_check, pg_cron, pg_net, pg_stat_statements, auto_explain, pg_wait_sampling, pg_tle, plan_filterHBA 规则放行 Docker 网段172.17.0.0/16与内网定时任务supa-kick每分钟清理_analytics滞后对应 files/postgres/supa-kick 脚本SQL 基线为 files/supabase.sql。兼容性受支持的 Linux 发行版矩阵Pigsty 直接运行于裸机 Linux聚焦主流 LTS 发行版。生产环境推荐 Rocky 9.7 / 10.1、Debian 13.6 / 12.14、Ubuntu 24.04.4 / 22.04.5。完整支持矩阵README 中给出仓库内有对应标识文件代号发行版推荐小版本x86_64 标识文件aarch64 标识文件EL10RHEL / Rocky / Alma 1010.1roles/node_id/vars/el10.x86_64.ymlroles/node_id/vars/el10.aarch64.ymlEL9RHEL / Rocky / Alma 99.7roles/node_id/vars/el9.x86_64.ymlroles/node_id/vars/el9.aarch64.ymlEL8RHEL / Rocky / Alma 88.10roles/node_id/vars/el8.x86_64.ymlroles/node_id/vars/el8.aarch64.ymlU26Ubuntu 26.0426.04.0roles/node_id/vars/u26.x86_64.ymlroles/node_id/vars/u26.aarch64.ymlU24Ubuntu 24.0424.04.4roles/node_id/vars/u24.x86_64.ymlroles/node_id/vars/u24.aarch64.ymlU22Ubuntu 22.0422.04.5roles/node_id/vars/u22.x86_64.ymlroles/node_id/vars/u22.aarch64.ymlD13Debian 1313.6roles/node_id/vars/d13.x86_64.ymlroles/node_id/vars/d13.aarch64.ymlD12Debian 1212.14roles/node_id/vars/d12.x86_64.ymlroles/node_id/vars/d12.aarch64.yml注意README 注明 EL 9/10 被锁定在 9.7/10.1因为更新的上游小版本当前存在问题broken。对应发行版小版本同样体现在 templates/distro/ 的构建模板中。源码级佐证部署编排与工具链围绕 README 的核心声明仓库源码提供了多层次的实现证据部署编排deploy.yml 的九个阶段与各 playbookinfra.yml、node.yml、etcd.yml、minio.yml、pgsql.yml一一对应其中pgsql角色仅在pg_cluster is defined时执行印证了「声明清单即部署范围」的 IaC 模型。集群创建工具bin/pgsql-add 的1 参数创建 / N 参数扩容双分支逻辑以及 bin/pgsql-rm 对应的销毁路径bin/node-add 负责节点纳入管理README 提示bin/pgsql-add前需先执行节点纳管。Makefile 速查Makefile 将整个运维面浓缩为常用目标make bootstrap准备软件源与 Ansible、make configure交互配置、make deploy部署、make infra只装基础设施、make pgsql-add装 PG 集群、make test-rw / test-ropgbench 压测、make meta9 / full9 / simu9拉起 1/4/20 节点 Vagrant 沙箱等。监控资产files/grafana/ 下的 pgsql、node、infra、redis、minio 等目录提供全套仪表盘 JSON如 files/grafana/pgsql/pgsql-cluster.json、files/grafana/pgsql/pgsql-instance.json告警规则见 files/victoria/rules/pgsql.yml仪表盘由 files/grafana/grafana.py 统一管理对应make di/dd/dc的 init/dump/clean 目标。应用编排app/目录如 app/supabase/docker-compose.yml、app/minio/docker-compose.yml承载各应用的 docker-compose 定义由app.ymlplaybook 统一驱动README 中「./app.yml启动应用」的链路因此得以闭环。许可证Pigsty 以Apache-2.0协议开源见 LICENSE 与 NOTICE。如需在自有节点上体验完整流程可按上文「快速开始」章节的三条路径之一获取源码再依次执行./configure -g与./deploy.yml完成单节点交付生产级多节点与 HA 能力则可通过修改 pigsty.yml 清单并调用 bin/pgsql-add 等工具逐步扩展。赞分享数据库运维云原生高可用监控【免费下载链接】pigstyEnterprise-Grade OSS PostgreSQL Distribution with HA, PITR, IaC, Monitor, 12 kernel forks and 575 PG extensions. Best-of-breed products integrated as a platform. Self-host Postgres like a Pro!项目地址https://gitcode.com/GitHub_Trending/pi/pigsty点击查看免费下载相关推荐Pigsty备份与恢复PITR和pgBackRest完整教程Pigsty备份与恢复PITR和pgBackRest完整教程 PostgreSQL数据库是现代应用的核心 Pigsty 作为电池内置的免费RDS替代方案为数据库运维云原生高可用监控如何快速部署Hey企业版去中心化社交平台的企业级功能与支持完整指南如何快速部署Hey企业版去中心化社交平台的企业级功能与支持完整指南 Hey是基于Lens Protocol构建的去中心化社交应用为企业提供无需许可的社交网络社交Web3如何快速上手SunnyUI10个实用技巧助你高效开发如何快速上手SunnyUI10个实用技巧助你高效开发 SunnyUI.NET是基于.NET Framework 4.0、.NET6、.NET8、.NET9框UI组件桌面应用上一篇Winhance中文版3个步骤让Windows系统优化变得简单易行下一篇快速搭建传奇游戏服务器OpenMir2开源框架终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →