English | 中文
PostgreSQL 是一个功能强大的开源对象关系型数据库系统,拥有超过 30 年的活跃开发历史,以其可靠性、健壮性和高性能而著称。本服务基于 PostgreSQL 构建,提供企业级的高可用、高性能数据库能力。
- 高可用性: 支持主备复制和自动故障转移
- 数据持久化: 基于 Kubernetes 持久化存储
- 监控告警: 集成 Prometheus 指标和告警规则
- 备份恢复: 支持逻辑备份和 WAL 归档
- 连接池: 可选的 PgBouncer 集成
- 安全认证: 多种认证方式及 SSL 支持
- 自动伸缩: 动态调整副本数量
- 资源管理: 灵活的 CPU 和内存配置
- 网络隔离: 支持主机网络和 Pod 网络模式
- 时区控制: 默认使用 Asia/Shanghai 时区
- 日志管理: 支持文件日志和标准输出日志
- 审计功能: 内置 pgaudit 扩展
- 16.1 (最新版)
- 14.13 (推荐版本)
- 14.7 (默认版本)
- 14.2
- 13.8
- 13.6
- 13.5
- 12.10
- 11.15
- PostgreSQL Operator: v1.7.1-2.8.2
- Spilo 镜像: v1.5.0-spilo
- PostgreSQL Exporter: v0.17.1-1.0.0-exporter
- PgBouncer: master-19
- 逻辑备份: v1.7.1
- 适用场景: 开发、测试和小型工作负载
- 特点: 单实例,资源占用少,部署迅速
- 拓扑: 1 个 PostgreSQL 实例
- 适用场景: 需要读写分离的生产工作负载
- 特点: 主从复制,自动故障转移
- 拓扑: 1 主 + N 副本,副本数可配置
- 适用场景: 对可用性要求严格的关键业务
- 特点: 多实例部署,自动故障转移,强一致性
- 拓扑: 3+ 实例,同步复制
┌─────────────────────────────────────────────────────────────┐
│ PostgreSQL Cluster │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Master │ │ Replica │ │ Replica │ │
│ │ (Primary) │ │ (Standby) │ │ (Standby) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Patroni (HA Manager) │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Service │ │ ConfigMap │ │ Secret │ │
│ │ (Endpoints)│ │ (Config) │ │ (Passwords) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Kubernetes Storage (PVC) │
└─────────────────────────────────────────────────────────────┘
- PostgreSQL: 核心数据库引擎
- Patroni: 高可用管理器,负责故障转移编排
- Spilo: 集成 PostgreSQL、Patroni 和工具的容器镜像
- PostgreSQL Exporter: Prometheus 指标采集器
- PgBouncer: 可选的连接池组件
- 逻辑备份: 逻辑备份工具
- 推荐拓扑: 单机模式
- 资源配置: CPU 1 核,内存 4 Gi,存储 20 Gi
- 建议版本: PostgreSQL 14.7
- 监控: 仅基础指标
- 推荐拓扑: 主备模式或高可用模式
- 资源配置: CPU 2+ 核,内存 8+ Gi,存储 100+ Gi
- 建议版本: PostgreSQL 14.13 或 16.1
- 监控: 完整指标及告警
# 推荐生产环境配置
resources:
limits:
cpu: "2" # 2 核
memory: "8Gi" # 8 GB
requests:
cpu: "1" # 1 核
memory: "4Gi" # 4 GB
# 存储配置
volume:
size: 100 # 100 GB
storageClass: "fast-ssd" # SSD 存储类# 主备配置
patroni:
ttl: 30 # 心跳超时
loop_wait: 10 # 检查间隔
retry_timeout: 10 # 重试超时
synchronous_mode: true # 启用同步模式
maximum_lag_on_failover: 33554432 # 延迟阈值# 监控和告警
monitor:
enableAlert: true # 开启告警
enableExporter: true # 启用指标导出器
exporterResource:
exporter_default_cpu_limit: 100m
exporter_default_memory_limit: 128Mi- 使用包含多种字符类型的强密码
- 为所有连接启用 SSL/TLS
- 定期轮换数据库凭据
- 遵循最小权限原则进行访问控制
- 根据工作负载调整
shared_buffers和work_mem - 启用
pg_stat_statements扩展以获取查询洞察 - 调优
checkpoint和wal参数以提升吞吐量 - 使用连接池限制连接开销
- 启用 WAL 归档以实现持续保护
- 安排定期逻辑备份
- 定期进行恢复演练
- 将备份存储在安全的异地位置
- 跟踪连接数、查询延迟和磁盘使用率
- 为关键 KPI 定义告警阈值
- 定期审查慢查询日志
- 监控各副本的复制延迟
- 按计划执行维护任务(VACUUM、ANALYZE)
- 监控数据库大小和增长趋势
- 制定容量规划
- 编写事故响应流程文档
- 复制延迟: 检查网络状况和磁盘 I/O
- 连接数过多: 增大
max_connections或使用连接池 - 磁盘不足: 清理日志或扩展持久化存储卷
- 慢查询: 审查执行计划、索引和 SQL 语句
- 主节点故障: Patroni 自动触发故障转移
- 数据损坏: 从备份恢复或重建副本
- 网络分区: 等待网络恢复或手动干预
- 先在预发布环境中演练升级
- 准备详细的升级和回滚文档
- 在业务低峰期执行变更
- 升级后执行全面测试
- 备份现有数据库
- 升级 PostgreSQL Operator
- 更新 PostgreSQL 版本配置
- 执行滚动重启或升级
- 验证升级结果
| 项目 | 描述 |
|---|---|
| OpenSaola Operator | 中间件生命周期管理的核心 Kubernetes Operator |
| saola-cli | 中间件管理命令行工具 |
| MySQL | MySQL 数据库服务包 |
| Kafka | Apache Kafka 流处理平台服务包 |
| Redis | Redis 内存数据存储服务包 |
| Elasticsearch | Elasticsearch 搜索引擎服务包 |
| ZooKeeper | Apache ZooKeeper 协调服务包 |
| RabbitMQ | RabbitMQ 消息代理服务包 |
注意: 部署至生产环境前,请务必在测试环境中充分验证配置和功能。