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