隨著PostgreSQL社區對低版本(如9.4、10)執行個體的停止維護,繼續使用低版本執行個體將存在風險,如果您需要將低版本的RDS PostgreSQL執行個體升級到更高版本,或者希望使用高版本的新特性,建議您進行大版本升級操作。
背景資訊
PostgreSQL社區會定期發布一個大版本,大版本通常帶來功能、效能等方面的提升,而較低資料庫大版本社區將陸續不再提供支援,效能和安全的風險也將逐漸增加。為了讓您享受PostgreSQL新的大版本帶來的功能、效能提升,同時降低升級風險,RDS PostgreSQL提供大版本升級功能。
升級流程
升級前檢查
為確保升級順利,需要在大版本升級前檢查當前主執行個體是否支援大版本升級,RDS PostgreSQL提供檢查結果和檢查報告,檢查報告異常時不允許升級。處理完異常後才能進行大版本升級。
(可選)大版本升級相容性測試
大版本升級可能會出現與現有應用的相容性問題,因此建議大版本進行升級時,選擇不割接建立一個新版本的測試執行個體進行業務測試及確保相容性。
正式升級
在原執行個體上再次執行大版本升級,選擇割接將資料流量切換至新版執行個體。割接時的升級模式包括本地升級和藍綠部署,請根據實際情況進行評估選擇。
本地升級:大版本升級任務將在原執行個體上進行,不會建立新版本執行個體。升級後的原執行個體大版本提升,並將繼承原有的訂單、執行個體名稱、標籤、CloudMonitor警示規則及備份規則。
藍綠部署:大版本升級會保留原執行個體,並建立一個新版本的執行個體,新執行個體在建立中不收費,建立成功後將會產生費用,並且計費方式可能會發生變化。升級完成後,原執行個體和新執行個體將同時產生費用,且新執行個體暫不享受原執行個體的優惠。
原執行個體計費方式
新執行個體計費方式
訂用帳戶/隨用隨付
隨用隨付
Serverless
Serverless
功能特點
支援跨版本升級:例如直接從PostgreSQL 10.0升級到PostgreSQL 13.0。
支援升級演練:通過不割接的方式,可以在不影響原執行個體的情況下,驗證整個升級流程。
支援平滑升級:
無需修改應用:通過割接方式升級,您無需修改應用中已配置的資料庫連接地址。割接結束後,藍綠部署將會自動交換原執行個體與新執行個體的串連地址,而本地升級將保持原執行個體的串連地址不變。
說明對於本地升級,不會修改虛擬IP(Virtual IP Address)。
對於藍綠部署,升級後新執行個體的虛擬IP(Virtual IP Address)與原執行個體不同,如果您在應用程式中配置了虛擬IP,則需要修改應用,因此,建議您在應用程式中配置執行個體串連地址,如何擷取執行個體串連地址,請參見查看或修改串連地址和連接埠。
無需停機:升級時原執行個體無需停機,而是暫時變為唯讀狀態(持續時間長度為分鐘級),降低業務中斷帶來的風險。
保留執行個體設定:
升級後保留原執行個體的白名單、參數設定、外掛程式(新版本不支援的外掛程式和參數除外)。
加密執行個體升級大版本後仍為加密執行個體,加密Key保持不變。
升級費用
本地升級不會造成費用的變化,也不會產生訂單。
藍綠部署:
升級後產生的新執行個體的計費方式可能會發生變化。
原執行個體計費方式
新執行個體計費方式
訂用帳戶/隨用隨付
隨用隨付
Serverless
Serverless
升級完成後,原執行個體和新執行個體將同時產生費用。在確保業務在新執行個體中穩定運行後,您可以將新執行個體轉成訂用帳戶,將原執行個體釋放或退訂,但需要注意以下情況:
如果您的原執行個體計費方式為訂用帳戶且尚未到期,新執行個體無法繼承原執行個體包月剩餘時間長度,釋放原執行個體可能存在費用損失。
如果您的原執行個體購買時使用了優惠,升級後新執行個體將不會繼承此優惠,請進入執行個體退訂頁面查看具體退款金額後,再評估是否升級。
訂用帳戶退款金額退款時間以實際退訂賬單為準,非即時到賬。
前提條件
升級大版本前需要滿足以下前提條件:
版本:PostgreSQL 16或以下版本
說明PostgreSQL 9.4最高僅支援直接升級到PostgreSQL 14,如果您需要升級到PostgreSQL 15或以上版本,則請先升級到PostgreSQL 10、11、12、13或14,然後再升級到PostgreSQL 15或以上版本。
網路類型:專用網路。
如果網路類型為傳統網路,您需要將網路類型切換為專用網路,並且切換時不選擇保留原傳統網路。如何查看或切換網路類型,請參見更改網路類型。
說明切換為專用網路時,如果您選擇了保留原傳統網路,則需要等待傳統網路保留時間結束後,才能啟動大版本升級任務。
執行個體ID不是以
pg-cn
開頭。執行個體未啟用Babelfish,即小版本號碼尾碼不帶
babelfish
。如果原執行個體中建立了唯讀執行個體,則無法選擇割接升級。如果需要進行割接升級,請參見具有隻讀執行個體的主執行個體如何升級大版本。
升級影響
升級大版本將會造成以下影響:
如果選擇了割接方式升級,在割接過程中,原執行個體將會被設定為唯讀,並會造成分鐘級業務閃斷,請在業務低峰期進行升級。如果選擇不割接方式進行升級,則不受影響。
說明原執行個體被設定唯讀時間的長短與資料庫物件數量相關,執行個體資料庫物件數越多,唯讀時間越長,當資料庫物件數達到百萬層級時,唯讀時間可能達到十分鐘級甚至小時級。您可以使用
SELECT count(1) FROM pg_class;
命令查看資料庫的對象數。具體的閃斷時間長度取決於DNS緩衝重新整理時間。您可以嘗試切換虛擬交換器,通過業務閃斷時間長度來評估用戶端的DNS緩衝重新整理時間。
升級過程的時間長短與執行個體的資料量和資料庫物件數量相關,執行個體資料量越大,資料庫物件數越多,升級時間越長。
對於藍綠部署,在割接後,如果不希望原執行個體被設定為唯讀,請在升級後將參數
rds_force_trans_ro_non_sup
設定為off
,詳情請參見設定執行個體參數。
如果原執行個體使用了新版本不支援的參數,在新版本中該參數會被自動刪除,如果低版本的參數取值不在高版本對應參數的合法區間,在新版本中該參數會被置為高版本參數模板的預設值。
對於藍綠部署,新執行個體不繼承原執行個體的執行個體名稱、標籤、CloudMonitor警示規則以及備份資料。
對於藍綠部署,自建的唯讀節點和邏輯複製槽在升級後仍然保留在原執行個體下,不會自動轉移到高版本執行個體,需要在升級後進行重建。
對於本地升級,自建唯讀節點的主備關係以及邏輯複製槽在升級後會丟失,請依照實際情況謹慎選擇升級模式。
如果待升級的執行個體作為Data Transmission Service(DTS)的源執行個體或目標執行個體,則升級後需要重建DTS任務。建立DTS任務詳見DTS產品文檔。
當待升級的執行個體中存在Replication Slots的訂閱端,升級可能出現複製槽搶佔導致的資料不同步問題。需要執行如下操作防止出現資料不同步的情況。對於本地升級,建議升級前關閉源執行個體的訂閱。
當待升級的執行個體中建立了唯讀執行個體時,則無法直接進行升級,需要在升級前後進行以下操作:
升級大版本將會使用最新的核心小版本,可能遇到外掛程式相容性問題,具體請參見升級核心小版本。
具體升級時間取決於資料量,無法準確預估,大版本升級時您可以在工作中樞查看任務進度,具體請參見任務管理。
升級後暫不支援進行大版本降級操作,如需降級,請購買低版本執行個體後,使用DTS遷移,將執行個體遷移至低版本中。
升級過程中,系統會暫時將
statement_timeout
的值修改為0,並在升級完成後恢複為原值。
升級大版本
如果待升級的執行個體中建立了唯讀執行個體,需在升級前執行以下步驟:
將應用程式中配置的唯讀執行個體串連地址修改為主執行個體串連地址。
說明為保證業務穩定,建議在業務低峰期修改應用串連地址。
刪除唯讀執行個體。
進入大版本升級頁面。
在升級檢查頁簽中,選擇目標升級版本,然後單擊建立升級檢查報告,並等待數分鐘。
說明為確保升級能順利完成,請確保升級檢查報告的檢查結果為成功時,再進行後續升級步驟。
升級檢查成功後,如果對主執行個體執行了
CREATE EXTENSION
操作,需重新執行檢查。
當升級檢查報告的檢查結果為失敗時,可單擊查看資訊查看報告詳細內容,常見的報錯及原因請參見解讀RDS PostgreSQL大版本升級檢查報告。
單擊升級執行個體頁簽,閱讀警告內容,然後選擇升級版本,並單擊繼續建立升級執行個體。
在彈出的視窗中確認注意事項,單擊確定,並設定參數(以下僅列舉重點參數):
配置
說明
儲存類型
選擇執行個體的儲存類型。
說明升級模式為本地升級時無需配置該參數。
大版本升級功能雲端式盤快照,當前升級後支援選擇如下儲存類型。
通用雲端硬碟
ESSD PL1雲端硬碟
ESSD PL2 雲端硬碟
ESSD PL3 雲端硬碟
目標主可用性區域
系統支援升級後將新的主備執行個體配置到其他可用性區域。
說明升級模式為本地升級時無需配置該參數。
目標備可用性區域
目標主執行個體交換器
目標備執行個體交換器
割接配置
根據實際需求選擇是否將流量切換到新版本執行個體上。
不割接:不自動切換。此選項一般用於正式升級之前測試當前業務在新版本中的相容性。建議第一次執行時選擇不割接,應用程式層完全測實驗證通過後,釋放執行個體並重複升級大版本操作,選擇割接開始正式升級。
說明遷移過程中,原執行個體的業務不會受到影響。
如需通過不割接升級執行個體,需在遷移完成後把應用程式中的資料庫連接地址改為新執行個體的串連地址。如何查看串連地址,請參見查看或修改串連地址和連接埠。
割接:自動切換。此選項一般用於在確認業務可以穩定運行在新版本之後執行正式升級。
本地升級:不會產生新執行個體,原執行個體繼承升級前的設定,您無需更改應用程式裡的資料庫連接地址。
藍綠部署:割接結束會自動連接到新執行個體,您無需更改應用程式裡的資料庫連接地址。
說明割接後無法回退,請謹慎選擇。
切換過程中,原執行個體會被變為唯讀,業務無法寫入,請務必在業務低峰期進行。
如果原執行個體中建立了唯讀執行個體,則無法選擇割接。只能通過不割接升級執行個體,且原唯讀執行個體不會被複製。升級完成後,您需要在高版本執行個體中另行建立PostgreSQL唯讀執行個體。
割接時間
遷移完成後,業務切換至新執行個體的時間。
立刻:遷移完成後立即切換。
執行個體可營運時間:在可營運時間段內切換。
說明僅當割接配置為割接時需要配置該參數。
升級模式
選擇升級模式。
說明僅當割接配置為割接時需要配置該參數。
本地升級:大版本升級任務將在原執行個體上進行,不會建立新版本執行個體。升級後的原執行個體大版本提升,並將繼承原有的訂單、執行個體名稱、標籤、CloudMonitor警示規則及備份規則。
藍綠部署:大版本升級會保留原執行個體,並建立一個新版本的執行個體,新執行個體在建立中不收費,建立成功後將會產生費用,並且計費方式可能會發生變化。升級完成後,原執行個體和新執行個體將同時產生費用,且新執行個體暫不享受原執行個體的優惠。
統計資訊收集模式
選擇在哪個時間點對資料庫執行統計資訊收集。
割接前收集:可以保證業務穩定性。如果執行個體資料量太大可能會導致升級時間較久。
割接後收集:執行個體升級速度較快。升級後訪問未產生統計資訊的表可能導致執行計畫不準確,業務高峰期還可能導致資料庫宕機。
說明對於不割接情境,割接前收集表示新執行個體開放讀寫前收集,割接後收集表示新執行個體開放讀寫後收集。
儲存空間
選擇新版本執行個體的儲存空間大小。
說明升級模式為本地升級時無需配置該參數。
本地碟執行個體升級大版本時,支援儲存空間縮容。可選擇的最小儲存空間需滿足以下條件:
以下兩者中的最小值:
原執行個體已使用儲存空間 × 120%,如果計算結果(單位需計算為GB)不是5的倍數,則向上湊為5的倍數。
說明原執行個體已使用儲存空間,可通過監控與警示功能查看監控項磁碟空間 (MB),具體方法,請參見查看增強監控。
原執行個體儲存空間。
大於等於ESSD雲端硬碟可購買的最小值,不足時以如下值作為可購買最小值:
ESSD PL1雲端硬碟:20 GB。
ESSD PL2雲端硬碟:500 GB。
ESSD PL3雲端硬碟:1500 GB。
說明例如:
原執行個體儲存空間為100 GB,已使用70 GB,升級大版本時,儲存類型選擇為ESSD PL1雲端硬碟。
計算方法:70 × 120% = 84 GB,向上湊為5的倍數85 GB。因此,可購買的最小儲存空間為85 GB。
原執行個體儲存空間為700 GB,已使用350 GB,升級大版本時,儲存類型選擇為ESSD PL2雲端硬碟。
計算方法:350 × 120% = 420,420 GB小於ESSD PL2雲端硬碟可購買的最小值500 GB,因此,可購買的最小儲存空間為500 GB。
執行個體規格
選擇新版本執行個體的規格。有關執行個體規格的更多詳情,請參見主執行個體規格列表。
說明升級模式為本地升級時無需配置該參數。
單擊立即建立。
選擇升級模式為藍綠部署時,此時原執行個體狀態變更為遷移中,並且執行個體列表中會多出一個狀態為建立中的新執行個體。當兩個執行個體的狀態變更為運行中即代表建立或升級完成。具體時間取決於資料量,請耐心等待。
說明升級任務建立後不支援修改或刪除。
原執行個體狀態為遷移中時,執行個體不支援修改參數、重啟、釋放等營運操作。
如果單擊立即建立時,提示資源不足,請切換目標主執行個體可用性區域。
升級完成後,在升級歷史頁簽,單擊目標升級任務升級日誌列的查看資訊,即可查看升級過程中執行個體的唯讀時間及詳細的升級步驟。
如果在步驟一中刪除了唯讀執行個體,則在升級後,還需執行以下步驟:
在新執行個體上重新建立PostgreSQL唯讀執行個體。
在應用程式中,將步驟一中修改的執行個體串連地址修改為新的唯讀執行個體串連地址。
後續步驟
對於藍綠部署,確認業務已在新執行個體中穩定運行後,將新執行個體轉成訂用帳戶。
對於藍綠部署,釋放原執行個體。
說明如果您的原執行個體計費方式為訂用帳戶且尚未到期,釋放執行個體可能存在費用損失。
如果您的原執行個體購買時使用了優惠,升級後新執行個體將不會繼承此優惠,原執行個體退訂請以實際退訂頁為準。
訂用帳戶退款金額退款時間以實際退訂賬單為準,非即時到賬。
新執行個體不包含唯讀執行個體,您可以按需建立PostgreSQL唯讀執行個體。
相關文檔
您還可以使用API進行大版本升級,相關API如下:
API
描述
RDS PostgreSQL執行個體大版本升級檢查
查詢RDS PostgreSQL執行個體大版本升級檢查報告
RDS PostgreSQL執行個體升級資料庫大版本
查詢RDS PostgreSQL執行個體大版本升級歷史任務