Skip to content
返回部署

部署 PostgreSQL

自托管 Postgres,Docker、调优、备份和高可用。

平台高级

为什么

自托管 Postgres 完全控制配置、扩展和调优。Docker + pgBackRest + repmgr 提供 HA、PITR 和扩展支持,托管不一定有。

平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。

何时使用

自定义扩展、大规模成本优化和合规用自托管 Postgres。简单优先托管(RDS、Supabase)。

如何做

1. Docker — postgres:16 镜像加 volume 存数据 2. 配置 — postgresql.conf 调优(shared_buffers、work_mem) 3. 初始化 — init.sql 放 docker-entrypoint-initdb.d 4. 备份 — pg_dump 或 pgBackRest 增量 5. HA — repmgr 或 Patroni 复制 + 故障转移 6. 监控 — pg_stat_statements、pg_stat_activity 7. 扩展 — CREATE EXTENSION 装 pgvector、postgis

示例

# docker-compose.yml services: postgres: image: postgres:16 environment: POSTGRES_DB: mydb POSTGRES_PASSWORD: secret volumes: - pgdata:/var/lib/postgresql/data - ./init.sql:/docker-entrypoint-initdb.d/init.sql command: > postgres -c shared_buffers=256MB -c work_mem=16MB -c max_connections=200 volumes: pgdata: # 备份 docker exec mydb pg_dump -U postgres mydb | gzip > backup.sql.gz # 恢复 gunzip < backup.sql.gz | docker exec -i mydb psql -U postgres mydb

常见问题

  • ⚠shared_buffers 过低 — 默认 128MB,生产设 RAM 25%
  • ⚠无备份 — pg_dump 不够,用 pgBackRest 做 PITR
  • ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致

最佳实践

  • ✓shared_buffers 设 RAM 25% — 最大单项性能提升
  • ✓备份用 pgBackRest — 增量、压缩、PITR
  • ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求

常见问题解答