Ubuntu 上部署与运维 PostgreSQL 的最佳实践
一 安装与版本选择
sudo apt update && sudo apt install -y postgresql postgresql-contribsudo add-apt-repository 'deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main',随后 sudo apt install postgresql-<版本> postgresql-contribsudo systemctl status postgresql、psql --version二 安全加固
0.0.0.0/0 的宽松策略;示例:
hostssl all all 127.0.0.1/32 md5hostssl all all 10.0.0.0/8 md5postgresql.conf 的 listen_addresses;将 port 调整为非默认端口并做好变更记录。三 配置与性能优化
shared_buffers:约 25% 内存(~2GB)effective_cache_size:约 50% 内存(~4GB)work_mem:按并发与查询复杂度设置(如 64MB 起步,避免过大导致内存压力)maintenance_work_mem:提升 VACUUM/创建索引等维护效率(如 128MB–256MB)max_connections:谨慎增加,优先使用 连接池(PgBouncer/PGPool-II) 控制实际连接数wal_buffers:适度增大(如 16MB)checkpoint_timeout 与 checkpoint_completion_target:拉长间隔并平滑刷盘(如 15min / 0.9),降低 I/O 抖动fsync=on 确保持久性;按需开启 random_page_cost 等成本参数以影响执行计划选择。四 备份与恢复
pg_dump -U <user> -h <host> -F c -b -v -f /backup/mydb_$(date +%F).dump mydbpg_restore -U <user> -h <host> -d mydb -v /backup/mydb_YYYY-MM-DD.dump五 监控维护与故障排查
VACUUM ANALYZE(或按表/分区定制);高峰期外执行重维护任务EXPLAIN (ANALYZE, BUFFERS) 优化执行计划tail -f /var/log/postgresql/postgresql-<版本>-main.logpg_stat_activity 观察活跃连接与阻塞;结合系统监控(如 sar/vmstat/iostat)排查 I/O 与内存