PostgreSQL生产环境升级指南:pg_upgrade快速完成版本升级!
- 互联网
- 2025-09-19 07:27:01

前言
PostgreSQL 的版本号由主要版本号和次要版本号组成。例如,在 10.1 中,10 是主要版本,1 是次要版本。关于更多版本的规划,请参考 PostgreSQL 版本路线图。
版本号规则:
PostgreSQL 10 及以后:版本号采用 X.Y 形式(如 10.1,11.2),其中 X 为主要版本,Y 为次要版本。PostgreSQL 10 之前:版本号采用 X.Y.Z 形式(如 9.5.3),其中 X.Y 为主要版本(如 9.5),Z 为次要版本(如 3)。升级规则:
次要版本升级(如 10.1 → 10.6,9.5.3 → 9.5.6) :数据存储格式保持不变,可直接替换可执行文件并重启(例如直接下载替换 /usr/local/pgsql/bin 下的 postgres 相关二进制文件)。主要版本升级(如 9.5 → 9.6,10 → 11) :数据格式可能变化,通常需要数据导出/导入,但 pg_upgrade 可简化这一过程。pg_upgrade
pg_upgrade(原 pg_migrator)用于快速升级 PostgreSQL 主要版本,避免传统数据导出/导入的繁琐操作。例如:
支持升级:9.5.8 → 9.6.4,10.7 → 11.2不需要 pg_upgrade:9.6.2 → 9.6.3,10.1 → 10.2(仅次要版本升级)工作原理:
主要版本升级可能更改系统表结构,但通常不会改变数据存储格式。pg_upgrade 通过创建新系统表并重用旧用户数据,实现高效升级。若未来版本彻底更改数据存储格式,则 pg_upgrade 可能无法支持该升级。兼容性要求:
确保旧版与新版二进制兼容(如 32/64 位设置)。扩展插件需自行检查是否兼容,pg_upgrade 无法自动验证。支持范围: pg_upgrade 可用于 PostgreSQL 8.4 及以上版本,包括 beta 版本。
升级流程真实生产环境 pgsql 9.3 版本升级到 pgsql 10 升级操作流程记录。
安装新版本并初始化 $ #/usr/pgsql-10/bin/postgresql-10-setup initdb 停止旧版本的数据库 $ kill -INT `head -1 /var/lib/pgsql/9.3/data/postmaster.pid` 切换至postgres用户 $ su - postgres pg_upgrade 检查数据库兼容性 $ /usr/pgsql-10/bin/pg_upgrade \ -b /usr/pgsql-9.3/bin/ \ -B /usr/pgsql-10/bin/ \ -d /var/lib/pgsql/9.3/data/ \ -D /var/lib/pgsql/10/data/ \ -k -c如果检查失败,会看到 Failure 或 Warning 相关信息,可能的错误包括:
数据类型不兼容外部插件或扩展不兼容索引、表、用户权限问题不同 PostgreSQL 版本间的 OID 变化如果 pg_upgrade 检查没有报错(检查项 ok),就可以继续执行实际升级命令。
pg_upgrade参数说明:
-b 旧的 PostgreSQL 可执行目录; -B 新的 PostgreSQL 可执行目录; -d 旧的数据库集群配置目录; -D 新的数据库集群配置目录; -c 仅检查集群,不要更改任何数据 -k 使用硬链接而不是将文件复制到新集群
pg_upgrade 执行升级 $ /usr/pgsql-10/bin/pg_upgrade \ -b /usr/pgsql-9.3/bin/ \ -B /usr/pgsql-10/bin/ \ -d /var/lib/pgsql/9.3/data/ \ -D /var/lib/pgsql/10/data/ 升级完毕退出 postgres 用户 $ exit 调整配置文件如果 pg_hba.conf、postgresql.conf 或 postgresql.auto.conf 进行了修改,请手动调整新版本的配置。
启动新版本数据库 $ systemctl enable postgresql-10.service $ systemctl start postgresql-10.service # 或重启服务 # systemctl restart postgresql-10.service 检查 PostgreSQL 版本 $ psql --version 总结通过本文中的详细步骤,可以轻松实现 PostgreSQL 的主要版本升级,利用 pg_upgrade 工具,无需手动导出和导入数据,大大简化了升级过程。
在进行生产环境的 PostgreSQL 升级时,确保平稳过渡是至关重要的。升级过程中可能会出现许多潜在问题,因此建议通过搭建测试环境来模拟升级过程,并在确认一切正常后再执行生产环境的升级!
希望这篇文章对你有帮助!如果你有任何疑问,欢迎在评论区留言,我们一起探讨更多 PostgreSQL 使用技巧!
PostgreSQL生产环境升级指南:pg_upgrade快速完成版本升级!由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“PostgreSQL生产环境升级指南:pg_upgrade快速完成版本升级!”