【PostgreSQL18安装教程】源码编译+图文详解(附pg18.4安装包下载)
PostgreSQL 18安装教程是本文的核心,作为全球最先进的开源关系型数据库的最新长期支持版,PostgreSQL 18带来了异步I/O、UUIDv7等革命性特性。本PostgreSQL 18安装教程将从零开始,手把手教你完成源码编译安装,并深入讲解异步I/O配置、性能调优及日常运维,无论你是DBA还是开发人员,这篇PostgreSQL 18安装教程都将是你生产环境部署的最佳参考。
一、PostgreSQL是什么?
在关系型数据库的浩瀚星空中,PostgreSQL始终是一颗独特而耀眼的恒星。它不隶属于任何商业巨头,完全由全球顶级开发者社区驱动,历经近30年迭代,已经成为开源数据库领域的事实标准。
与MySQL侧重互联网轻量级应用不同,PostgreSQL一直以 “企业级功能全覆盖” 著称——它原生支持复杂查询、外键、触发器、视图、事务隔离、多版本并发控制(MVCC),甚至率先实现了表继承、数组、JSON/JSONB、全文检索等高级特性。PostgreSQL 18的发布,更是将这一传统推向了新高度:
- 异步I/O(AIO) :颠覆了传统同步I/O模型,让数据库在分析型负载下性能飙升,这是PostgreSQL历史上I/O架构的最大变革。
- 内核级性能优化:跳过扫描(Skip Scan)、分区表智能联接、更智能的并行查询,让优化器决策更精准。
- 开发友好型增强:原生UUIDv7、虚拟生成列、更完善的SQL/JSON标准支持,极大简化了应用开发。
- 安全与合规:OAuth 2.0原生认证、SCRAM-SHA-256密码默认启用,满足企业级安全审计需求。
PostgreSQL 18不仅是数据库引擎,更是一个数据管理平台——你可以用它处理OLTP事务、OLAP分析、地理空间数据(PostGIS)、时序数据(TimescaleDB扩展)甚至向量检索(pgvector)。正因如此,掌握PostgreSQL 18安装技能,已成为现代数据工程师的必备基本功。
二、PostgreSQL安装包下载
本教程使用官方源码包 postgresql-18.4.tar.gz,您可以通过以下方式获取:
- 百度网盘:
链接: https://pan.baidu.com/s/1pmdRPPAIuIWl_8XCRhY8rA?pwd=4r5h
三、PostgreSQL安装环境要求
3.1 操作系统
- Rocky Linux 9 / AlmaLinux 9 / CentOS 7.9+ / RHEL 9
本教程基于 Rocky Linux 9 演示,其他发行版操作类似。
👉 若未安装虚拟机,可参考此文创建Rocky Linux环境:
https://www.cnblogs.com/dbbull/p/20910634
3.2 硬件配置建议
| 项目 | 最低配置 | 推荐配置(生产) |
|---|---|---|
| CPU | 2核 | 8核以上 |
| 内存 | 2 GB | 16 GB 以上 |
| 磁盘 | 20 GB | 100 GB SSD + 独立数据盘 |
| 网络 | 千兆 | 万兆 |
3.3 依赖包清单
编译源码需要以下开发库和工具,我们将使用 yum 统一安装(见后续步骤)。
四、PostgreSQL 18安装教程(源码编译完整步骤)
本章节将逐步演示从零开始,在Rocky Linux 9上源码编译安装PostgreSQL 18.4的全过程。
4.1 创建必要目录
统一规划软件目录、数据目录和工具目录,便于维护。
mkdir -p /data/postgres/pgdata # 数据目录
mkdir -p /data/server/tools # 工具和源码存放处
mkdir -p /opt/postgres # 安装根目录

4.2 安装编译依赖
使用 yum(或 dnf)一次性安装所有必需的库和工具:
yum install -y zlib-devel readline-devel libxml2-devel libxslt-devel \
openssl-devel perl-devel perl-ExtUtils-Embed python3-devel \
gcc-c++ pkgconfig libicu-devel bison flex perl-core
说明:
python3-devel对应 Python 存储过程支持,libicu-devel提供国际化排序能力,openssl-devel用于开启SSL连接。
4.3 上传源码包
将下载好的 postgresql-18.4.tar.gz 上传至 /data/server/tools:
cd /data/server/tools
yum install -y lrzsz
rz # 选择本地文件上传
也可使用 scp 或 wget 直接下载。


4.4 解压源码
tar xvf postgresql-18.4.tar.gz
cd postgresql-18.4

