添加官方仓库并安装​

​禁用系统默认模块​​(避免旧版冲突):

sudo dnf -qy module disable postgresql

​添加 PostgreSQL 官方仓库​​:

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

安装所需版本​​(以 PostgreSQL 16 为例):

sudo dnf install -y postgresql16-server postgresql16-contrib

提示:替换 16 可安装其他版本(如 postgresql15-server)。

初始化数据库与启动服务​

初始化数据库​​:

sudo /usr/pgsql-16/bin/postgresql-16-setup initdb

​启动服务并设开机自启​​:

sudo systemctl enable --now postgresql-16

配置远程访问与防火墙​

修改监听地址​​(postgresql.conf):

sudo vi /var/lib/pgsql/16/data/postgresql.conf

修改参数:

listen_addresses = '*'  # 允许所有IP连接
port = 5432             # 默认端口

配置客户端访问权限​​(pg_hba.conf):

sudo vi /var/lib/pgsql/16/data/pg_hba.conf

添加行(允许所有IPv4/IPv6通过密码连接):

host    all             all             0.0.0.0/0               md5
host    all             all             ::/0                    md5

​开放防火墙端口​​(或直接在云服务器安全组里放行):

sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --reload

重启服务生效​​:

sudo systemctl restart postgresql-16

注意:生产环境建议限制IP范围(如 192.168.1.0/24)。

设置用户与数据库​

​切换至 postgres 用户​​:

sudo -iu postgres

登录 PostgreSQL 控制台​​:

psql

创建用户并授权​​:

CREATE USER deploy_user WITH PASSWORD 'StrongPass!123' LOGIN CREATEDB;
CREATE DATABASE app_db OWNER deploy_user;
GRANT ALL PRIVILEGES ON DATABASE app_db TO deploy_user;

修改超级用户密码​​(可选):

ALTER USER postgres PASSWORD 'NewAdminPass!';

性能优化关键参数​

编辑 postgresql.conf,根据服务器配置调整:

shared_buffers = 4GB              # 内存的25%-40%  
work_mem = 64MB                   # 每个查询操作内存  
maintenance_work_mem = 1GB        # 维护操作内存  
effective_cache_size = 12GB        # 系统文件缓存预估  
max_connections = 200             # 最大连接数  
wal_level = replica                # 支持主从复制  

建议:根据实际内存调整比例,避免OOM(如 shared_buffers 不宜超过内存40%)。

安全与维护​

​备份数据库​​:

pg_dump -U deploy_user -d app_db > app_db_backup.sql

恢复数据库​​:

psql -U deploy_user -d app_db < app_db_backup.sql

开启慢查询日志​​(postgresql.conf):

log_min_duration_statement = 5000  # 记录超过5秒的查询
logging_collector = on

定期更新​​:

sudo dnf update postgresql16-server

常见问题解决

服务启动失败​​:检查 /var/lib/pgsql/16/data/pg_log 日志,常见于目录权限问题(需 chmod 700 /var/lib/pgsql/16/data)。

远程连接被拒​​:确认防火墙、pg_hba.conf 规则及 listen_addresses 配置。

内存不足​​:降低 shared_buffers 或增加服务器内存。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