Windows版 PostgreSQL 利用 pg_upgrade 进行大版升级操作
最近 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 进行大版升级操作的更多相关文章
- postgresql利用pg_upgrade升级数据库(从8.4升级到9.5)
其他见:http://my.oschina.net/ensn/blog/636766 本文利用pg_upgrade实现将8.4.18版本升级到9.5.0版本,8.4.18版本为RedHat系统自带pg ...
- windows系统中 利用kibana创建elasticsearch索引等操作
elasticsearch之借用kibana平台创建索引 1.安装好kibana平台 确保kibana以及elasticsearch正常运行 2.打开kibana平台在Dev Tools 3.创建一个 ...
- 以windows服务方式快速部署免安装版Postgres数据库
目录 以windows服务方式快速部署免安装版Postgres数据库 1.下载Postgresql数据库免安装包 2.安装环境准备及验证 解压文件 测试环境依赖 3.创建并初始化数据目录 创建数据目录 ...
- Windows XP系统安装SQL Server 2005(开发版)图解
转自Windows XP系统安装SQL Server 2005(开发版)图解 安装前提:由于有些从网上的下载的项目需要导入SQL Server 2005的数据文件,因此,今天便安装了这个数据库,我的系 ...
- Windows Server 2003 SP2 R2 企业版/标准版/32与64位 CD-KEY
微软发布Windows Server 2003 R2版的目的是希望透过它填补Windows Server 2003 SP1和Longhorn Server之间的产品发布时间间隔.所以Windows S ...
- Windows Azure 社区新闻综述(#76 版)
欢迎查看最新版本的每周综述,其中包含有关云计算和 Windows Azure 的社区推动新闻.内容和对话.以下是本周的亮点. 文章.视频和博客文章 · 更新 Windows Azure 中的 SQ ...
- Windows下安装zip包解压版mysql
Windows下安装zip包解压版mysql 虽然官方提供了非常好的安装文件,但是有的时候不想每次再重装系统之后都要安装一遍MySQL,需要使用zip包版本的MySQL.在安装时需如下三步: 1. 新 ...
- 在 Windows 10 专业版、企业版或教育版上设置展台
原文: 在 Windows 10 专业版.企业版或教育版上设置展台 Set up a kiosk on Windows 10 Pro, Enterprise, or Education 适用于 Win ...
- 基于《仙剑奇侠传柔情版》利用Java的简单实现(一)
基于<仙剑奇侠传柔情版>利用Java的简单实现(一) 2018-12-01 23:55:36 by Louis 一,新建一个类GameFrame.class,具体代码如下: pack ...
随机推荐
- VSCode Easy Less扩展 out 配置字段
"less.compile": { "out": "..\\css\\" // 切记文件目录查找为 '\\' or '//' 此处我的设置会 ...
- Blazor和Vue对比学习(进阶2.2.4):状态管理之持久化保存(2),Cookie/Session/jwt
注:本节涉及到前后端,这个系列的对比学习,还是专注在前端Vue和Blazor技术,所以就不撸码了,下面主要学习概念. 我们知道,Http是无状态协议,客户端请求服务端,认证一次后,如果再次请求,又要重 ...
- 项目应用丨Modbus转Profinet网关连接ABB变频器的现场应用记录
本案例客户需求是将ABB变频器接入到Profinet网络中,使用设备为西门子1200PLC,ABB变频器以及小疆智控Modbus转profinet网关.1.首先打开西门子组态软件,新建一个项目. 2. ...
- 基于图像二维熵的视频信号丢失检测(Signal Loss Detection)
1 图像二维熵 图像二维熵作为一种特征评价尺度能够反映出整个图像所含平均信息量的高低,熵值(H)越大则代表图像所包含的信息越多,反之熵值(H)越小,则图像包含的信息越少.对于图像信息量,可以简单地认 ...
- 查找默认安装的python路径,并输出到 FindPythonPathX_output.txt
在python程序设计教学中,在汉化IDEL时.为PyCharm项目设置解释器时,经常需要查找python安装路径.对老手来说很简单,但对很多刚开始学习编程的学生来说,则很困难.所以,编写了一个批处理 ...
- JAVA语言基础组成(1)
JAVA语言基础组成 关键字 关键字的定义和特点 定义:被Java语言赋予了特殊含义的单词 特点:关键字中所有字母都为小写 用于定义数据类型的关键字 class interface byte int ...
- FormData 和表单元素(form)的区别
Form 元素 <form>元素表示文档中的一个区域,此区域包含交互控件,用于向 Web 服务器提交信息(文件.字符).下面称之为表单元素或表单. 要向 Web 服务器提交信息,我们必须要 ...
- 理解 Flutter 的基础概念:Widget
Widget 的本意是组件的意思,熟悉 Web 应用开发的人在后期必定会接触到 Vue.React 等框架,这些框架都有一个核心的概念 -- 组件.组件的目的也很简单,那就是重复率用一段代码,并且能够 ...
- 前端知识之CSS(1)-css语法、css选择器(属性、伪类、伪元素、分组与嵌套)、css组合器
目录 前端基础之css 1.关于css的介绍 2.css语法 3.三种编写CSS的方式 3.1.style内部直接编写css代码 3.2.link标签引入外部css文件 3.3.标签内直接书写 4.c ...
- Miller Rabbin 算法—费马定理+二次探测+随机数 (讲解+例题:FZU1649 Prime number or not)
0.引入 那年,机房里来了个新教练, 口胡鼻祖lhy 第一节课,带我们体验了暴力的神奇, 第二节课,带我们体验了随机数的玄妙, -- 那节课,便是我第一次接触到Miller Rabbin算法, 直到现 ...