PostgreSQL版本發布規則,一年一個大版本,一個季度一個小版本;PG遇到的BUG問題,社區會很快進行修復,并在下一個版本中發布,因此有必要進行對數據庫版本升級,避免觸發已知的BUG帶來業務系統的不穩定。本文主要分享一下,PG小版本升級、跨版本升級和借助邏輯復制進行數據庫升級。
PG小版本的迭代不會改變內部的存儲格式,因此升級小版本只需要安裝最新版本后,使用新版本重新啟動數據庫即可。
安裝最新版本數據庫
停止數據庫實例
對數據目錄進行備份
使用新版本啟動數據庫
調整環境變量,PGHOME/LD_LIRARAY_PATH等
注意:在安裝新版本數據庫時,要保證數據庫塊大小一致。
PG大版本升級,在9.4版本之間只能通過pg_upgrade進行,9.4版本之后可以通過第三方擴展插件pg_logical進行邏輯復制升級;10版本社區加入了邏輯復制功能,可以借助邏輯復制進行升級。
使用pg_dumpall備份全局信息,角色和表空間
pg_dumpall-f /tmp/global.sql -g -d postgres -h 127.0.0.1 -p 5432 -U postgres
備份數據
pg_dump-f /tmp/data.sql -h 127.0.0.1 -d dbname -c -C -F p -E utf8 -Upostgres
在新版本數據庫中進行恢復
psql-h 127.0.0.1 -d postgres < /tmp/global.sql
psql-h 127.0.0.1 -d postgres < /tmp/data.sql
注意:當數據庫較大時,備份恢復耗時較久,嚴重影響業務
pg_upgrade是官方提供的版本升級工具,有普通模式和Link模式兩種升級模式。在普通模式下,會把舊版本的數據拷貝到新版本中,需要確保有足夠的磁盤空間存儲新舊兩份數據;Link模式下,只是在新版本的數據目錄中建立了舊版本數據文件的硬連接,可以有效減少磁盤占用的空間。
在升級之前建議使用pg_upgrade-c參數檢查新舊版本的兼容性,把每一項不兼容的問題解決后才可以順利升級,-c參數只會檢查新舊版本兼容性,不會運行真正的升級程序,不會修改數據文件,在運行結束后,會輸出兼容性結果。
安裝新版本并初始化數據目錄
如果使用源碼編譯安裝,configure配置和原庫一致。可以使用pg_config查看舊版本數據庫安裝時的配置參數。
檢查新舊版本兼容性
pg_upgrade-b /data/old_base -B /data/new_base -d /data/old_data -D/data/new_data -c -p 5432 -P 5433
所有的選項都是OK狀態表示,校驗通過;否則說明不兼容,根據提示信息進行處理。
停止舊版本數據庫
pg_ctlstop -D /data/old_base 并修改pg_hba.conf為本地trust模式
使用pg_upgrade普通模式升級
pg_upgrade-b /data/old_base -B /data/new_base -d /data/old_data -D/data/new_data -p 5432 -P 5433
升級完成后,會生成兩個腳本,analyze_new_cluster.sh,該腳本主要是分析收集新庫的統計信息等;delete_old_cluster.sh是刪除舊數據庫的數據。
升級完成后修改相關環境變量并進行數據庫驗證
邏輯復制功能,從10版本開始內置支持,也可以使用第三方邏輯復制插件pg_logical。邏輯復制是基于邏輯解析,主庫將表中的WAL日志解析成一定格式并發送給邏輯備庫,邏輯備庫收到解析后的WAL日志進行重做,從而實現表數據同步。注意:WAL_LEVEL要設置為LOGICAL級別。
目前不支持DDL解析,只能解析INSERT/UPDATE/DELETE/TRUNCATE
TEMPORARY表和UNLOGGED表不被復制
表必須有PRIMARY KEY或者唯一約束,否則UPDATE、DELETE操作無法復制
序列不被復制
大對象不被復制
新增加的表,不會自動加入訂閱
轉儲全局信息,角色、表空間
pg_dumpall-f /tmp/global.sql -g -d postgres -h 127.0.0.1
轉儲表結構信息
pg_dump-Fc -s -d postgres -p 5411 -U postgres -f /tmp/lrtest_schema.dmp
在目標端恢復上述備份
在源數據庫上創建發布
createpublication test_pg12_upgrade_pub for all tables;
在目標端創建訂閱
createsubscription test_pg12_upgrade_sub connection port=5432dbname=postgres user=postgres password=root publicationtest_pg12_upgrade_pub;
默認會復制源端表中現有數據。
監控復制
select * from pg_stat_replication;
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/130059.html
摘要:小版本更新不受影響,比如到升級不受影響。下面介紹兩種升級方案可供選擇,均是官方文檔提及的方案官方文檔參考。方案命令是直接對舊的數據庫目錄文件進行升級的方案,直接將舊版本的數據文件格式升級為新版本使用的格式。 PostgreSQL在默認情況下,是不能跨版本升級的(9.4, 9.5, 9.6等等這些版本跨版本升級。小版本更新不受影響,比如9.6.1到9.6.2升級不受影響)。甚至PG為了數...
摘要:但如果涉及到跨大版本升級比如升級到,這種直接替換軟件就不行了,因為跨版本的內部存儲形式發生了變化官方對于升級提供了種方法,這里遷移我使用了來進行處理細節可以參考官方文檔。 1 場景描述 最近使用 postgresql 命令行比較多,就找了個類似 mycli 工具,pgcli,這個是針對 postgresql 的,興沖沖的安裝了 brew install pgcli 沒想到這貨自動幫我...
摘要:作者譚峰張文升出版日期年月頁數頁定價元本書特色中國開源軟件推進聯盟分會特聘專家撰寫,國內多位開源數據庫專家鼎力推薦。張文升中國開源軟件推進聯盟分會核心成員之一。 很高興《PostgreSQL實戰》一書終于出版,本書大體上系統總結了筆者 PostgreSQL DBA 職業生涯的經驗總結,本書的另一位作者張文升擁有豐富的PostgreSQL運維經驗,目前就職于探探科技任首席PostgreS...
摘要:所以就安裝了另外一個很喜歡的數據庫的已經修復了,后面會補上的安裝添加自啟動初始化數據庫啟動數據庫服務安裝上面是一條命令安裝自啟動配置略安裝 系統升級 阿里云的FreeBSD系統默認安裝版本是10.1,這個版本已經超出了官方的維護時間了,所以首先要進行系統的版本升級 設置當前系統版本為10.1-release,setenv UNAME_r 10.1-RELEASE 修改update...
摘要:所以就安裝了另外一個很喜歡的數據庫的已經修復了,后面會補上的安裝添加自啟動初始化數據庫啟動數據庫服務安裝上面是一條命令安裝自啟動配置略安裝 系統升級 阿里云的FreeBSD系統默認安裝版本是10.1,這個版本已經超出了官方的維護時間了,所以首先要進行系統的版本升級 設置當前系統版本為10.1-release,setenv UNAME_r 10.1-RELEASE 修改update...
閱讀 1353·2023-01-11 13:20
閱讀 1699·2023-01-11 13:20
閱讀 1211·2023-01-11 13:20
閱讀 1902·2023-01-11 13:20
閱讀 4161·2023-01-11 13:20
閱讀 2751·2023-01-11 13:20
閱讀 1397·2023-01-11 13:20
閱讀 3664·2023-01-11 13:20