href="/zh/docs/intro/distro">
将 PostgreSQL 用于一切! \
用组装的超能力构建数据基础设施!
这是本节的多页打印视图。 .
关键特性
像专家一样自托管 PostgreSQL! \
无需专业知识即可运营生产级服务
开箱即用地获得 **437** PG 扩展的超能力
自愈架构和无忧服务访问
在 PGSQL 之上模拟 MySQL、Mongo、Oracle、SQL Server
自动配置备份和简化的 PITR
用代码 / 数据描述和实现一切
使用 Grafana 和 Prometheus 技术栈的预配置仪表板
将 Postgres 转变为全功能的后端即服务
使用 HA PG 强化软件:Gitlab、Odoo、Dify 等
1 - PG 扩展
Pigsty 允许您通过三个组件来利用 PostgreSQL 扩展生态系统的协同超能力:
另外查看我们的博客文章:PostgreSQL is eating the Database World
扩展
TIME
GIS
RAG
FTS
OLAP
FEAT
LANG
TYPE
UTIL
FUNC
ADMIN
STAT
SEC
FDW
SIM
ETL
| 类别 | 数量 | 描述 |
|---|---|---|
| TIME | 11 | TimescaleDB、版本控制与时态表、Crontab、异步与后台作业调度器 |
| GIS | 20 | 地理空间数据类型、操作符和索引、六边形索引、OGR 数据 FDW、GeoIP 与 MobilityDB |
| RAG | 10 | 具有 IVFFLAT、HNSW、DiskANN 索引的向量数据库、SQL 接口中的 AI 和 ML、相似性函数 |
| FTS | 20 | ElasticSearch 替代品,具有 BM25、2-gram/3-gram 模糊搜索、Zhparser 与 Hunspell 分词词典 |
| OLAP | 13 | DuckDB 与 FDW 和 PG Lakehouse 集成、从文件/S3 访问 Parquet、使用 Citus/Partman/PlProxy 分片 |
| FEAT | 56 | AGE 的 OpenCypher、GraphQL、JsonSchema、Hints 与 Hypo Index、HLL、Rum、IVM、ChemRDKit 和消息队列 |
| LANG | 31 | 开发、测试、打包和交付用各种 PL/语言编写的存储过程:Java、Js、Lua、R、Sh、PRQL |
| TYPE | 37 | 专用新数据类型如:prefix、sember、uint、SIUnit、RoaringBitmap、Rational、Sphere、Hash、RRule |
| UTIL | 31 | 实用工具如发送 HTTP 请求、执行 gzip/zstd 压缩、发送邮件、正则表达式、ICU、编码、文档、加密 |
| FUNC | 43 | 函数如 ID 生成器、聚合、草图、向量函数、数学函数和摘要函数 |
| ADMIN | 36 | 膨胀控制、脏读、缓冲区检查、DDL 生成、校验和验证、权限、优先级、目录的实用工具 |
| STAT | 34 | 可观测性目录、监控指标和视图、统计、查询计划、等待采样、慢日志 |
| SEC | 26 | 审计日志、强制密码、保持机密、TDE、SM 算法、登录钩子、日志错误、扩展白名单 |
| FDW | 22 | FDW 开发的包装器和 Multicorn、访问其他 DBMS:MySQL、Mongo、SQLite、MSSQL、Oracle、HDFS、DB2 |
| SIM | 16 | 协议模拟和异构 DBMS 兼容性:Oracle、MSSQL、DB2、MySQL、Memcached 和 Babelfish |
| ETL | 17 | 逻辑复制、解码、protobuf/JSON/Mongo 格式的 CDC、复制和加载及比较 Postgres 数据库 |
仓库
Pigsty 有一个仓库,在 10 个主流 Linux 发行版 上提供 200+ 个额外的 PostgreSQL 扩展。 它被设计为与官方 PostgreSQL 全球开发组(PGDG)仓库一起工作。
您可以使用 pig CLI 工具启用 pigsty infra 和 pgsql 仓库,或手动将它们添加到您的系统:
所有 RPM / DEB 包都使用 Pigsty 仓库中的 GPG 密钥 指纹(B9BD8B20)签名。
包管理器
“Postgres 安装天才,PostgreSQL 生态系统缺失的扩展包管理器”
在几秒钟内 开始使用 PIG:
然后就可以使用了,假设您想安装 pg_duckdb 扩展:
2 - PG 内核分支
Pigsty 支持各种 PostgreSQL 内核和兼容分支, 使您能够模拟不同的数据库系统,同时利用 PostgreSQL 的生态系统。 每个内核提供独特的功能和兼容性层。
数据库内核
带有 437 个扩展插件的原生 PostgreSQL 内核
PG 原生分布式扩展
SQL Server 线缆协议兼容
Oracle 语法和 PL/SQL 兼容
MySQL 线缆协议兼容
透明加密内核
OLTP 优化的云原生存储引擎
类 Aurora RAC 风味的信创内核
后端即服务,自托管 Firebase
MongoDB 线缆协议兼容的内核
选择合适的内核
灵活内核:为您的特定用例选择合适的内核 - 无论您需要 MSSQL 兼容性、Oracle 功能还是水平扩展能力。
| 内核 | 关键特性 | 描述 |
|---|---|---|
| PostgreSQL | 原始版本 | 原版 PostgreSQL 配备 437 扩展 |
| Citus | 水平扩展 | 通过原生扩展实现分布式 PostgreSQL |
| WiltonDB | SQL Server 迁移 | SQL Server 线协议兼容 |
| IvorySQL | Oracle 迁移 | Oracle 语法和 PL/SQL 兼容 |
| OpenHalo | MySQL 迁移 | MySQL 线协议兼容 |
| Percona | 透明数据加密 | 带有 pg_tde 的 Percona 发行版 |
| FerretDB | MongoDB 迁移 | MongoDB 线协议兼容 |
| OrioleDB | OLTP 优化 | Zheap,无膨胀,S3 存储 |
| PolarDB | Aurora 风格 RAC | RAC,中国国产合规 |
| Supabase | 后端即服务 | 基于 PostgreSQL 的 BaaS,Firebase 替代方案 |
| Cloudberry | MPP 数厂与数据分析 | 大规模并行处理数据仓库(等待2.0GA) |
Citus(分布式)
Citus 原生分布式
Citus 将 PostgreSQL 转换为分布式数据库系统,支持跨多个节点的水平扩展。使用 Pigsty 部署原生 HA Citus 集群,获得更好的吞吐量和性能。
关键特性
- 分布式表:自动在工作节点间分片表
- 分布式查询:在整个集群上执行查询
- 高可用性:内置复制和故障转移功能
- 实时分析:处理事务性和分析性工作负载
- Postgres 兼容性:保持完整的 PostgreSQL 功能兼容性
使用场景
- 需要水平扩展的多租户 SaaS 应用程序
- 大数据集上的实时分析
- 高吞吐量 OLTP 工作负载
- 需要扩展超出单节点限制的应用程序
需要规划:适当的分片键选择对于优化性能和避免跨分片查询至关重要。
Babelfish(MSSQL)
SQL Server 兼容
Beta
使用 WiltonDB 和 Babelfish 创建 SQL Server 兼容的 PostgreSQL 集群,提供与 Microsoft SQL Server 的协议级兼容性。
关键特性
- T-SQL 支持:原生执行 T-SQL 查询
- 协议兼容性:使用 SQL Server 驱动程序和工具连接
- 存储过程:支持 T-SQL 存储过程和函数
- 数据类型:与 SQL Server 数据类型和行为兼容
- 迁移工具:简化从 SQL Server 环境的迁移
使用场景
- 将传统 SQL Server 应用程序迁移到 PostgreSQL
- 需要 SQL Server 兼容性的多数据库环境
- 在保持应用程序兼容性的同时降低成本
- 从 SQL Server 迁移到开源替代方案的云迁移
迁移路径:非常适合希望降低许可成本同时保持现有 SQL Server 应用程序兼容性的组织。
IvorySQL(Oracle)
Oracle 兼容
社区版
使用由 HighGo 开源的 IvorySQL 内核运行 Oracle 兼容的 PostgreSQL 集群,提供 Oracle 语法和功能兼容性。
关键特性
- Oracle 语法支持:支持 Oracle SQL 语法和 PL/SQL
- 数据类型兼容:Oracle 数据类型映射和行为
- 包支持:Oracle 风格的包和过程
- 内置函数:Oracle 兼容的内置函数库
- 迁移友好:简化从 Oracle 的迁移过程
使用场景
- Oracle 到 PostgreSQL 的数据库迁移
- 降低 Oracle 许可成本
- 遗留 Oracle 应用程序现代化
- 需要 Oracle 功能的新项目
OpenHalo(MySQL)
MySQL 兼容
实验性
OpenHalo 提供 MySQL 协议兼容性,允许 MySQL 应用程序和工具连接到 PostgreSQL。
关键特性
- MySQL 协议:与 MySQL 客户端和驱动程序兼容
- SQL 方言:支持 MySQL 特定的 SQL 语法
- 函数映射:MySQL 函数到 PostgreSQL 等效项的映射
- 连接器支持:与现有 MySQL 工具和连接器工作
OrioleDB(云原生)
云原生存储
开发中
OrioleDB 是一个云原生存储引擎,为现代云环境优化,提供无膨胀存储和 S3 集成。
关键特性
- 无膨胀存储:消除 PostgreSQL 传统的膨胀问题
- 云存储集成:原生 S3 存储支持
- OLTP 优化:为事务性工作负载优化
- 现代架构:为云原生环境设计
PolarDB PG(共享存储)
共享存储
企业版
PolarDB for PostgreSQL 提供类似 Aurora 的共享存储架构,具有中国国产化特性。
关键特性
- 共享存储:计算与存储分离架构
- 读写分离:多个只读实例共享存储
- 快速扩容:快速添加只读实例
- 国产化:符合中国信创要求
Supabase(BaaS)
后端即服务
开源
Supabase 将 PostgreSQL 转换为完整的后端即服务平台,提供 Firebase 的开源替代方案。
关键特性
- 实时数据库:实时订阅和同步
- 认证服务:内置用户认证系统
- 存储服务:文件存储和 CDN
- 边缘函数:无服务器函数支持
- 仪表板:Web 管理界面
Greenplum(数据仓库)
MPP 架构
企业版
Greenplum 是基于 PostgreSQL 的大规模并行处理数据仓库,专为分析性工作负载设计。
关键特性
- MPP 架构:大规模并行处理
- 列式存储:优化分析查询性能
- 分布式计算:跨节点并行查询执行
- ETL 工具:内置数据加载和转换工具
- 企业功能:备份、恢复和高可用性
通过选择合适的 PostgreSQL 内核分支,您可以在保持 PostgreSQL 生态系统优势的同时获得特定的功能和兼容性。每个内核都为不同的使用场景和迁移需求提供了解决方案。
3 - 可观测性基础设施
Pigsty 提供 无与伦比的可观测性,具有基于行业最佳实践构建的现代监控堆栈。 自动监控每个组件,具有 3000+ 指标、30+ 仪表板。

