CentOS 8安装PostgreSQL 15全流程与优化指南
1. CentOS 8环境下PostgreSQL安装全指南在Linux服务器环境中部署数据库服务是每个后端工程师的必修课。作为最先进的开源关系型数据库之一PostgreSQL在事务处理、复杂查询和数据完整性方面表现卓越。CentOS 8作为企业级Linux发行版其稳定的RPM包管理系统与PostgreSQL形成了完美组合。我在生产环境中部署过数十次PostgreSQL集群本文将分享最可靠的安装方法和避坑经验。与Ubuntu等发行版不同CentOS 8默认软件仓库中的PostgreSQL版本往往较旧。我们需要通过PostgreSQL官方仓库获取最新版本。这里以PostgreSQL 15为例截至2023年仍是最新稳定版但方法适用于其他版本。安装过程涉及仓库配置、依赖解决、安全初始化等关键步骤每个环节都有需要注意的技术细节。2. 环境准备与仓库配置2.1 系统基础检查在开始安装前建议先执行以下命令确保系统处于最新状态sudo dnf update -y sudo dnf install -y epel-release sudo dnf config-manager --set-enabled powertools这三个命令分别完成系统更新、EPEL仓库安装和PowerTools仓库启用。特别是PowerTools仓库它包含了许多开发相关的依赖包在后续编译扩展时会用到。我曾经遇到过因为未启用该仓库导致plpython3扩展安装失败的情况。2.2 添加PostgreSQL官方仓库CentOS 8默认仓库中的PostgreSQL版本是10远低于当前稳定版。我们需要添加官方仓库sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo dnf -qy module disable postgresql第二条命令禁用CentOS自带的PostgreSQL模块非常重要。否则即使添加了官方仓库系统仍可能优先使用默认模块中的旧版本。这个细节在官方文档中并不突出但实际部署时经常导致版本混淆。验证仓库是否添加成功dnf list postgresql15-server应该能看到来自pgdg15仓库的包信息。如果显示No matching packages请检查仓库配置是否生效。3. PostgreSQL安装与初始化3.1 核心组件安装执行以下命令安装PostgreSQL服务端和客户端sudo dnf install -y postgresql15-server postgresql15-contribpostgresql-contrib包包含了常用的扩展模块如pgcrypto、uuid-ossp等。虽然这不是必须的但建议一并安装以避免后续需要时重新配置。我曾经因为遗漏这个包导致项目中的UUID生成功能无法使用不得不重新部署。安装完成后检查版本/usr/pgsql-15/bin/postgres --version正确的输出应该类似于postgres (PostgreSQL) 15.x。3.2 数据库初始化PostgreSQL需要初始化数据目录后才能启动服务sudo /usr/pgsql-15/bin/postgresql-15-setup initdb sudo systemctl enable postgresql-15 sudo systemctl start postgresql-15初始化过程会创建/var/lib/pgsql/15/data目录作为默认数据存储位置。这个路径在后续配置中会频繁用到。如果初始化失败并提示initdb: error: invalid locale settings可能是系统语言环境配置有问题可以通过以下命令解决sudo localedef -i en_US -f UTF-8 en_US.UTF-8 export LC_ALLen_US.UTF-84. 安全配置与远程访问4.1 修改postgres用户密码安装完成后立即修改默认的postgres用户密码sudo -u postgres psql -c ALTER USER postgres WITH PASSWORD your_strong_password;这里有几个关键点需要注意密码必须包含大小写字母、数字和特殊字符不要使用简单的字典单词生产环境建议将密码保存在安全的地方而非命令行历史中我曾经见过因为使用简单密码导致数据库被暴力破解的案例。安全无小事特别是在互联网可访问的环境中。4.2 配置远程访问默认情况下PostgreSQL只允许本地连接。要启用远程访问需要修改两个配置文件修改pg_hba.conf通常位于/var/lib/pgsql/15/data/pg_hba.conf# 在文件末尾添加 host all all 0.0.0.0/0 scram-sha-256修改postgresql.conf同目录下listen_addresses *重要安全提示配置远程访问后务必设置防火墙规则仅允许可信IP访问5432端口。我曾处理过因开放全网访问导致的数据泄露事件。重启服务使配置生效sudo systemctl restart postgresql-155. 常见问题与解决方案5.1 服务启动失败排查如果遇到服务启动失败首先检查日志journalctl -u postgresql-15 -xe常见错误及解决方法端口冲突如果5432端口已被占用可以修改postgresql.conf中的port参数权限问题确保/var/lib/pgsql/15/data目录所有者是postgres用户SELinux阻止可以临时设置为permissive模式测试sudo setenforce 05.2 数据目录迁移默认数据目录在系统分区生产环境建议迁移到独立存储sudo systemctl stop postgresql-15 sudo rsync -av /var/lib/pgsql/15/data /new/path/ sudo chown -R postgres:postgres /new/path/data sudo sed -i s|/var/lib/pgsql/15/data|/new/path/data|g /usr/lib/systemd/system/postgresql-15.service sudo systemctl daemon-reload sudo systemctl start postgresql-15操作前务必备份数据我曾经在迁移过程中因为路径配置错误导致服务无法启动幸好有备份。5.3 性能调优基础安装完成后建议调整以下参数在postgresql.conf中shared_buffers 4GB # 25% of total RAM effective_cache_size 12GB # 75% of total RAM maintenance_work_mem 1GB # for vacuum operations work_mem 64MB # per-operation memory random_page_cost 1.1 # for SSD storage这些值需要根据实际服务器配置调整。使用pg_top或pg_stat_activity监控数据库性能逐步优化。6. 日常管理与维护6.1 基础操作命令# 启动/停止/重启服务 sudo systemctl start|stop|restart postgresql-15 # 查看服务状态 sudo systemctl status postgresql-15 # 进入psql命令行 sudo -u postgres psql # 备份数据库 sudo -u postgres pg_dump dbname backup.sql # 恢复数据库 sudo -u postgres psql dbname backup.sql6.2 定期维护任务设置cron作业执行以下维护任务每日备份0 2 * * * /usr/bin/pg_dump -U postgres -Fc dbname /backups/dbname_$(date \%Y\%m\%d).dump每周VACUUM0 3 * * 0 /usr/bin/vacuumdb -U postgres --all --analyze日志轮转配置logrotate管理PostgreSQL日志文件6.3 监控与优化推荐安装以下工具pgBadger日志分析工具pgAdmin图形化管理工具Prometheus Grafana监控可视化我曾经通过pgBadger分析慢查询日志发现一个未优化的查询将系统负载降低了70%。定期分析是保持数据库健康的关键。7. 扩展功能安装PostgreSQL的强大之处在于其可扩展性。以下是一些常用扩展的安装方法7.1 PostGIS地理信息系统sudo dnf install -y postgresql15-postgis安装后在psql中执行CREATE EXTENSION postgis;7.2 pg_partman分区管理sudo dnf install -y pg_partman_15然后在psql中CREATE EXTENSION pg_partman;7.3 其他有用扩展-- 密码加密 CREATE EXTENSION pgcrypto; -- UUID生成 CREATE EXTENSION uuid-ossp; -- 全文搜索 CREATE EXTENSION pg_trgm;选择扩展时要考虑实际需求不必要的扩展会增加维护负担。我在一个项目中安装了20多个扩展结果升级时遇到了严重的兼容性问题。

