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 硬件配置建议

项目最低配置推荐配置(生产)
CPU2核8核以上
内存2 GB16 GB 以上
磁盘20 GB100 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_memVACUUM、CREATE INDEX等维护操作内存512 MB ~ 2 GB
temp_buffers每个会话临时表缓存8~16 MB

7.2 I/O参数(18版新增)

参数说明
io_methodsync / 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_connections200 ~ 500(根据应用调整)
listen_addresses'*' 或指定IP
port5432(默认)
logging_collectoron 启用日志收集
log_statementddl(记录结构变更)或 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),掌握源码编译与内核调优的能力将让您在技术竞争中占据先机。若您在后续运维中遇到任何疑难,欢迎常回来翻阅本文,或参与社区讨论!**

更多推荐