Skip to content

Latest commit

 

History

History
229 lines (186 loc) · 8.32 KB

File metadata and controls

229 lines (186 loc) · 8.32 KB

PostgreSQL 数据库服务

English | 中文

描述

PostgreSQL 是一个功能强大的开源对象关系型数据库系统,拥有超过 30 年的活跃开发历史,以其可靠性、健壮性和高性能而著称。本服务基于 PostgreSQL 构建,提供企业级的高可用、高性能数据库能力。

功能

核心功能

  • 高可用性: 支持主备复制和自动故障转移
  • 数据持久化: 基于 Kubernetes 持久化存储
  • 监控告警: 集成 Prometheus 指标和告警规则
  • 备份恢复: 支持逻辑备份和 WAL 归档
  • 连接池: 可选的 PgBouncer 集成
  • 安全认证: 多种认证方式及 SSL 支持

高级特性

  • 自动伸缩: 动态调整副本数量
  • 资源管理: 灵活的 CPU 和内存配置
  • 网络隔离: 支持主机网络和 Pod 网络模式
  • 时区控制: 默认使用 Asia/Shanghai 时区
  • 日志管理: 支持文件日志和标准输出日志
  • 审计功能: 内置 pgaudit 扩展

支持版本

PostgreSQL 版本

  • 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. 单机模式

  • 适用场景: 开发、测试和小型工作负载
  • 特点: 单实例,资源占用少,部署迅速
  • 拓扑: 1 个 PostgreSQL 实例

2. 主备模式

  • 适用场景: 需要读写分离的生产工作负载
  • 特点: 主从复制,自动故障转移
  • 拓扑: 1 主 + N 副本,副本数可配置

3. 高可用模式

  • 适用场景: 对可用性要求严格的关键业务
  • 特点: 多实例部署,自动故障转移,强一致性
  • 拓扑: 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

最佳实践

1. 安全性

  • 使用包含多种字符类型的强密码
  • 为所有连接启用 SSL/TLS
  • 定期轮换数据库凭据
  • 遵循最小权限原则进行访问控制

2. 性能调优

  • 根据工作负载调整 shared_bufferswork_mem
  • 启用 pg_stat_statements 扩展以获取查询洞察
  • 调优 checkpointwal 参数以提升吞吐量
  • 使用连接池限制连接开销

3. 备份策略

  • 启用 WAL 归档以实现持续保护
  • 安排定期逻辑备份
  • 定期进行恢复演练
  • 将备份存储在安全的异地位置

4. 监控告警

  • 跟踪连接数、查询延迟和磁盘使用率
  • 为关键 KPI 定义告警阈值
  • 定期审查慢查询日志
  • 监控各副本的复制延迟

5. 运维管理

  • 按计划执行维护任务(VACUUM、ANALYZE)
  • 监控数据库大小和增长趋势
  • 制定容量规划
  • 编写事故响应流程文档

故障处理

常见问题

  1. 复制延迟: 检查网络状况和磁盘 I/O
  2. 连接数过多: 增大 max_connections 或使用连接池
  3. 磁盘不足: 清理日志或扩展持久化存储卷
  4. 慢查询: 审查执行计划、索引和 SQL 语句

恢复步骤

  1. 主节点故障: Patroni 自动触发故障转移
  2. 数据损坏: 从备份恢复或重建副本
  3. 网络分区: 等待网络恢复或手动干预

升级

策略

  • 先在预发布环境中演练升级
  • 准备详细的升级和回滚文档
  • 在业务低峰期执行变更
  • 升级后执行全面测试

流程

  1. 备份现有数据库
  2. 升级 PostgreSQL Operator
  3. 更新 PostgreSQL 版本配置
  4. 执行滚动重启或升级
  5. 验证升级结果

相关项目

项目 描述
OpenSaola Operator 中间件生命周期管理的核心 Kubernetes Operator
saola-cli 中间件管理命令行工具
MySQL MySQL 数据库服务包
Kafka Apache Kafka 流处理平台服务包
Redis Redis 内存数据存储服务包
Elasticsearch Elasticsearch 搜索引擎服务包
ZooKeeper Apache ZooKeeper 协调服务包
RabbitMQ RabbitMQ 消息代理服务包

注意: 部署至生产环境前,请务必在测试环境中充分验证配置和功能。