本文介紹如何通過藍綠部署的模式升級RDS PostgreSQL資料庫大版本。
前提條件
背景資訊
在藍綠部署模式下,原執行個體恢複到一個新執行個體,並使用pg_upgrade將其升級至目標版本。割接情境下,自動切換原串連地址到新執行個體。
RDS PostgreSQL控制台還支援通過零停機模式和本地升級模式升級資料庫大版本,不同模式的對比請參見大版本升級方案簡介。
升級費用
通過藍綠部署模式升級大版本,系統會在原執行個體的基礎上,建立一個執行個體,在升級完成後:
原執行個體和新執行個體將同時產生費用。
原執行個體的費用和計費方式保持不變。
新執行個體的計費方式相比於原執行個體可能會發生變化。
原執行個體計費方式
新執行個體計費方式
訂用帳戶/隨用隨付
隨用隨付
Serverless
Serverless
注意事項
業務影響:通過藍綠部署(割接)進行升級時,在割接過程中,原執行個體將會被設定為唯讀,並會造成分鐘級業務閃斷,請在業務低峰期進行升級。如果選擇不割接方式進行升級,則不受影響。
原執行個體唯讀時間的長短與資料庫物件數量相關,執行個體資料庫物件數越多,唯讀時間越長,當資料庫物件數達到百萬層級時,唯讀時間可能達到十分鐘級甚至小時級。您可以使用
SELECT count(1) FROM pg_class;命令查看資料庫的對象數。用戶端感知的閃斷時間長度取決於DNS緩衝重新整理時間。您可以嘗試切換虛擬交換器,通過業務閃斷時間長度來評估用戶端的DNS緩衝重新整理時間。
升級過程的時間長短與執行個體的資料庫物件數量相關,資料庫物件數越多,升級時間越長。大版本升級時您可以在工作中樞查看任務進度。
對於藍綠部署,在割接後,如果不希望原執行個體被設定為唯讀,請在升級後將參數
rds_force_trans_ro_non_sup設定為off,詳情請參見設定執行個體參數。
跨版本升級:RDS PostgreSQL 9.4和10高效能本地碟執行個體僅支援升級至雲端硬碟版執行個體,最高可直接升級至RDS PostgreSQL 14。如果需要升級至PostgreSQL 15或更高版本,請首先升級至中間版本(PostgreSQL 9.4可升級至10、11、12、13或14;PostgreSQL 10可升級至11、12、13或14),然後再進行PostgreSQL 15或更高版本的升級。
複製槽(Replication Slots):
當原執行個體中存在複製槽的發布端,升級會導致複製槽丟失。
當原執行個體中存在複製槽的訂閱端,升級可能出現複製槽搶佔導致的資料不同步問題。解決方案請參見如何避免在升級過程中出現複製槽搶佔導致的資料不同步問題。
虛擬IP:對於藍綠部署(割接),升級後新執行個體的虛擬IP(Virtual IP Address)會變更,請自行檢查網路連通性,如防火牆配置。
虛擬IP變更影響:如果您在應用程式中配置了虛擬IP,則需要修改應用配置以指向新執行個體的虛擬IP。
建議方案:為避免手動修改配置的複雜性,建議在應用程式中直接配置執行個體的串連地址,擷取執行個體串連地址請參見查看或修改串連地址和連接埠。
參數變化:
如果原執行個體使用了新版本不支援的參數,在新版本中該參數會被自動刪除。
如果原執行個體的參數取值不在新版本對應參數取值的合法區間,則在新版本中,該參數將被設定為該版本參數模板的預設值。
升級過程中,系統會暫時將
statement_timeout的值修改為0,並在升級完成後恢複為原值。
DTS任務:如果待升級的執行個體作為Data Transmission Service(DTS)的源執行個體或目標執行個體,則升級後需要重建DTS任務 。
外掛程式相容性問題:進行大版本升級時,系統將自動更新至最新的核心小版本,可能會遇到外掛程式相容性問題。
新執行個體不繼承原執行個體的執行個體名稱、標籤、CloudMonitor警示規則以及備份資料。
步驟一:升級前檢查
訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
(可選)如果待升級的執行個體中建立了唯讀執行個體,需要將應用程式中配置的唯讀執行個體串連地址修改為主執行個體串連地址,並刪除唯讀執行個體。
說明為保證業務穩定,建議在業務低峰期修改應用串連地址。
在左側導覽列單擊大版本升級。
說明如果左側導覽列中沒有大版本升級,請檢查RDS PostgreSQL執行個體版本及配置,具體請參見前提條件。
在升级检查頁簽中,單擊创建升级检查报告。
擇選升級版本,且升级模式選擇蓝绿部署後,單擊確定。
此時,執行個體狀態變為實例維護中,待升級檢查完成後,執行個體狀態會變為執行中。
當升級檢查報告結果為成功或警告時,可以進行後續的大版本升級步驟;若結果為失败,則需單擊查看資訊,根據報告內容修複異常檢查項後,再次進行升級前檢查。常見的報錯及原因請參見解讀RDS PostgreSQL大版本升級檢查報告。
重要為確保升級順利完成,當升級檢查報告的檢查結果為警告時,建議根據報告內容修複異常檢查項後,再次進行升級前檢查,直至檢查結果為成功。
升級檢查成功後,如果在主執行個體中建立了外掛程式,需重新執行檢查。
步驟二:升級大版本
單擊升级实例頁簽,閱讀警告內容,然後選擇升級版本,並單擊建立升級任務。
在彈出的視窗中,閱讀提示內容,然後單擊確定。
在建立大版本升級任務地區,升级模式為蓝绿部署,並配置對應升級參數(僅列舉重點參數)。
配置
說明
存储类型
新執行個體儲存類型僅支援ESSD雲端硬碟和高效能雲端硬碟。選擇ESSD雲端硬碟時,支援切換效能等級。
新執行個體的儲存類型需和原執行個體保持一致。
說明不同效能層級的ESSD雲端硬碟最小容量不同,切換效能等級時,執行個體儲存空間的最小值會根據所選效能等級自動調整,需確保新值滿足要求。
原執行個體為高效能本地碟時,新執行個體僅支援選擇ESSD雲端硬碟。
目标主可用区
系統支援升級後將新的主備執行個體配置到其他可用性區域,請根據實際情況設定。
目标备可用区
目标主实例交换机
目标备实例交换机
割接配置
根據實際需求選擇是否將流量切換到新版本執行個體上。
不割接:不自動切換。此選項一般用於正式升級之前測試當前業務在新版本中的相容性。
割接:自動切換。此選項一般用於在確認業務可以穩定運行在新版本之後執行正式升級。割接結束會自動連接到新執行個體,您無需更改應用程式裡的資料庫連接地址。
說明割接後無法回退,請謹慎選擇。
割接過程中,原執行個體將會被設定為唯讀,並會造成分鐘級業務閃斷,請在業務低峰期進行升級。如果選擇不割接方式進行升級,則不受影響。
建議第一次執行時選則不割接,應用程式層完全測實驗證通過後,釋放新執行個體並重複升級操作,選擇割接開始正式升級。
儲存空間
選擇新版本執行個體的儲存空間大小。
執行個體規格
選擇新版本執行個體的規格。有關執行個體規格的更多詳情,請參見主執行個體規格列表。
單擊立即建立。
當執行個體狀態變為遷移中時,表示升級任務已正式啟動。
升級所需時間與執行個體中的資料庫物件數量密切相關,資料庫物件數量越多,升級所需時間越長。在進行大版本升級時,您可以在工作中樞查看升級進度。
重要升級任務建立後不支援修改或刪除。
原執行個體狀態為遷移中時,該執行個體不支援修改參數、重啟、釋放等營運操作。
如果建立任務時提示資源不足,請切換目標主執行個體可用性區域。
查看升級結果。
當原執行個體和新執行個體的狀態為執行中時,表示執行個體升級成功。
說明藍綠部署(切割)模式,升級完成後流量自動切換到新執行個體(高版本)。
藍綠部署(不切割)模式,升級完成後流量不切換到新執行個體(高版本)。
升級完成後,在升级历史頁簽,單擊目標升級任務升級日誌列的查看資訊,即可查看升級過程中執行個體的唯讀時間及詳細的升級過程。其中唯讀時間為割接時間和割接結束時間之間的時段,此時間段不包括因DNS緩衝未重新整理而導致無法串連的時間。
對於藍綠部署(不切割),系統同樣會顯示割接時間和割接結束時間,以便作為割接情境的參考和預估。
後續操作
對於採用藍綠部署(割接)的模式進行升級的執行個體,確認業務已在新執行個體中穩定運行後,請及時釋放原執行個體。
同時,建議將新執行個體的計費方式轉成訂用帳戶,以獲得更多的優惠。
說明如果您的原執行個體計費方式為訂用帳戶且尚未到期,釋放執行個體可能存在費用損失。
如果您的原執行個體購買時使用了優惠,升級後新執行個體將不會繼承此優惠,原執行個體退訂請以實際退訂頁面為準。
訂用帳戶退款金額退款時間以實際退訂賬單為準,非即時到賬。
(可選)新執行個體不包含唯讀執行個體,如果在升級前刪除了唯讀執行個體,還需執行:
在新執行個體上重新建立PostgreSQL唯讀執行個體。
在應用程式中,將原唯讀執行個體串連地址(已在升級前修改為主執行個體串連地址)修改為新的唯讀執行個體串連地址。
升級結果說明
升級過程中,升级历史頁簽的升級記錄中,包含以下升級結果。
升級結果 | 執行個體狀態 | 含義 | 可執行動作 |
運行中 | 遷移中 | 升級任務正在運行。 | 無。 |
成功 | 執行中 | 升級任務成功。 | 無。 |
相關API
API | 描述 |
RDS PostgreSQL執行個體大版本升級檢查。 | |
查詢RDS PostgreSQL執行個體大版本升級檢查報告。 | |
RDS PostgreSQL執行個體升級資料庫大版本。 | |
查詢RDS PostgreSQL執行個體大版本升級歷史任務。 |