概述
Pigsty 是一个可移植、可扩展的开源 PostgreSQL 发行版,用于在本地环境中构建生产级数据库服务,方便进行声明式配置和自动化。它拥有庞大的生态系统,提供了一整套工具、脚本和最佳实践,让 PostgreSQL 真正达到企业级 RDS 的服务水准。
Pigsty 名字源自 PostgreSQL In Great STYle,也可理解为 Postgres, Infras, Graphics, Service, Toolbox, it’s all Yours —— 一切皆为您所拥有的 PostgreSQL 完整解决方案。您可以在 GitHub 上找到源代码,访问 官方文档 了解更多信息,或在 在线演示 中体验监控系统。
为什么需要 Pigsty,它能做什么?
PostgreSQL 是一个足够完美的数据库内核,但它需要更多工具与系统的配合才能成为一个足够好的数据库服务。在生产环境中,您需要管理数据库的方方面面:高可用、备份恢复、监控告警、访问控制、参数调优、扩展安装、连接池化、负载均衡……
如果这些复杂的运维工作都能自动化处理,是不是会更容易一些?这正是 Pigsty 诞生的原因。
Pigsty 为您提供:
开箱即用的 PostgreSQL 发行版
Pigsty 深度整合了 PostgreSQL 生态中的 440+ 扩展插件,为您提供开箱即用的分布式、时序、地理、空间、图、向量、搜索等多模态数据库能力。从内核到 RDS 发行版,在 EL/Debian/Ubuntu 下提供 13-18 版本的生产级数据库服务。
故障自愈的高可用架构
基于 Patroni、Etcd 和 HAProxy 打造的 高可用架构,让硬件故障自动切换,流量无缝衔接。主库故障恢复时间 RTO < 30s,数据恢复点 RPO ≈ 0。您可以在无需应用配合的情况下滚动维护升级整个集群。
完整的时间点恢复能力
基于 pgBackRest 与可选的 MinIO 集群,提供开箱即用的 PITR 时间点恢复 能力。让您拥有快速回到过去任意时间点的能力,为软件缺陷与人为删库兜底。
灵活的服务接入与流量管理
通过 HAProxy、Pgbouncer、VIP 提供灵活的 服务接入 模式,实现读写分离、连接池化、自动路由。交付稳定可靠、自动路由、事务池化的高性能数据库服务。
惊艳的可观测性
基于 Prometheus 与 Grafana 的现代可观测性技术栈,提供无与伦比的 监控最佳实践。超过三千类监控指标描述系统的方方面面,从全局大盘到单个对象的增删改查都能一览无余。
声明式的配置管理
遵循 基础设施即代码 的理念,使用声明式配置描述整个环境。您只需告诉 Pigsty “想要什么样的数据库集群”,无需操心具体如何实现,系统会自动调整到期望状态。
模块化的架构设计
采用模块化 架构 设计,可自由组合以适应不同场景。除了核心的 PostgreSQL 模块外,还提供 Redis、MinIO、Etcd、FerretDB 等可选模块,以及对多种 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、MinIO 等周边组件,但核心始终是围绕 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 环境