Windows版 PostgreSQL 利用 pg_upgrade 进行大版升级操作方法

 更新时间:2022年10月19日 10:57:55   作者:张晓栋  
最近 PostgreSQL 15 版本正式发布了,新版本的各种特性和好处本文就不展开介绍了,主要介绍一下 Windows 环境下 PostgreSQL 大版本升级的方法,我们现在的几个数据库都是运行在 Windows服务器的 PostgreSQL 14,需要的朋友可以参考下

最近 PostgreSQL 15 版本正式发布了,新版本的各种特性和好处本文就不展开介绍了,主要介绍一下 Windows 环境下 PostgreSQL 大版本升级的方法,我们现在的几个数据库都是运行在 Windows服务器的 PostgreSQL 14,
首先准备一份新版本的 PostgreSQL 初始化,并调整好所有设置,关于这一步其实和安装一个全新的 PostgreSQL 操作差不多,可以看我之前 的一篇博文 Windows 系统 PostgreSQL 手工安装配置方法
不过在操作的时候对于新版本的PostgreSQL只要初始化之后,调整好对应的 postgresql.conf 就可以了,不需要去执行安装服务那些步骤,我们只需要一个调整好设置的 postgreSQL 实例就可以了,甚至都不需要启动它。

这个就是我们从 PostgreSQL官网下载的一份最新版的 PostgreSQL15 的压缩包,我们首先初始化实例

initdb -D "C:\Software\PostgreSQL15\data" -E UTF8 -U postgres --locale="Chinese (Simplified)_China.936" --lc-messages="Chinese_China.936" -A scram-sha-256 -W

这里需要注意的一个点是,设定密码时最好和老版本的实例 postgres 账户密码保持一致,实例化的时候参数中传递的编码格式 如 Chinese (Simplified)_China.936,Chinese_China.936 这些一定要和原来老版本的实例最好保持一直,密码加密格式最好也是和老版本的实例保持一直如 scram-sha-256,实例化之后根据自己的需要把 postgresql.conf 文件中的配置参数按照老版本中改动过的地方按照自己需求再调整一次,然后把 pg_hba.conf 直接复制到新版本中,原则就是新老版本尽量保持配置一致。

准备好这些之后就可以开始升级操作了,首先关闭老的实例,确保新老版本的两个实例都没有启动,都在关闭状态。

net stop PostgreSQL

检查新老实例版本所在的文件夹,我们的账户是都有完整的全部权限,我这里 cmd 命令是以 Administrator 账户运行的,所以我为两个文件夹都赋予了 Administrator 的完整权限

然后在新版本的 bin 下执行如下命令 cmd环境

cmd
set PGPASSWORD=xxxxxx (xxxx为postgres 的密码)
pg_upgrade -b "c:\Software\PostgreSQL\bin" -B "c:\Software\PostgreSQL15\bin" -d "c:\Software\PostgreSQL\data" -D "c:\Software\PostgreSQL15\data" -U postgres

注释:> pg_upgrade -b "旧的bin目录" -B "新的bin目录" -d "旧的data目录" -D "新的data目录" -U postgres

像上图的状态,就说明我们的升级命令运行成功了。
命令执行完成之后记得直接关闭 cmd 窗口。否则后面修改实例名称时会提示有占用。

这个时候我去把原来老的实例,修改一个名字,比如我这里老的实例原本路径为 C:\Software\PostgreSQL,我们修改这个文件夹名称为 C:\Software\PostgreSQL14 ,然后修改我们新版本的实例路径 C:\Software\PostgreSQL15 为 C:\Software\PostgreSQL 其实就是调整一下两个实例文件夹的名字,重命名一下。
重命名调整好之后,就可以启动我们的 PostgreSQL 服务了。

net start PostgreSQL

启动之后切换到再次进入到 bin 目录运行

cmd
set PGPASSWORD=xxxxxx (xxxx为postgres 的密码)
vacuumdb -U postgres --all --analyze-in-stages

如果原先老的实例中有部分数据库用到了一些扩展比如 postgis 等,还需要执行一个扩展的升级命令如下:

psql --username postgres --file update_extensions.sql postgres

至此 Windows版 PostgreSQL 利用 pg_upgrade 进行大版升级操作 就讲解完了,有任何不明白的,可以在文章下面评论或者私信我,欢迎大家积极的讨论交流,有兴趣的朋友可以关注我目前在维护的一个 .NET 基础框架项目,项目地址如下
https://github.com/berkerdong/NetEngine.git
https://gitee.com/berkerdong/NetEngine.git

到此这篇关于Windows版 PostgreSQL 利用 pg_upgrade 进行大版升级操作方法的文章就介绍到这了,更多相关Windows PostgreSQL升级内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决postgreSql远程连接数据库超时的问题

    解决postgreSql远程连接数据库超时的问题

    这篇文章主要介绍了解决postgreSql远程连接数据库超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • postgresql中如何执行sql文件

    postgresql中如何执行sql文件

    这篇文章主要介绍了postgresql中如何执行sql文件问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Postgresql中LIKE和ILIKE操作符的用法详解

    Postgresql中LIKE和ILIKE操作符的用法详解

    这篇文章主要介绍了Postgresql中LIKE和ILIKE操作符的用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • Linux CentOS 7安装PostgreSQL9.3图文教程

    Linux CentOS 7安装PostgreSQL9.3图文教程

    这篇文章主要为大家详细介绍了Linux CentOS 7安装PostgresSQL9.3图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • postgresql 实现查询某时间区间的所有日期案例

    postgresql 实现查询某时间区间的所有日期案例

    这篇文章主要介绍了postgresql 实现查询某时间区间的所有日期案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSQL timestamp踩坑记录与填坑指南

    PostgreSQL timestamp踩坑记录与填坑指南

    这篇文章主要介绍了PostgreSQL timestamp踩坑记录与填坑指南,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • postgresql 中的加密扩展插件pgcrypto用法说明

    postgresql 中的加密扩展插件pgcrypto用法说明

    这篇文章主要介绍了postgresql 中的加密扩展插件pgcrypto用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • Windows 环境搭建 PostgreSQL 逻辑复制高可用架构数据库服务

    Windows 环境搭建 PostgreSQL 逻辑复制高可用架构数据库服务

    本文主要介绍Windows下搭建PostgreSQL的主从逻辑复制,关于PostgreSQl的相关运维文章,网络上大多都是 Linux 环境下的操作,鲜有在 Windows 环境下配置的教程,所以本文采用 Windows 环境作为演示系统来进行 PostgreSQL 高可用数据库服务的搭建,感兴趣的朋友一起看看吧
    2023-05-05
  • PostgreSQL设置主键自增的方法详解

    PostgreSQL设置主键自增的方法详解

    在使用Mysql时,创建表结构时可以通过关键字auto_increment来指定主键是否自增,但在Postgresql数据库中,虽然可以实现字段的自增,但从本质上来说却并不支持Mysql那样的自增,所以本文给大家介绍了PostgreSQL如何设置主键自增,需要的朋友可以参考下
    2024-08-08
  • PostgreSQL关闭数据库服务的三种模式

    PostgreSQL关闭数据库服务的三种模式

    PostgreSQL 提供了三种关闭数据库服务的不同方式,它们最终都是发送一个关闭信号到 postgres 主服务进程,本文将给大家详细的介绍一下这三种模式,需要的朋友可以参考下
    2024-07-07

最新评论