概念
Pigsty 是一个可移植、可扩展的开源 PostgreSQL 发行版,用于在本地环境中构建生产级数据库服务,方便进行声明式配置和自动化。它拥有庞大的生态系统,提供了一整套工具、脚本和最佳实践,让 PostgreSQL 真正达到企业级 RDS 的服务水准。
Pigsty 名字源自 PostgreSQL In Great STYle,也可理解为 Postgres,Infras,Graphics,Service,Toolbox,it’s all Yours —— 属于您的 PostgreSQL 图形化自建工具箱。您可以在 GitHub 上找到源代码,访问 官方文档 了解更多信息,或在 在线演示 中体验 Web 界面。
为什么需要 Pigsty,它能做什么?
PostgreSQL 是一个足够完美的数据库内核,但它需要更多工具与系统的配合才能成为一个足够好的数据库服务。在生产环境中,您需要管理数据库的方方面面:高可用、备份恢复、监控告警、访问控制、参数调优、扩展安装、连接池化、负载均衡……
如果这些复杂的运维工作都能自动化处理,是不是会更容易一些?这正是 Pigsty 诞生的原因。
Pigsty 为您提供:
-
开箱即用的 PostgreSQL 发行版
Pigsty 整合了 PostgreSQL 生态中的 575 个扩展插件,提供开箱即用的分布式、时序、地理、空间、图、向量、搜索等多模态数据库能力。从内核到 RDS 发行版,在 EL/Debian/Ubuntu 下提供 14 - 18 版本的生产级数据库服务。
-
故障自愈的高可用架构
基于 Patroni、Etcd 和 HAProxy 打造的 高可用架构,让硬件故障自动切换,流量无缝衔接。主库故障恢复时间 RTO < 45s,数据恢复点 RPO ≈ 0。您可以在无需应用配合的情况下滚动维护升级整个集群。
-
完整的时间点恢复能力
基于 pgBackRest 与可选的 Silo 对象存储集群,提供开箱即用的 PITR 时间点恢复 能力。让您可以回到恢复窗口内的任意时间点,为软件缺陷与人为删库兜底。
-
灵活的服务接入与流量管理
通过 HAProxy、Pgbouncer、VIP 提供灵活的 服务接入 模式,实现读写分离、连接池化、自动路由。交付稳定可靠、自动路由、事务池化的高性能数据库服务。
-
惊艳的可观测性
基于 Victoria 与 Grafana 的可观测性技术栈,提供无与伦比的 监控最佳实践。超过三千类监控指标描述系统的方方面面,从全局大盘到单个对象的增删改查都能一览无余。
-
声明式的配置管理
遵循 基础设施即代码 的理念,使用声明式配置描述整个环境。您只需告诉 Pigsty “想要什么样的数据库集群”,无需操心具体如何实现,系统会自动调整到期望状态。
-
模块化的架构设计
采用模块化 架构 设计,可自由组合以适应不同场景。除了核心的 PostgreSQL 模块外,还提供 Redis、MINIO(Silo)、Etcd 等可选模块,以及对多种 PG 兼容内核与模式的支持。
-
采用业界领先的安全最佳实践:自签名 CA 签发证书加密通信,AES 加密备份,SCRAM-SHA-256 口令哈希,开箱即用的 ACL 模型,遵循最小权限原则的 HBA 规则集,确保数据安全。
-
简单易用的部署方案
所有依赖被预先打包,可在无互联网访问的环境中一键安装。本地沙箱环境可运行在 1核2G 的微型虚拟机中,提供与生产环境完全一致的功能模拟。提供基于 Vagrant 的本地沙箱与基于 Terraform 的云端部署方案。
Pigsty 不是什么
Pigsty 并不是传统的、包罗万象的 PaaS(平台即服务)系统。
-
Pigsty 不提供基础硬件资源。它运行在您提供的节点之上,无论是裸金属、虚拟机还是云主机,但它本身不创建或管理这些资源(尽管提供了 Terraform 模板来简化云资源的准备)。
-
Pigsty 不是容器编排系统。它直接运行在操作系统之上,不需要 Kubernetes 或 Docker 作为基础设施。当然,它可以与这些系统共存,并提供 Docker 模块来运行无状态应用。
-
Pigsty 不是通用的数据库管理工具。它专注于 PostgreSQL 及其生态,虽然也支持 Redis、Etcd、Silo 等周边组件,但核心始终是围绕 PostgreSQL 构建的。
-
Pigsty 不会锁定您。它基于开源组件构建,不修改 PostgreSQL 内核,不引入专有协议。您随时可以脱离 Pigsty 继续使用管理好的 PostgreSQL 集群。
Pigsty 不限制您应该或不应该如何构建数据库服务。例如:
- Pigsty 为您提供了良好的参数默认值和配置模板,但您可以覆盖任何参数。
- Pigsty 提供了声明式 API,但您依然可以使用底层工具(Ansible、Patroni、pgBackRest 等)进行手动管理。
- Pigsty 可以管理完整的生命周期,也可以只使用其中的监控系统来观测现有的数据库实例或 RDS。
Pigsty 提供的抽象层次不同于硬件层面,它工作在数据库服务层面,聚焦于如何让 PostgreSQL 以最佳状态交付价值,而不是重新发明轮子。
PostgreSQL 部署方式的演进
要理解 Pigsty 的价值,让我们回顾一下 PostgreSQL 部署方式的演进历程。
手工部署时代
在传统的部署方式中,DBA 需要手工安装配置 PostgreSQL,手工设置复制,手工配置监控,手工处理故障。这种方式的问题显而易见:
- 效率低下:每个实例都需要重复大量手工操作,容易出错。
- 缺乏标准化:不同 DBA 配置的数据库可能千差万别,难以维护。
- 可靠性差:故障处理依赖人工介入,恢复时间长,容易出现人为失误。
- 观测性弱:缺乏统一的监控体系,问题发现和定位困难。
托管数据库时代
为了解决这些问题,云厂商提供了托管数据库服务(RDS)。云 RDS 确实解决了部分运维问题,但也带来了新的挑战:
- 成本高昂:托管服务通常收取硬件成本数倍到十几倍的"服务费"。
- 供应商锁定:迁移困难,受制于特定云平台。
- 功能受限:无法使用某些高级特性,扩展插件受限,参数调整受限。
- 数据主权:数据存储在云端,自主可控性降低。
本地 RDS 时代
Pigsty 代表了第三种方式:在本地环境中构建媲美甚至超越云 RDS 的数据库服务。
Pigsty 结合了前两种方式的优点:
- 自动化程度高:一键部署,自动配置,故障自愈,像云 RDS 一样便捷。
- 完全自主可控:运行在您自己的基础设施上,数据完全掌握在自己手中。
- 成本极低:以接近纯硬件的成本运行企业级数据库服务。
- 功能完整:无限制地使用 PostgreSQL 的全部能力和生态扩展。
- 开放架构:基于开源组件,无供应商锁定,可随时迁移。
这种方式特别适合:
- 私有云与混合云:需要在本地环境中运行数据库的企业。
- 成本敏感型用户:希望降低数据库 TCO 的组织。
- 高安全要求场景:需要完全自主可控的关键数据。
- PostgreSQL 深度用户:需要使用高级特性和丰富扩展的场景。
- 开发与测试:需要在本地快速搭建与生产环境一致的数据库。
接下来
现在您已经了解了 Pigsty 的基本概念,可以:
- 查看 系统架构 了解 Pigsty 的模块化设计
- 了解 集群模型 理解 Pigsty 如何组织数据库集群
- 学习 高可用 机制掌握故障自愈的原理
- 探索 时间点恢复 了解如何应对数据误删
- 研究 服务接入 理解如何稳定交付数据库服务
- 体验 基础设施即代码 感受声明式配置的魅力
- 或直接开始 快速上手 在几分钟内部署您的第一个 Pigsty 环境
Pigsty 的模块化架构介绍 —— 声明式组合,按需定制,自由部署。
Pigsty 是如何将不同种类的功能抽象成为模块的,以及这些模块的逻辑模型,实体关系图。
Pigsty 使用基础设施即代码(IaC)的理念管理所有组件,针对大规模集群提供声明式管理能力。
Pigsty 使用 Patroni 实现了 PostgreSQL 的高可用,确保主库不可用时自动进行故障转移,由从库接管。
高可用解决"机器坏了",时间点恢复解决"数据错了"。Pigsty 基于 pgBackRest 提供开箱即用的 PITR 能力,让您可以将集群回滚至恢复窗口内的任意时刻,为人为失误与软件缺陷兜底。
Pigsty 以安全即代码的方式管理认证、授权、加密、审计与备份恢复,并提供从默认配置到生产加固的清晰路径。