4.5 配置编译选项
运行 configure 检查环境并指定安装路径及功能组件:
./configure --prefix=/opt/postgres/pgsql18 \
--with-perl --with-python --with-libxml \
--with-libxslt --with-openssl
参数含义:
--prefix:安装目录,后续可软链接到/usr/local/pgsql方便管理。--with-perl/python:启用存储过程语言支持。--with-libxml/xslt:支持XML数据类型和XSLT转换。--with-openssl:启用SSL加密传输。


4.6 编译与安装
make # 约5~15分钟
make install


4.7 创建软链接
方便版本切换和路径引用:
ln -s /opt/postgres/pgsql18 /usr/local/pgsql

4.8 创建专用系统用户
出于安全考虑,禁止使用root运行数据库服务:
groupadd -g 1001 postgres
useradd -g 1001 -u 1001 -m postgres
chown -R postgres:postgres /data/*
passwd postgres # 设置登录密码(可选)

4.9 配置环境变量
切换到 postgres 用户,设置PATH、库路径和数据目录:
su - postgres
vi ~/.bash_profile
添加:
export PATH=/usr/local/pgsql/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/pgsql/lib
export PGDATA=/data/postgres/pgdata
生效:
source ~/.bash_profile

4.10 初始化数据库
创建数据目录并初始化系统表:
initdb -D $PGDATA -E UTF8 --locale="C" -W
-E UTF8:默认字符集UTF-8。--locale="C":使用C语言环境,提升性能。-W:交互式设置超级用户(postgres)密码,务必设置强密码。

4.11 启动PostgreSQL服务
pg_ctl -D $PGDATA -l /data/postgres/logfile start

4.12 验证服务状态
ss -ltn | grep 5432
若看到 LISTEN 状态,则表示PostgreSQL 18安装成功!

五、PostgreSQL基础操作(常用命令与SQL)
安装完成后,您需要掌握基本的连接、建库、建表、增删改查等操作。
5.1 连接数据库
psql -U postgres
默认连接到 postgres 同名数据库。您也可以指定数据库名:
psql -d mydb -U postgres

5.2 常用元命令(内部命令)
在 psql 交互界面中,以 \ 开头的命令:
| 命令 | 作用 |
|---|---|
\l | 列出所有数据库 |
\c dbname | 切换数据库 |
\dt | 显示当前库所有表 |
\d tablename | 查看表结构 |
\du | 列出所有角色/用户 |
\q | 退出psql |
5.3 数据库与表操作
-- 创建数据库
CREATE DATABASE mydb;
-- 切换至mydb
\c mydb
-- 创建表(包含自增主键、唯一约束、默认时间戳)
CREATE TABLE employees (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) UNIQUE,
hire_date DATE DEFAULT CURRENT_DATE
);
-- 插入数据
INSERT INTO employees (name, email) VALUES ('李明', 'li.ming@example.com');
-- 查询数据
SELECT * FROM employees WHERE name LIKE '李%';
-- 更新数据
UPDATE employees SET email = 'new.email@example.com' WHERE id = 1;
-- 删除数据
DELETE FROM employees WHERE id = 1;
5.4 用户与权限管理
创建普通用户并授权:
CREATE USER app_user WITH PASSWORD 'secure_pass';
GRANT CONNECT ON DATABASE mydb TO app_user;
GRANT SELECT, INSERT, UPDATE ON employees TO app_user;
撤销权限使用 REVOKE。
安全提示:PostgreSQL 18默认使用
scram-sha-256密码加密,比MD5更安全,无需额外配置。
5.5 停止与重启服务
pg_ctl -D $PGDATA stop -m fast # 快速关闭
pg_ctl -D $PGDATA restart # 重启
六、PostgreSQL进阶操作(性能优化与高可用)
本章节聚焦于PostgreSQL 18引入的新特性和生产级调优技巧。
6.1 启用异步I/O(AIO)
异步I/O是18版最亮眼的性能特性,尤其适合大表扫描和批量写入。
- 查看当前I/O方法:
SHOW io_method; - 修改为
worker模式(推荐)或io_uring(需要Linux 5.1+内核):ALTER SYSTEM SET io_method = 'worker'; SELECT pg_reload_conf(); -- 无需重启,仅重载配置 - 调整I/O工作进程数(默认3):
ALTER SYSTEM SET io_workers = 6; - 调整I/O合并块数,以提升吞吐:
ALTER SYSTEM SET io_combine_limit = 32; -- 每次最多合并32个8KB块
6.2 使用跳过扫描(Skip Scan)
若查询条件只涉及复合索引的后续列,优化器可跳过前缀列直接扫描:
CREATE INDEX idx_emp_dept_hire ON employees (dept_id, hire_date);
-- 以下查询可能使用跳过扫描(需统计信息支持)
SELECT * FROM employees WHERE hire_date > '2026-01-01';
6.3 生成UUIDv7主键
替代随机UUID,降低索引碎片:
CREATE TABLE orders (
id UUID PRIMARY KEY DEFAULT uuidv7(),
order_no VARCHAR(20) NOT NULL,
amount DECIMAL(10,2)
);
6.4 虚拟生成列
不存储计算结果,节省空间:
CREATE TABLE sales (
qty INT,
price DECIMAL(10,2),
total DECIMAL(10,2) GENERATED ALWAYS AS (qty * price) VIRTUAL
);
6.5 逻辑备份与恢复
- 导出单个数据库:
pg_dump -U postgres -d mydb > mydb.sql - 导入:
psql -U postgres -d mydb < mydb.sql - 全库备份(包括全局对象):
pg_dumpall -U postgres > full_backup.sql
6.6 搭建物理流复制(主从)
在主库配置:
# postgresql.conf
wal_level = replica
max_wal_senders = 10
max_replication_slots = 10
创建复制用户:
CREATE USER repl REPLICATION LOGIN ENCRYPTED PASSWORD 'replpass';
在从库执行基础备份并配置 primary_conninfo,即可实现实时同步。
七、PostgreSQL参数详解(核心配置调优)
postgresql.conf 是数据库的灵魂配置文件,位于数据目录。以下列出最关键的参数及其调优建议。
7.1 内存参数
| 参数 | 说明 | 推荐值 |
|---|---|---|
shared_buffers | 共享缓冲区大小,影响数据缓存命中率 | 系统内存的25%~40% |
work_mem | 每个排序/哈希操作可用内存 | 16~64 MB(需考虑并发数) |
maintenance_work_mem | VACUUM、CREATE INDEX等维护操作内存 | 512 MB ~ 2 GB |
temp_buffers | 每个会话临时表缓存 | 8~16 MB |
7.2 I/O参数(18版新增)
| 参数 | 说明 |
|---|---|
io_method | sync / worker / io_uring,推荐worker |
io_workers | 后台I/O工作进程数,默认3,可调至6~8 |
io_combine_limit | 每次I/O合并的最大块数,默认16,可调至32 |
effective_io_concurrency | 查询并发I/O数,SSD推荐16~32 |
7.3 连接与日志
| 参数 | 推荐值 |
|---|---|
max_connections | 200 ~ 500(根据应用调整) |
listen_addresses | '*' 或指定IP |
port | 5432(默认) |
logging_collector | on 启用日志收集 |
log_statement | ddl(记录结构变更)或 mod(记录DML) |
log_line_prefix | '%t [%p] %u@%d ' 便于追踪 |
7.4 优化器与统计信息
default_statistics_target:默认100,可调至200~500提高复杂查询的统计精度。enable_*系列参数(如enable_seqscan)可关闭特定扫描方式,用于调优实验(生产慎用)。
所有参数修改后,可通过 SELECT pg_reload_conf(); 热加载,部分参数需要重启(如 shared_buffers、max_connections)。
结尾
数据库技术的演进从未停歇,而PostgreSQL 18正是这条长河中的一座崭新里程碑。通过本篇PostgreSQL 18安装教程,您不仅完成了一次纯粹的软件部署,更亲身体验了开源社区顶尖工程智慧的结晶——从异步I/O的内核革新,到UUIDv7的巧妙设计,每一个特性都凝聚着全球数千名贡献者的心血。
PostgreSQL 18安装绝非终点,而是您探索数据管理更深层奥秘的起点。当您成功启动服务,看到那行“LOG: database system is ready to accept connections”时,您已经拥有了一个可以支撑千万级并发、处理PB级数据的基础设施雏形。我们鼓励您在生产上线前,针对自身业务场景反复压测、调优,将本文的参数建议与AIO配置灵活运用,让PostgreSQL 18真正成为您技术栈中的“王牌组件”。
未来,随着PostgreSQL生态的持续繁荣(如AI扩展pgvector、分布式插件Citus),掌握源码编译与内核调优的能力将让您在技术竞争中占据先机。若您在后续运维中遇到任何疑难,欢迎常回来翻阅本文,或参与社区讨论!**
更多推荐



所有评论(0)