Windows版?PostgreSQL?利用?pg_upgrade?進行大版升級操作方法
最近 PostgreSQL 15 版本正式發(fā)布了,新版本的各種特性和好處本文就不展開介紹了,主要介紹一下 Windows 環(huán)境下 PostgreSQL 大版本升級的方法,我們現(xiàn)在的幾個數(shù)據(jù)庫都是運行在 Windows服務器的 PostgreSQL 14,
首先準備一份新版本的 PostgreSQL 初始化,并調整好所有設置,關于這一步其實和安裝一個全新的 PostgreSQL 操作差不多,可以看我之前 的一篇博文 Windows 系統(tǒng) PostgreSQL 手工安裝配置方法
不過在操作的時候對于新版本的PostgreSQL只要初始化之后,調整好對應的 postgresql.conf 就可以了,不需要去執(zhí)行安裝服務那些步驟,我們只需要一個調整好設置的 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 賬戶密碼保持一致,實例化的時候參數(shù)中傳遞的編碼格式 如 Chinese (Simplified)_China.936,Chinese_China.936 這些一定要和原來老版本的實例最好保持一直,密碼加密格式最好也是和老版本的實例保持一直如 scram-sha-256,實例化之后根據(jù)自己的需要把 postgresql.conf 文件中的配置參數(shù)按照老版本中改動過的地方按照自己需求再調整一次,然后把 pg_hba.conf 直接復制到新版本中,原則就是新老版本盡量保持配置一致。
準備好這些之后就可以開始升級操作了,首先關閉老的實例,確保新老版本的兩個實例都沒有啟動,都在關閉狀態(tài)。
net stop PostgreSQL


檢查新老實例版本所在的文件夾,我們的賬戶是都有完整的全部權限,我這里 cmd 命令是以 Administrator 賬戶運行的,所以我為兩個文件夾都賦予了 Administrator 的完整權限
然后在新版本的 bin 下執(zhí)行如下命令 cmd環(huán)境
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

像上圖的狀態(tài),就說明我們的升級命令運行成功了。
命令執(zhí)行完成之后記得直接關閉 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

如果原先老的實例中有部分數(shù)據(jù)庫用到了一些擴展比如 postgis 等,還需要執(zhí)行一個擴展的升級命令如下:
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升級內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決postgreSql遠程連接數(shù)據(jù)庫超時的問題
這篇文章主要介紹了解決postgreSql遠程連接數(shù)據(jù)庫超時的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
Linux CentOS 7安裝PostgreSQL9.3圖文教程
這篇文章主要為大家詳細介紹了Linux CentOS 7安裝PostgresSQL9.3圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11
postgresql 實現(xiàn)查詢某時間區(qū)間的所有日期案例
這篇文章主要介紹了postgresql 實現(xiàn)查詢某時間區(qū)間的所有日期案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
postgresql 中的加密擴展插件pgcrypto用法說明
這篇文章主要介紹了postgresql 中的加密擴展插件pgcrypto用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
Windows?環(huán)境搭建?PostgreSQL?邏輯復制高可用架構數(shù)據(jù)庫服務
本文主要介紹Windows下搭建PostgreSQL的主從邏輯復制,關于PostgreSQl的相關運維文章,網絡上大多都是?Linux?環(huán)境下的操作,鮮有在?Windows?環(huán)境下配置的教程,所以本文采用?Windows?環(huán)境作為演示系統(tǒng)來進行?PostgreSQL?高可用數(shù)據(jù)庫服務的搭建,感興趣的朋友一起看看吧2023-05-05
PostgreSQL關閉數(shù)據(jù)庫服務的三種模式
PostgreSQL 提供了三種關閉數(shù)據(jù)庫服務的不同方式,它們最終都是發(fā)送一個關閉信號到 postgres 主服務進程,本文將給大家詳細的介紹一下這三種模式,需要的朋友可以參考下2024-07-07

