当前位置: 首页 > news >正文

PostgreSQL数据库版本升级

一、升级策略

数据库升级分为两种,一种是小版本迭代升级,另一种是大版本升级。小版本升级很简单,你只需要简单地在服务器关闭时替换可执行文件并重启服务器,数据目录则保持不变,次要升级就这么简单。

对于PostgreSQL的大版本发行, 内部数据存储格式常被改变,这使升级复杂化。传统的把数据移动到新主版本的方法是先转储然后重新载入到数据库,不过这可能会很慢,所以使用 一种更快的方式pg_upgrade。

二、小版本升级

本次以PostgreSQL14.6升级到14.12为例,升级到过程中确认是否有扩展插件、数据库块大小尤其要注意–with编译时需要包含的特定功能或库。

2.1 版本确认

[postgres@jdcloud ~]$ postgres -V

postgres (PostgreSQL) 14.6

2.2 备份源库集簇

pg_dumpall仅支持导出全库数据
pg_dump支持指定所要备份的对象:可以单独备份表、schema或者database。
pg_dumpall -U postgres -f /postgresql/dball_data.sql

2.3 安装信息

查看已经编译的pg当时编译的编译选项, 可以使用 pg_config,这个工具特别有用于开发者和管理员,因为它能提供关于PostgreSQL如何编译、安装路径、编译时使用的选项以及库文件位置等信息。

某些环境可能是RPM包安装,确认好安装的数据目录。

[postgres@jdcloud ~]$ pg_config

2.4 安装新版本

[postgres@jdcloud postgresql]$ mkdir -p pg1412

[postgres@jdcloud postgresql-14.12]$ ./configure --prefix=/postgresql/pg1412/

[postgres@jdcloud postgresql-14.12]$ make world && make install-world

2.5 关闭源库集簇

[postgres@jdcloud soft]$ pg_ctl stop -D /postgresql/pgdata/

2.6 环境变量修改

[postgres@jdcloud soft]$ vi .bash_profile

export PG_HOME=/postgresql/pg1412

[postgres@jdcloud soft]$ source .bash_profile

2.7 重启数据库集簇

因为修改了环境变量,此时重启数据即可,升级前后数据文件目录不变,此时确认版本升级OK。

[postgres@jdcloud soft]$ pg_ctl start -D /postgresql/pgdata

postgres=# select version();

三、大版本升级

本案例从14.12升级到16.6

3.1 版本及安装确认

[postgres@jdcloud]$ psql -V

psql (PostgreSQL) 14.12

[postgres@jdcloud]$ pg_config

3.2 安装新版本并初始化

[postgres@jdcloud postgresql]$ mkdir -p pg166

[postgres@jdcloud postgresql-16.6]$ ./configure --prefix=/postgresql/pg166

[postgres@jdcloud postgresql-16.6]$ make && make install

[postgres@jdcloud postgresql]$ mkdir -p pgdata16

[postgres@jdcloud postgresql]$ /postgresql/pg166/bin/initdb -D /postgresql/pgdata16

3.3 源库集簇备份

[postgres@jdcloud]$ pg_dumpall -U postgres -f /postgresql/dumpall_data.sql

备份之后关闭源库集簇

[postgres@jdcloud ]$ pg_ctl stop -D /postgresql/pgdata

3.4 版本兼容性检查

[postgres@jdcloud postgresql]$ /postgresql/pg166/bin/pg_upgrade --old-datadir /postgresql/pgdata --new-datadir /postgresql/pgdata16 --old-bindir /postgresql/pg1412/bin --new-bindir /postgresql/pg166/bin --check

检查结果都是OK状态。

3.5 升级数据库

[postgres@jdcloud soft]$ /postgresql/pg166/bin/pg_upgrade --old-datadir /postgresql/pgdata --new-datadir /postgresql/pgdata16 --old-bindir /postgresql/pg1412/bin --new-bindir /postgresql/pg166/bin

3.6 修改环境变量

[postgres@jdcloud pgdata16]$ vi ~/.pg166

export PG_HOME=/postgresql/pg166

export PGDATA=/postgresql/pgdata16

3.7 更换参数文件及白名单

更换postgresql.conf 、pg_hba.conf文件

3.8 重启数据库集簇

[postgres@jdcloud pgdata16]$ pg_ctl start -D /postgresql/pgdata16

3.9 收集统计信息

[postgres@jdcloud pgdata16]$ /postgresql/pg166/bin/vacuumdb --all --analyze-in-stages

3.10 删除源数据库集簇数据

[postgres@jdcloud soft]$ /postgresql/soft/delete_old_cluster.sh

# delete_old_cluster.sh生成于执行upgrade命令的当前路径下。

相关文章:

  • Blender插件 三维人物角色动作自动绑定 Auto-Rig Pro V3.68.44 + Quick Rig V1.26.16
  • 非线性现实:绘制复杂系统的图景及AI推理
  • Springboot使用jwt实现登录认证
  • DeepSeek提示词技巧
  • Android Studio Profiler
  • SICAR 标准功能块 FB3352 (MODE)工作模式功能块
  • Nacos 3.0 正式发布:MCP Registry、安全零信任、链接更多生态
  • 无锡哲讯科技:引领企业数字化转型的SAP实施专家
  • C# 导入EXCEL 报错外部表不是预期的格式错误指南方案
  • 前缀和 后缀和 --- 寻找数组的中心下标
  • Idea 如何配合 grep console过滤并分析文件
  • g4f api报错:ImportError: cannot import name ‘model_validator‘ from ‘pydantic‘
  • SELinux 从理论到实践:深入解析与实战指南
  • 存储过程补充——定义条件、处理程序及游标使用
  • shell编程基础(第x篇:子进程知识点汇总)
  • MySQL日志详解
  • Spring事务开发经验 回滚和不回滚?
  • AI应用实战:Excel表的操作工具
  • 51la 统计登录日志-悟空统计成为高效的选择
  • (004)Excel 监视窗口
  • “人工智能是年轻的事业,也是年轻人的事业”,沪上高校师生畅谈感想
  • 白云山一季度营收净利双降,此前称今年将挖掘盘活自身资源
  • 工行一季度净赚841亿元降3.99%,营收降3.22%
  • 建发股份:将于5月6日召开股东大会,审议提名林茂等为公司新一届董事等议案
  • 宁夏民政厅原厅长欧阳艳已任自治区政府副秘书长、办公厅主任
  • 外交部:印度香客赴中国西藏神山圣湖朝圣将于今年夏季恢复