尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

PostgreSQL 16.2 → 16.14 小版本升级操作手册

PostgreSQL 16.2 → 16.14 小版本升级操作手册
📅 发布时间:2026/7/18 21:06:23

PostgreSQL 16.2 → 16.14 小版本升级操作手册

文档基础信息

项目

内容

当前运行版本

PostgreSQL 16.2(源码编译)

目标升级版本

PostgreSQL 16.14

统一安装路径

/usr/local/pgsql

数据目录(不改动)

/data/pgdata/

编译标准参数

--prefix=/usr/local/pgsql --with-ossp-uuid --with-openssl --with-system-tzdata=/usr/share/zoneinfo

升级类型

小版本原地覆盖升级(数据目录无需 initdb,兼容同主版本所有小版本)

适用系统

CentOS/Rocky/ 银河麒麟 V10、Ubuntu/Debian

前置要求

业务停机、tzdata 时区包升级、完整二进制 + 逻辑备份

一、升级前置确认与环境预处理

1.1 业务停机要求

升级操作必须在业务低峰窗口执行;

停止所有应用、定时任务、ETL同步、备份脚本、连接池;

确认无长事务、无在线 DDL、无 pg_dump 逻辑备份任务运行。

1.2 时区包强制升级(解决 Asia/Shanghai 时区 7 小时偏移 / 启动失败)

PG16 系列依赖系统时区文件,旧 tzdata 会导致时区异常、数据库启动报错,必须升级:


# RHEL/CentOS/麒麟
yum upgrade -y tzdata
# Rocky8+/Fedora
dnf upgrade -y tzdata

# 验证升级后版本
rpm -q tzdata
# 修复系统时区软链接
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

1.3 查看当前运行版本确认


# 查看二进制版本
/usr/local/pgsql/bin/psql --version
# 数据库内确认版本
su - postgres
psql -c "SELECT version();"

1.4 系统依赖完整性校验


# RHEL系
yum install -y gcc gcc-c++ make bison flex readline-devel zlib-devel openssl-devel libicu-devel libuuid-devel
# Ubuntu系
apt install -y gcc g++ make bison flex libreadline-dev zlib1g-dev libssl-dev libicu-dev libuuid-dev

二、全量备份(升级前三道防线,缺一不可)

2.1 二进制程序目录备份(回滚核心)

覆盖安装会直接替换 /usr/local/pgsql 二进制,必须提前备份旧程序:


# 带时间戳备份
cp -r -a /usr/local/pgsql /usr/local/pgsql.bak_$(date +%Y%m%d_%H%M%S)
# 校验备份文件存在
ls -ld /usr/local/pgsql.bak_*

2.2 数据库逻辑全量备份(数据兜底)


# 创建备份目录
mkdir -p /data/pg_backup
# 全库导出所有库、用户、表结构、数据
sudo -u postgres pg_dumpall > /data/pg_backup/pg_all_backup_$(date +%Y%m%d_%H%M%S).sql
# 校验备份文件生成、文件大小非0
ls -lh /data/pg_backup/pg_all_backup_*.sql

2.3 业务自有备份脚本执行


# 执行项目自定义定时备份脚本
./runBackup.sh

三、下载 16.14 源码并解压


# 进入临时目录
cd /tmp
# 下载16.14源码
wget https://ftp.postgresql.org/pub/source/v16.14/postgresql-16.14.tar.gz
# 解压
tar -zxvf postgresql-16.14.tar.gz
cd postgresql-16.14

四、编译新版本源码

4.1 清理旧编译缓存


make distclean

4.2 标准 configure 编译(与旧版本编译参数完全一致)

关键:编译参数必须和原 16.2 完全相同,否则扩展、SSL、uuid 插件会失效

升级到最新版本重启postgresql时区会报错

指定系统时区路径:--with-system-tzdata=/usr/share/zoneinfo


./configure \
--prefix=/usr/local/pgsql \
--with-ossp-uuid \
--with-openssl \
--with-system-tzdata=/usr/share/zoneinfo

4.3 完整编译(包含 contrib 全部扩展)


# 多核并行编译,利用全部CPU核心
make -j$(nproc) world

编译耗时:5~15 分钟,服务器 CPU 核心越多速度越快;
成功标识:PostgreSQL, contrib, and documentation successfully made. Ready to install.

五、停止现有 PostgreSQL 服务

5.1 停止数据库(fast 模式,快速回滚未提交事务)


# systemd方式
systemctl stop postgresql
# 原生pg_ctl方式备用
/usr/local/pgsql/bin/pg_ctl stop -D /data/pgdata/ -m fast

5.2 校验 postgres 进程完全退出


ps aux | grep postgres | grep -v grep

输出为空代表进程全部关闭,存在残留进程需手动 kill 终止。

六、原地覆盖安装新版本二进制


# 覆盖安装到原/usr/local/pgsql目录
make install-world

校验新二进制版本


/usr/local/pgsql/bin/pg_ctl --version
# 预期输出:pg_ctl (PostgreSQL) 16.14
/usr/local/pgsql/bin/psql --version

七、启动新版本数据库(数据目录不变)

7.1 启动服务


