PostgreSQL云服务器安装配置指南
MySQL 是 PHP 项目的默认选择,但越来越多的框架(Django、Ruby on Rails、Laravel 等)在认真的项目上推荐用 PostgreSQL——对 JSON、全文搜索、窗口函数、复杂查询的支持更完善,加上严格的数据类型和约束执行,写起代码来更放心。这篇文章从安装开始,覆盖生产环境需要的基本配置和安全加固。
服务器配置建议
PostgreSQL 的内存需求取决于连接数和数据量:
| 场景 | CPU | 内存 | 硬盘 |
|---|---|---|---|
| 个人项目 / 小型应用 | 1 核 | 1G | 20GB |
| 中型业务应用 | 2–4 核 | 4–8G | 100GB |
| 大数据量 / 高并发 | 8 核+ | 16G+ | SSD 500GB+ |
我在雨云的服务器上跑 PostgreSQL,2 核 4G 的配置跑几个中小型应用完全没问题。新用户注册填优惠码 2026off 能领 5 折优惠券。
安装 PostgreSQL
# 添加官方源(获取最新版本,Ubuntu 22.04 自带的版本较旧) sudo apt install -y curl ca-certificates sudo install -d /usr/share/postgresql-common/pgdg curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail \ https://www.postgresql.org/media/keys/ACCC4CF8.asc sh -c 'echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] \ https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > \ /etc/apt/sources.list.d/pgdg.list' sudo apt update sudo apt install -y postgresql-16 # 安装 PostgreSQL 16 # 检查状态 sudo systemctl status postgresql
基本配置
安装完成后用 postgres 系统用户登录:
sudo -u postgres psql
创建数据库用户和数据库
-- 创建应用用户(不要直接用 postgres 超级用户) CREATE USER myapp WITH PASSWORD '强密码在这里'; -- 创建数据库 CREATE DATABASE myapp_db OWNER myapp; -- 如果需要超级用户权限(不推荐) -- CREATE USER admin WITH SUPERUSER PASSWORD '密码'; -- 退出 \q
创建只读用户(适合查询分析)
CREATE USER readonly WITH PASSWORD '只读用户密码'; GRANT CONNECT ON DATABASE myapp_db TO readonly; GRANT USAGE ON SCHEMA public TO readonly; GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly;
配置文件调整
主配置文件在 /etc/postgresql/16/main/postgresql.conf:
sudo nano /etc/postgresql/16/main/postgresql.conf
重要参数调整:
# 连接设置 listen_addresses = 'localhost' # 只监听本地(如需远程访问改为 '*') max_connections = 100 # 最大连接数(根据内存调整) # 内存设置(根据服务器内存调整) shared_buffers = 256MB # 建议内存的 25% effective_cache_size = 768MB # 建议内存的 75% work_mem = 4MB # 每个排序操作的内存 maintenance_work_mem = 64MB # VACUUM、CREATE INDEX 的内存 # 日志 log_destination = 'stderr' logging_collector = on log_directory = 'log' log_filename = 'postgresql-%Y-%m-%d.log' log_min_duration_statement = 1000 # 记录超过 1 秒的慢查询 # 检查点 checkpoint_completion_target = 0.9 wal_buffers = 16MB
远程访问配置
如果应用程序在另一台服务器上,需要开启远程访问:
# 修改 listen_addresses sudo sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/" \ /etc/postgresql/16/main/postgresql.conf
配置访问控制(pg_hba.conf):
sudo nano /etc/postgresql/16/main/pg_hba.conf
在文件末尾添加(只允许特定 IP 访问特定数据库):
# 格式:类型 数据库 用户 地址 认证方式 host myapp_db myapp 应用服务器IP/32 scram-sha-256
重启 PostgreSQL:
sudo systemctl restart postgresql
在云控制台安全组放行 TCP 5432(只允许应用服务器 IP,不要对公网全开)。
连接测试
# 从应用服务器测试连接
psql -h 数据库服务器IP -U myapp -d myapp_db
# 或者用 Python
python3 -c "import psycopg2; conn = psycopg2.connect('host=数据库IP dbname=myapp_db user=myapp password=密码'); print('连接成功')"常用管理命令
-- 列出所有数据库
\l
-- 切换数据库
\c myapp_db
-- 列出所有表
\dt
-- 查看表结构
\d 表名
-- 查看当前连接
SELECT * FROM pg_stat_activity;
-- 查看表大小
SELECT pg_size_pretty(pg_total_relation_size('表名'));
-- 查看数据库大小
SELECT pg_size_pretty(pg_database_size('myapp_db'));备份与恢复
# 备份单个数据库(推荐格式:custom,支持并行恢复) pg_dump -U postgres -Fc myapp_db > /backup/myapp-$(date +%Y%m%d).dump # 备份所有数据库 pg_dumpall -U postgres | gzip > /backup/all-$(date +%Y%m%d).sql.gz # 恢复 pg_restore -U postgres -d myapp_db /backup/myapp-20260427.dump # 自动备份(加入 cron) echo "0 2 * * * pg_dump -U postgres -Fc myapp_db | gzip > /backup/myapp-\$(date +\%Y\%m\%d).dump.gz" | sudo -u postgres crontab -
监控慢查询
-- 查看正在执行的慢查询
SELECT pid, now() - pg_stat_activity.query_start AS duration, query
FROM pg_stat_activity
WHERE state = 'active'
AND now() - pg_stat_activity.query_start > interval '5 seconds'
ORDER BY duration DESC;
-- 找出需要添加索引的表
SELECT schemaname, tablename, seq_scan, idx_scan,
n_live_tup, n_dead_tup
FROM pg_stat_user_tables
ORDER BY seq_scan DESC
LIMIT 10;
定期维护
# 手动执行 VACUUM(清理死元组,更新统计信息) sudo -u postgres vacuumdb --all --analyze # PostgreSQL 有 autovacuum 自动维护,通常不需要手动执行 # 查看 autovacuum 状态 sudo -u postgres psql -c "SELECT * FROM pg_stat_bgwriter;"
PostgreSQL 配置好之后,最值得花时间的是连接池(推荐 PgBouncer)和索引优化——连接数过多和缺少索引是绝大多数性能问题的根源。监控慢查询日志是找出优化点最直接的方式。
以上就是PostgreSQL云服务器安装配置指南的详细内容,更多关于PostgreSQL云服务器安装配置的资料请关注脚本之家其它相关文章!
相关文章
RockyLinux9.5部署PostgreSQL的实现步骤
本文主要介绍两种部署方式,一直接部署在 linux 服务器上,二先安装 docker,然后通过 docker 部署,具有一定的参考价值,感兴趣的可以了解一下2025-11-11
postgresql数据库设置id自增的基本方法举例例子解析
这篇文章主要给大家介绍了关于postgresql数据库设置id自增的基本方法举例,文章介绍了在PostgreSQL中实现自增ID的两种方法,分别是使用序列和触发器,序列方法简单直接,而触发器和函数方法则提供了更大的灵活性,需要的朋友可以参考下2024-11-11
Windows 安装 PostgreSQL 并安装 vector 扩展
文章详细指导了在Windows系统上安装PostgreSQL并配置Vector扩展的全过程,涵盖安装流程、环境优化、扩展部署、数据库设置及功能验证,同时提供常见问题排查和版本/内存优化建议,对PostgreSQL安装 vector 扩展相关知识感兴趣的朋友一起看看吧2025-07-07
postgresql数据库 timescaledb 时序库 把大数据量表转换为超表的问题
这篇文章主要介绍了postgresql数据库 timescaledb 时序库 把大数据量表转换为超表,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-02-02
使用python-slim镜像遇到无法使用PostgreSQL的问题及解决方法
这篇文章主要介绍了使用python-slim镜像遇到无法使用PostgreSQL的问题及解决方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧2024-08-08


最新评论