完整洞察:从高级集群健康到单个表统计的所有内容进行监控。完整洞察您基础设施的过去、现在和未来。
架构概述

Pigsty 的可观测性基础设施在一个连贯的、生产就绪的堆栈中利用经过实战考验的开源组件:
具有高级交互式可视化的仪表板
具有强大查询语言的时间序列存储
具有基于标签索引的集中式日志记录
告警聚合、管理和升级
服务架构
graph TB
subgraph "Observability Stack"
Grafana[Grafana :3000]
Prometheus[Prometheus :9058]
Loki[Loki :3100]
AlertManager[AlertManager :9059]
Pushgateway[Pushgateway :9091]
Blackbox[Blackbox :9115]
end
subgraph "Data Sources"
PG[(PostgreSQL)]
Node[Node Metrics]
Redis[(Redis)]
MinIO[(MinIO)]
end
subgraph "Exporters"
PGExp[pg_exporter]
NodeExp[node_exporter]
RedisExp[redis_exporter]
MinIOExp[minio_exporter]
end
PG --> PGExp
Node --> NodeExp
Redis --> RedisExp
MinIO --> MinIOExp
PGExp --> Prometheus
NodeExp --> Prometheus
RedisExp --> Prometheus
MinIOExp --> Prometheus
Prometheus --> Grafana
Prometheus --> AlertManager
Loki --> Grafana监控仪表板
多层级仪表板层次结构
Pigsty 提供按逻辑下钻层次结构组织的 26+ PostgreSQL 仪表板:
目的:整个环境的高级运营可见性 受众:运营团队、管理仪表板
目的:集群范围的 PostgreSQL 性能和健康 受众:数据库管理员、SRE 团队
目的:深入了解单个 PostgreSQL 实例 受众:数据库开发人员、性能工程师
目的:应用级数据库性能分析 受众:应用程序开发人员、数据库分析师
仪表板功能
无缝探索 从概览到详细信息,具有上下文链接
灵活的时间窗口 从实时到数月的历史分析
动态过滤 按集群、实例、数据库或自定义标签
可视化告警关联 与指标和告警详情的直接链接
Grafana 部署
增强的 Grafana 堆栈
Pigsty 使用强大的插件和数据源扩展 Grafana,用于高级分析:
目的:监控仪表板的基本可视化功能
目的:用于复杂数据分析的丰富交互式可视化
目的:连接到传统指标之外的多样化数据源
目的:为 PostgreSQL 环境优化的定制用户体验
配置和定制
Prometheus 堆栈
完整的监控生态系统
Pigsty 部署完整的 Prometheus 生态系统以实现全面的可观测性:
步骤 1
Prometheus 服务器
核心指标数据库 具有高级查询和存储功能
步骤 2
AlertManager
智能告警路由 具有抑制、分组和升级功能
步骤 3
Pushgateway
批处理作业指标收集 用于短暂工作负载和 cron 作业
步骤 4
Blackbox Exporter
网络连接监控 具有 HTTP、TCP 和 ICMP 探测
预配置告警规则
pg_exporter:高级 PostgreSQL 监控
自定义指标引擎
Pigsty 的 pg_exporter 是一个高度可定制的 PostgreSQL 指标收集器,支持 所有 PostgreSQL 版本,具有细粒度指标控制:
优势:灵活、轻量级且高度可配置
好处:异构 PostgreSQL 环境的单一 exporter
主机与基础设施监控
Pigsty v3.7 在受管节点上安装 node_exporter。启用相应模块后,会将 Node、
HAProxy、Keepalived、Nginx、Etcd、MinIO、Redis、PostgreSQL、PgBouncer 与
pgBackRest 目标注册到 Prometheus。端口和开关以 v3.7 标签中的角色默认值及
各模块参数页为准。
外部数据库监控
pgsql-monitor.yml 可注册现有 PostgreSQL 或云 RDS。请提供仅具有必要
pg_monitor 权限的监控连接串;Pigsty 只注册 pg_exporter 与 Grafana 数据源,
不会置备或修改被监控数据库。
数据分析与可视化平台
Grafana 既可查询 Prometheus 指标,也可查询 PostgreSQL 数据。内置仪表板通过 变量和 URL 链接实现下钻与上卷;ECharts 等随包提供的插件也可展示应用或 业务数据。
低代码应用开发
Grafana 面板可结合 PostgreSQL 查询构建内部运维视图。这属于可视化能力, 并不是独立的 Pigsty 部署模块或应用 API。
可复用基础设施
infra.yml 可以独立于 PGSQL 部署 INFRA。Nginx、DNSMasq、Prometheus、
AlertManager、Grafana 与 Loki 等服务均由已记录的 *_enabled 参数控制,
因而可以复用既有基础设施或与其共存。
最佳实践
- 控制指标基数,并根据可用磁盘设置保留周期。
- 备份 Grafana 配置,定期验证告警通知渠道。
- 监控端点暴露到可信网络之外时,应配置访问控制与 HTTPS。
- 监控监控系统本身,并定期检查存储增长。
限制与注意事项
v3.7 的 Prometheus 与 Loki 默认是单节点服务。高指标基数、长保留周期和复杂 仪表板需要额外容量规划。外部长周期存储和高可用监控架构属于人工集成, 不是 v3.7 内置模块。
4 - 高可用性
Pigsty 使用 Patroni 为 PostgreSQL 实现高可用性,确保自动故障转移。