# systemd管理
systemctl start postgresql
# 原生启动备用
/usr/local/pgsql/bin/pg_ctl start -D /data/pgdata/

7.2 查看启动日志,排查 ERROR/FATAL 报错


# 日志存放于数据目录示例
tail -100 /data/pgdata/postgresql-*.log
# 自定义日志目录替换路径
tail -100 /var/log/pg16/postgresql-*.log

日志无 FATAL、ERROR、时区报错即为启动正常。

八、升级后全面功能验证

切换 postgres 用户执行验证:


su - postgres

确认数据库内核版本


SELECT version();
-- 预期:PostgreSQL 16.14

校验扩展完整性(uuid-ossp、pgcrypto 等)


SELECT extname,extversion FROM pg_extension;

查看全库列表


\l

基础 SQL 可用性校验


SELECT 1;
SELECT current_timestamp;
SELECT now();

时区校验(规避 7 小时时差问题)

sql
SHOW timezone;
SHOW log_timezone;

UUID 函数校验(验证 --with-ossp-uuid 编译生效)


SELECT uuid_generate_v4();

九、systemd 服务确认

路径未发生变更,无需修改 service 文件,仅确认运行状态:


systemctl status postgresql
# 正常状态:active (running)
systemctl enable postgresql

十、升级收尾清理规范

清理临时源码包(可选)


rm -rf /tmp/postgresql-16.14 /tmp/postgresql-16.14.tar.gz

二进制备份文件保留策略
/usr/local/pgsql.bak_*备份至少保留 7 天,业务稳定无异常后再删除;

十一、升级失败完整回滚流程

1. 停止新版本数据库


systemctl stop postgresql
/usr/local/pgsql/bin/pg_ctl stop -D /data/pgdata/ -m fast

2. 删除覆盖后的新版程序目录


rm -rf /usr/local/pgsql

3. 恢复升级前备份的旧二进制


# 修改为你实际备份的时间戳目录
mv /usr/local/pgsql.bak_20260717_103000 /usr/local/pgsql

4. 使用旧版本启动数据库


systemctl start postgresql
# 或
/usr/local/pgsql/bin/pg_ctl start -D /data/pgdata/

5. 验证回滚版本


/usr/local/pgsql/bin/psql -c "SELECT version();"
# 应恢复为 PostgreSQL 16.2

十二、升级注意事项 & 坑点规避

1.编译参数必须完全一致:新增 / 删减编译参数会导致原有扩展失效、SSL 连接报错;

2.小版本升级数据目录无需 initdb,同主版本 16.x 数据完全兼容,禁止重新初始化;

3.timezone = 'Asia/Shanghai' 新版启动会失败,需要编译时指定系统时区路径;

4.覆盖安装前必须停库,运行中直接 make install 会导致二进制文件损坏、数据库崩溃;

5.所有备份文件分开存储,逻辑备份不要放在数据盘,防止磁盘故障丢失;

6.国产麒麟系统最小化镜像需完整安装 tzdata,不要使用精简时区包;

7.若编译新增 pg_duckdb 等第三方插件,升级后需重新编译对应插件适配 16.14。

相关新闻

  • Adobe-GenP 3.0终极指南:如何快速解锁Adobe全家桶的完整教程 [特殊字符]
  • 2026辽源活动跟拍公司五大服务商权威排名深度实测 | 真实报价对比+云摄影与活动摄影服务评测,附行业选型指南 - 影视产业研究
  • 后端:SpringBoot 前端:Vue.js 数据库:MySQL 8.0 社区养老服务老人帮扶系统 社区养老服务springboot老人帮扶系统vue前后分离Java源码mysql

最新新闻

  • 2026年7月最新杭州欧米茄官方售后联系电话与客户服务中心网点地址 - 欧米茄官方服务中心
  • 高性能2.4G无线收发芯片推荐:芯岭技术XL24系列2.4G收发芯片
  • 2026必看FAQ参考!汕尾锌钢铝合金百叶窗厂家/通风防雨空调外机罩格栅网哪家好?推荐锦锋诚海丰陆河陆丰大型工程金属百叶源头厂购销合同订立相关基础问题答疑 - 奋斗者888
  • AI+Web3D:我让AI写了一年Three.js,结果它连一个内网白屏都修不了
  • 【计算机毕业设计】基于JavaWeb的“兴味坊”美食销售系统
  • ZFX山海证券:外汇市场服务体验的细节拆解

日新闻

  • 宝珀中国官方售后服务中心|官方热线和维修地址权威信息声明(2026年7月更新) - 宝珀官方售后服务中心
  • # 2026年北京知识产权律师推荐怎么选?看这五点关键不踩雷 - 本地品牌推荐
  • 2026实测教程:生成的拼豆图纸不满意怎么修改才省事 - 省事研究所

周新闻

  • IX9104 PCIe5.0 高速交换芯片@ACP#完整规格 + 应用场景总结
  • Unity游戏集成Coze智能体:实现NPC智能对话与知识库联动
  • SAP EPIC 建行回单查询:从标准类CL_EPIC_EXAMPLE_CN_CCB_GHTD到Z类的5处关键修改

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号