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