主节点故障 RTO ≈ 30s,RPO < 1MB,副本故障 RTO≈0(重置当前连接)
概述
Pigsty 的 PostgreSQL 集群具有由 Patroni、Etcd 和 HAProxy 支持的内置高可用性。
当您在 PostgreSQL 集群中有两个或更多实例时,您就能够从硬件故障中自愈,无需任何进一步配置——只要集群中的任何实例存活,集群就能提供服务。客户端只需连接到集群中的任何节点即可获得完整服务,无需担心复制拓扑变化。
默认情况下,主节点故障的恢复时间目标(RTO)约为 30s ~ 60s,数据恢复点目标(RPO)< 1MB;对于备用节点故障,RPO = 0,RTO ≈ 0(瞬时)。在一致性优先模式下,保证故障转移期间零数据丢失:RPO = 0。这些指标可以根据您的实际硬件条件和可靠性要求 按需配置。
Pigsty 集成了 HAProxy 负载均衡器进行自动流量切换,为客户端提供多种访问方法,如 DNS/VIP/LVS。除了偶发的中断外,故障转移和切换对业务端几乎不可感知,这意味着应用程序不需要修改连接字符串或重启。
关键指标
高可用性解决的问题
高可用性解决关键的运营挑战:
提升可用性:RPO ≈ 0,RTO < 30s,增强数据保护
无缝维护:最小化维护窗口,运营便利
自愈能力:无需人工干预即可从硬件故障中自动恢复
读扩展:在备用实例间分布只读查询
具体优势
- 增强数据安全性:将数据安全 CIA 的可用性方面提升到新高度
- 滚动维护能力:实现最小停机时间的无缝维护
- 硬件故障恢复:无需人工干预即可从硬件故障中自愈
- 负载共享:只读请求可以分布在备用实例间
高可用性的成本
实施 HA 会引入某些权衡和要求:
基础设施要求:HA 需要至少 3 个节点 和额外的基础设施依赖。
资源要求
- 最小集群规模:至少 3 个节点以实现适当的共识
- 额外基础设施:需要共识存储(Etcd)和负载均衡器
- 资源开销:额外的 CPU、内存和网络资源
- 运营复杂性:增加的监控和管理要求
限制
高可用性 无法防止:
- 人为错误和操作失误
- 导致数据损坏的软件缺陷
- 逻辑数据删除或损坏
对于这些场景,需要额外的恢复策略:
- 延迟集群 防护逻辑损坏
- 时间点恢复 进行细粒度数据恢复
- 定期备份 用于灾难恢复场景
架构
Pigsty 的 HA 架构利用多组件设计消除单点故障:
集群管理:编排 PostgreSQL 进程并处理自动故障转移
共识存储:提供分布式配置和领导者选举
负载均衡器:路由流量并提供服务发现
虚拟 IP:用于无缝连接的可选第二层 VIP 绑定
组件角色
集群编排器
- 管理 PostgreSQL 服务器进程
- 处理自动故障转移和切换
- 监控集群健康和拓扑
- 配置流复制
- 提供集群管理 REST API
分布式配置存储
- 存储集群配置和状态
- 提供领导者选举机制
- 确保所有节点的一致视图
- 优雅处理网络分区
- 维护集群成员信息
流量路由器和负载均衡器
- 将读/写流量路由到适当的节点
- 为数据库实例提供健康检查
- 提供多个服务端点
- 处理连接池和负载分布
- 支持 SSL 终止和连接限制
虚拟 IP 管理
- 管理第二层虚拟 IP 地址
- 提供无缝客户端连接
- 在故障转移期间处理 VIP 迁移
- 支持多个 VIP 接口
- 用于简化客户端访问的可选组件
实现
Pigsty 的 HA 实现遵循 PostgreSQL 集群的成熟模式:
复制架构
步骤 1
流复制
PostgreSQL 使用内置流复制在主节点和备用节点之间进行数据同步。
步骤 2
基于共识的领导
Patroni 使用 Etcd 进行分布式共识来选举集群领导者并管理拓扑变化。
步骤 3
自动故障转移
当主节点失败时,Patroni 自动提升最新的备用节点成为新的主节点。
步骤 4
流量重路由
HAProxy 检测拓扑变化并自动将流量路由到新的主实例。
故障场景
主节点故障处理过程
- 检测:Patroni 检测主节点故障(15-30 秒)
- 领导者选举:Etcd 协调新领导者选择
- 提升:最新的备用节点被提升为主节点
- 重新配置:剩余的备用节点重新配置到新主节点
- 流量切换:HAProxy 将流量重定向到新主节点
写服务中断:故障转移过程中 15-30 秒
备用节点故障处理过程
- 检测:立即检测到备用节点故障
- 流量重路由:HAProxy 从池中移除故障节点
- 服务连续性:只读查询在剩余备用节点上继续
- 自动恢复:节点恢复时自动重新加入集群
最小影响:只读查询仅经历短暂中断
网络分区处理
- 防止脑裂:Etcd 共识防止多个主节点
- 仲裁要求:需要大多数节点进行操作
- 优雅降级:少数分区中的只读模式
- 自动恢复:分区愈合时恢复正常操作
仲裁依赖:需要大多数共识节点保持运行
权衡
Pigsty 提供可配置参数来平衡恢复速度和数据一致性:
恢复时间目标(RTO)
pg_rto 参数控制故障转移时间和敏感性:
较低的 RTO 值:
- ✅ 更快的故障转移响应
- ✅ 减少服务中断
- ❌ 更高的误报风险
- ❌ 可能导致不必要的故障转移
较高的 RTO 值:
- ✅ 更稳定,较少误报
- ✅ 对网络故障有更好的容忍度
- ❌ 更长的服务中断
- ❌ 对真实故障的延迟响应
恢复点目标(RPO)
pg_rpo 参数限制故障转移期间的潜在数据丢失:
较低的 RPO 值:
- ✅ 更好的数据一致性
- ✅ 最小的数据丢失风险
- ❌ 可能延迟故障转移
- ❌ 可能影响可用性
较高的 RPO 值:
- ✅ 更快的故障转移过程
- ✅ 更好的可用性
- ❌ 更多数据丢失的可能性
- ❌ 一致性权衡
配置示例
使用场景:金融系统、关键交易数据
使用场景:高流量应用、读重型工作负载
使用场景:大多数生产环境
网络质量影响
网络条件显著影响 HA 行为:
- 高质量网络:可以安全使用较低的 RTO 值
- 不稳定网络:需要较高的 RTO 以防止误报
- WAN 部署:需要仔细调整超时参数
- 本地网络:可以优化更快的故障转移
监控和可观测性
Pigsty 为 HA 集群健康提供全面监控:
关键指标
监控集群拓扑、领导者状态和成员健康
跟踪所有副本的复制延迟和同步状态
记录并分析故障转移事件及其影响
监控查询性能和连接健康
仪表板集成
Pigsty 包含用于 HA 监控的预构建 Grafana 仪表板:
- 集群概览:实时集群拓扑和健康
- 复制监控:延迟指标和同步状态
- 故障转移分析:历史故障转移事件和时间
- 性能指标:正常和故障转移场景下的查询性能
最佳实践
部署建议
反亲和性:在不同的物理主机、机架或可用区部署集群节点。
- 硬件多样性:使用不同的硬件配置以避免常见故障模式
- 网络冗余:确保集群节点间有多条网络路径
- 存储考虑:使用本地存储获得最佳性能,特定用例使用共享存储
- 监控设置:在投产前实施全面监控
运营指南
- 定期测试:在非生产环境中执行受控的故障转移测试
- 容量规划:为故障转移场景适当调整集群节点大小
- 备份策略:维护独立于 HA 设置的定期备份
- 文档:保持紧急程序运行手册的更新
常见陷阱
避免这些常见错误:
- 节点间网络带宽不足
- 复制延迟监控不充分
- 不定期测试故障转移程序
- 防火墙配置不正确
总结
Pigsty 的高可用性解决方案提供:
- 自动故障转移,RTO 不到一分钟
- 可配置一致性,具有 RPO 控制
- 自愈能力,用于硬件故障
- 负载均衡,用于读扩展
- 最小运营开销,具有自动化管理
Patroni、Etcd 和 HAProxy 的组合创建了一个强大的、生产就绪的 HA 解决方案,自动处理大多数故障场景,同时提供基于特定要求调整行为的灵活性。
高可用性不仅仅是技术——它是构建您的业务可以依赖的弹性系统。
5 - 灾难恢复
时间点恢复(PITR)允许将 PostgreSQL 集群回滚到过去的任何特定时刻,防止软件缺陷或人为错误导致的数据丢失。Pigsty 使用 pgBackRest 进行 PITR,具有可配置的备份策略,使用本地文件系统或 MinIO 等对象存储。

