本文介紹如何通過本地升級的模式升級RDS PostgreSQL資料庫大版本。
前提條件
執行個體版本為RDS PostgreSQL 16或以下版本。
執行個體儲存類型為雲端硬碟。
說明如果執行個體為高效能本地碟,僅支援通過藍綠部署模式升級大版本。
執行個體計費方式為隨用隨付、訂用帳戶。
說明如果為Serverless執行個體,僅支援通過藍綠部署模式升級大版本。
執行個體未啟用Babelfish,即小版本號碼尾碼不帶
babelfish。
背景資訊
在本地升級模式下,使用pg_upgrade將原執行個體升級到目標版本。同時,保留所有元資訊,包括原執行個體配置和賬單資訊等。
RDS PostgreSQL控制台還支援通過零停機模式和藍綠部署模式升級資料庫大版本,不同模式的對比請參見大版本升級方案簡介。
升級費用
免費。
注意事項
業務影響:在切換過程中,執行個體將會被設定為唯讀,並會造成分鐘級業務閃斷,請在業務低峰期進行升級。
唯讀時間的長短與資料庫物件數量相關,執行個體資料庫物件數越多,唯讀時間越長,當資料庫物件數達到百萬層級時,唯讀時間可能達到十分鐘級甚至小時級。您可以使用
SELECT count(1) FROM pg_class;命令查看資料庫的對象數。執行個體規格:若升級過程中執行個體未達推薦規格,系統將自動嘗試使用推薦規格進行升級。這將導致分鐘級的唯讀狀態,並額外出現一次秒級閃斷。建議升級前,處理大版本升級檢查報告中關於執行個體規格的警示。
複製槽(Replication Slots):
當原執行個體中存在複製槽的發布端,升級會導致複製槽丟失。
當原執行個體中存在複製槽的訂閱端,升級可能出現複製槽搶佔導致的資料不同步問題。解決方案請參見如何避免在升級過程中出現複製槽搶佔導致的資料不同步問題。
參數變化:
如果原執行個體使用了新版本不支援的參數,在新版本中該參數會被自動刪除。
如果原執行個體的參數取值不在新版本對應參數取值的合法區間,則在新版本中,該參數將被設定為該版本參數模板的預設值。
升級過程中,系統會暫時將
statement_timeout的值修改為0,並在升級完成後恢複為原值。
DTS任務:如果待升級的執行個體作為Data Transmission Service(DTS)的源執行個體或目標執行個體,則升級後需要重建DTS任務 。
外掛程式相容性問題:進行大版本升級時,系統將自動更新至最新的核心小版本,可能會遇到外掛程式相容性問題。
執行個體備份:在升級前後,均會對執行個體進行全量備份,以便於後續的複製恢複。
步驟一:升級前檢查
訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
(可選)如果待升級的執行個體中建立了唯讀執行個體,需要將應用程式中配置的唯讀執行個體串連地址修改為主執行個體串連地址,並刪除唯讀執行個體。
說明為保證業務穩定,建議在業務低峰期修改應用串連地址。
在左側導覽列單擊大版本升級。
說明如果左側導覽列中沒有大版本升級,請檢查RDS PostgreSQL執行個體版本及配置,具體請參見前提條件。
在升级检查頁簽中,單擊创建升级检查报告。
擇選升級版本,且升级模式選擇本地升级後,單擊確定。
此時,執行個體狀態變為實例維護中,待升級檢查完成後,執行個體狀態會變為執行中。
當升級檢查報告結果為成功或警告時,可以進行後續的大版本升級步驟;若結果為失败,則需單擊查看資訊,根據報告內容修複異常檢查項後,再次進行升級前檢查。常見的報錯及原因請參見解讀RDS PostgreSQL大版本升級檢查報告。
重要為確保升級順利完成,當升級檢查報告的檢查結果為警告時,建議根據報告內容修複異常檢查項後,再次進行升級前檢查,直至檢查結果為成功。
升級檢查成功後,如果在主執行個體中建立了外掛程式,需重新執行檢查。
步驟二:升級大版本
單擊升级实例頁簽,閱讀警告內容,然後選擇升級版本,並單擊建立升級任務。
在彈出的視窗中,閱讀提示內容,然後單擊確定。
在建立大版本升級任務地區,升级模式選擇本地升级,並配置割接时间(遷移完成後,業務切換至新執行個體的時間):
立刻:遷移完成後立即切換。
实例可运维时间:在可營運時間段內切換。
單擊立即建立。
當執行個體狀態變為遷移中時,表示升級任務已正式啟動。
升級所需時間與執行個體中的資料庫物件數量密切相關,資料庫物件數量越多,升級所需時間越長。在進行大版本升級時,您可以在工作中樞查看升級進度。
重要升級任務建立後不支援修改或刪除。
原執行個體狀態為遷移中時,該執行個體不支援修改參數、重啟、釋放等營運操作。
查看升級結果。
當原執行個體和新執行個體的狀態為執行中時,表示執行個體升級成功。
說明升級完成後,在升级历史頁簽,單擊目標升級任務升級日誌列的查看資訊,即可查看升級過程中執行個體的唯讀時間及詳細的升級過程。其中唯讀時間為割接時間和割接結束時間之間的時段,此時間段不包括因DNS緩衝未重新整理而導致無法串連的時間。
後續操作
如果在升級前刪除了唯讀執行個體,還需執行:
在新執行個體上重新建立PostgreSQL唯讀執行個體。
在應用程式中,將原唯讀執行個體串連地址(已在升級前修改為主執行個體串連地址)修改為新的唯讀執行個體串連地址。
升級結果說明
升級過程中,升级历史頁簽的升級記錄中,包含以下升級結果。
升級結果 | 執行個體狀態 | 含義 | 可執行動作 |
運行中 | 遷移中 | 升級任務正在運行。 | 無。 |
成功 | 執行中 | 升級任務成功。 | 無。 |
相關API
API | 描述 |
RDS PostgreSQL執行個體大版本升級檢查。 | |
查詢RDS PostgreSQL執行個體大版本升級檢查報告。 | |
RDS PostgreSQL執行個體升級資料庫大版本。 | |
查詢RDS PostgreSQL執行個體大版本升級歷史任務。 |