跳转到主要内容

概念

理解 Pigsty 的核心概念、架构设计与设计理念,掌握高可用、备份恢复、安全合规等关键能力。

Pigsty 是一个可移植、可扩展的开源 PostgreSQL 发行版,用于在本地环境中构建生产级数据库服务,方便进行声明式配置和自动化。它拥有庞大的生态系统,提供了一整套工具、脚本和最佳实践,让 PostgreSQL 真正达到企业级 RDS 的服务水准。

Pigsty 名字源自 PostgreSQL In Great STYle,也可理解为 Postgres,Infras,Graphics,Service,Toolbox,it’s all Yours —— 属于您的 PostgreSQL 图形化自建工具箱。您可以在 GitHub 上找到源代码,访问 官方文档 了解更多信息,或在 在线演示 中体验 Web 界面

pigsty-banner


为什么需要 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 使用基础设施即代码(IaC)的理念管理所有组件,针对大规模集群提供声明式管理能力。

Pigsty 使用 Patroni 实现了 PostgreSQL 的高可用,确保主库不可用时自动进行故障转移,由从库接管。

高可用解决"机器坏了",时间点恢复解决"数据错了"。Pigsty 基于 pgBackRest 提供开箱即用的 PITR 能力,让您可以将集群回滚至恢复窗口内的任意时刻,为人为失误与软件缺陷兜底。

Pigsty 以安全即代码的方式管理认证、授权、加密、审计与备份恢复,并提供从默认配置到生产加固的清晰路径。