数据库的时间旅行:将您的集群回滚到任何时间点,防止高可用性无法解决的软件缺陷、人为错误和数据损坏场景。
概述
Pigsty 提供 企业级时间点恢复,具有零配置设置、自动备份和灵活的恢复选项。基于 pgBackRest 构建,支持 MinIO/S3,防护数据损坏、人为错误和逻辑灾难。
通过连续 WAL 归档最小化恢复点目标
增强数据完整性保护,防止损坏
通过灵活的恢复选项改进灾难恢复能力
PITR 工作原理
PITR 需要两个关键组件协同工作以实现时间点恢复:
基础备份 [#base-backups]
使用 pgBackRest 创建数据库集群快照,支持多种备份类型:
- **完整备份**:完整的数据库集群快照
- **增量备份**:仅自上次备份以来的变更
- **差异备份**:自上次完整备份以来的变更
- **计划备份**:通过 Crontab 配置的定期备份
WAL 归档 [#wal-archiving]
连续归档预写日志(WAL)段文件:
- **连续归档**:实时 WAL 文件保存
- **自动管理**:WAL 文件和清理自动处理
- **可选功能**:如果不需要 PITR 可以禁用
实现
Pigsty 提供两种默认备份策略,具有灵活的配置选项:
本地文件系统策略 [#local-filesystem-strategy]
- **频率**:每日完整备份
- **存储**:本地文件系统存储
- **使用场景**:单节点或本地开发环境
MinIO/S3 策略 [#minio-s3-strategy]
- **频率**:每周完整备份,每日增量备份
- **存储**:对象存储(MinIO、S3)
- **使用场景**:具有分布式存储的生产环境
配置选项
备份配置非常灵活,可以指定选项:
- 仓库类型:本地、S3 或其他支持的后端
- 保留策略:保留备份的时间长度
- 加密:安全备份存储
- 存储位置:多个备份目标
恢复选项
恢复操作应谨慎执行,因为它们将替换当前的数据库状态。
恢复命令允许恢复到各种时间点:
步骤 1
### 最新 WAL 归档 [#latest-wal-archive]
恢复到 WAL 归档中可用的最近点:
```bash
pg-pitr
```
步骤 2
### 特定时间戳 [#specific-timestamp]
恢复到确切的时间点:
```bash
pg-pitr --time="2022-12-30 14:44:44+08"
```
步骤 3
### 命名恢复点 [#named-restore-point]
恢复到之前创建的命名点:
```bash
pg-pitr --name="my-restore-point"
```
步骤 4
### 特定 LSN 或事务 ID [#specific-lsn-or-transaction-id]
恢复到特定的日志序列号或事务:
```bash
pg-pitr --lsn="0/1234567"
pg-pitr --xid="12345"
```
虽然 PITR 对数据恢复很强大,但理想情况下应该与高可用性解决方案结合使用,以全面保护数据免受逻辑和物理故障的影响。
6 - 基础设施即代码
Pigsty 提供 声明式 接口:在 配置 文件中描述一切,Pigsty 使用幂等的 playbooks 将其操作到期望的状态。它的工作原理类似于 Kubernetes CRD 和 Operator,但适用于任何节点上的数据库和基础设施:裸机或虚拟机。
基础设施即代码,数据库即代码:声明式 API 和幂等 Playbooks,GitOPS 工作得如魅力般。
声明模块
您可以在单个节点上声明模块:
并使用 playbooks 应用:
声明集群
要创建具有流复制的三节点 HA postgres 集群:
并使用以下命令应用:
声明集群内部
您可以深度定制数据库集群:
声明访问控制
定义高级访问控制规则:
Citus 分布式集群
声明一个水平分布的 Citus 集群:
Redis 集群
声明不同类型的 Redis 集群:
Etcd 集群
声明一个 3 节点 etcd 共识集群:
MinIO 集群
声明一个 3 节点 MinIO 对象存储集群:
Pigsty 使您能够声明式地描述整个基础设施并通过代码管理它,为您的数据库和基础设施操作提供一致性、可重复性和可扩展性。
7 - 无容器
Pigsty 运行在裸 Linux 上,我们支持主流 Linux 发行版,如 EL / Debian / Ubuntu,以及兼容的 Linux 发行版,如 Rocky Linux、AlmaLinux 等……
我们这样做是有目的的。为每个主版本 x PG 版本 x 操作系统架构编译和打包所有 postgres 相关包和数百个扩展到 RPM/DEB 是困难的……
但我相信这是正确的做法。所以我们不走 Docker、Podman 或 Kubernetes 这样的捷径。
8 - 应用模板
自托管 Supabase
运行 Odoo 开源 ERP
运行 Dify AI 工作流
运行官方管理 GUI 工具