相关新闻

AI视频生成中的幻觉与物理错误:原理、分析与工程实践

AI视频生成中的幻觉与物理错误:原理、分析与工程实践

最近在AI生成视频领域,Fable Studio推出的新模型Fable引起了不小的轰动,其宣称能够根据文本提示生成高质量、连贯的短视频。然而,随着更多用户上手测试,关于其生成内容中频繁出现的“AI幻觉”和“物理错误”的讨论也日益增多。不少…

2026/10/8 14:06:38 阅读更多 →
发明专利全流程费用管理与优化策略

发明专利全流程费用管理与优化策略

1. 专利授权与费用管理全解析作为从业十余年的知识产权顾问,我处理过数百件发明专利的申请与维护工作。今天想和大家系统聊聊发明专利从申请到授权的完整流程,特别是那些容易被忽视的费用管理细节。对于企业研发人员和初创公司创始人来说,掌握…

2026/10/10 17:20:57 阅读更多 →
MYsql:事务隔离级别

MYsql:事务隔离级别

事务隔离级别解决的是:多个事务并发执行时,一个事务能够看到其他事务的哪些数据,以及读取时需要加什么锁。隔离级别越高,一般数据一致性越强,但等待、锁冲突和死锁风险也可能增加。InnoDB 支持 SQL 标准定义的四种隔离…

2026/10/11 23:15:33 阅读更多 →

最新新闻

Orange 回归建模实战:Learner、Regressor 与交叉验证评估全解析

Orange 回归建模实战:Learner、Regressor 与交叉验证评估全解析

人工智能机器学习数据分析数据可视化 【免费下载链接】orange3 🍊 :bar_chart: :bulb: Orange: Interactive data analysis 项目地址: https://gitcode.com/gh_mirrors/or/orange3 点击查看 免费下载 本指南以 Orange 数据挖掘库(orange3&am…

2026/10/12 1:40:55 阅读更多 →
JanusGraph 实战:基于 Cassandra CQL 存储后端与 Elasticsearch 索引后端的示例应用

JanusGraph 实战:基于 Cassandra CQL 存储后端与 Elasticsearch 索引后端的示例应用

图数据库分布式数据库后端 【免费下载链接】janusgraph JanusGraph: an open-source, distributed graph database 项目地址: https://gitcode.com/gh_mirrors/ja/janusgraph 点击查看 免费下载 导读 本文以 example-cql 示例为线索,完整讲解如何在 Ja…

2026/10/12 1:40:55 阅读更多 →
Kun 学术答辩「青绿」风格设计系统:从视觉基线到治理执行的一站式技术指南

Kun 学术答辩「青绿」风格设计系统:从视觉基线到治理执行的一站式技术指南

人工智能AI Agent自主智能体桌面应用MCP Clients 【免费下载链接】Kun Local-first AI agent workspace for coding, writing, design, research, and automation — one runtime for desktop GUI and TUI. 项目地址: https://gitcode.com/gh_mirrors/de/Kun 点击查…

2026/10/12 1:40:54 阅读更多 →
不买开发板也能学STM32:纯软件仿真外设入门指南

不买开发板也能学STM32:纯软件仿真外设入门指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 1:40:54 阅读更多 →
ESP8285+MQTTX:电机控制器物联网接入实战

ESP8285+MQTTX:电机控制器物联网接入实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 1:40:54 阅读更多 →
YASB 测试体系深度解析:从 pytest 运行、Windows SDK 校验到 CI 流水线

YASB 测试体系深度解析:从 pytest 运行、Windows SDK 校验到 CI 流水线

桌面应用 【免费下载链接】yasb A highly configurable Windows status bar written in Python. 项目地址: https://gitcode.com/gh_mirrors/yas/yasb 点击查看 免费下载 本文以 YASB(Yet Another Status Bar,一个高度可配置的 Windows 状态…

2026/10/12 1:39:54 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →