本文介紹如何以零停機的方式對RDS PostgreSQL資料庫進行大版本升級。
升級流程
不同升級階段對執行個體的影響
升級階段 | 影響 |
開始大版本升級 | 禁止進行任何DDL操作。 |
建立複製槽和發布 |
|
訂閱端啟動並建立邏輯複製關係 |
|
開始切換 |
|
完成切換(升級完成) |
|
升級任務開始後,在升级历史頁簽,單擊目標升級任務升級日誌列的查看資訊,即可查看詳細的升級過程。
步驟一:升級前檢查
訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
在左側導覽列單擊大版本升級。
說明如果左側導覽列中沒有大版本升級,請檢查RDS PostgreSQL執行個體版本及配置,具體請參見前提條件。
在升级检查頁簽中,單擊创建升级检查报告。
擇選升級版本,且升级模式選擇零停機後,單擊確定。
此時,執行個體狀態變為實例維護中,待升級檢查完成後,執行個體狀態會變為執行中。
當升級檢查報告結果為成功或警告時,可以進行後續的大版本升級步驟;若結果為失败,則需單擊查看資訊,根據報告內容修複異常檢查項後,再次進行升級前檢查。常見的報錯及原因請參見解讀RDS PostgreSQL大版本升級檢查報告。
重要為確保升級順利完成,當升級檢查報告的檢查結果為警告時,建議根據報告內容修複異常檢查項後,再次進行升級前檢查,直至檢查結果為成功。
升級檢查成功後,如果在主執行個體中建立了外掛程式,需重新執行檢查。
步驟二:升級大版本
單擊升级实例頁簽,閱讀警告內容,然後選擇升級版本,並單擊建立升級任務。
在彈出的視窗中,閱讀提示內容,然後單擊確定。
在建立大版本升級任務地區,選擇升级模式為零停機。
單擊立即建立。
當執行個體狀態變為遷移中時,表示升級任務已正式啟動。
升級所需時間與執行個體中的資料庫物件數量密切相關,資料庫物件數量越多,升級所需時間越長。在進行大版本升級時,您可以在工作中樞查看升級進度。
重要升級任務建立後不支援修改或刪除。
原執行個體狀態為遷移中時,該執行個體不支援修改參數、重啟、釋放等營運操作。
監控執行個體負載
在升級過程中,您可以監控執行個體的負載情況和磁碟使用率,以瞭解執行個體的效能狀態。
在WAL日誌堆積期間,執行個體的磁碟使用率會暫時上升。建立邏輯複製後,磁碟佔用將會降低。
在邏輯複製階段,流量和資料庫數量會對源執行個體的負載產生影響。可以通過觀察各類資源下wal_sender的資源佔用率來評估邏輯複製的影響。
步驟三:切換到高版本
驗證高版本執行個體。
當執行個體狀態將從遷移中轉變為遷出資料中時,表示邏輯複製已搭建完成,建立升級任務的過程將結束,您可以驗證高版本執行個體的資料。
進入升级历史頁簽,使用目標升級記錄的高版本驗證地址串連至高版本執行個體,以驗證升級後的資料。
說明高版本執行個體為唯讀模式,無法進行寫入操作。
切換到高版本執行個體。
確定高版本執行個體的資料符合預期後,且升級結果為同步中時,單擊升級日誌列的切換,將業務切換到高版本執行個體。
說明如果升級結果為其他狀態,請參見升級結果說明進行處理。
如果您決定放棄本次升級,可以單擊升級日誌列的取消。這將刪除邏輯複製槽,取消邏輯複製對源執行個體的影響,並允許其執行DDL操作。
在切換彈窗中設定容忍停寫時間(單位:秒),並單擊確定。
當升級結果變為唯讀時,表示進行中切換,此時執行個體狀態為遷移中時。在大版本升級的升级历史頁簽,單擊升級日誌列的中斷按鈕,取消此次切換操作。
說明可以通過在切換時設定容忍停寫時間,主動等待覆制延遲消除,保障資料一致性。在此過程中,升級結果將變為唯讀。如果超出此時間,則系統將返回到同步中狀態,並解除唯讀限制。
查看切換結果。
當升級結果變為成功時,表示切換成功,當執行個體狀態為執行中時。
在執行個體基本資料頁,可以查看執行個體當前的版本資訊。
說明升級完成後,在升级历史頁簽,單擊目標升級任務升級日誌列的查看資訊,即可查看升級過程中執行個體的唯讀時間及詳細的升級過程。其中唯讀時間為切換時間和切換完成時間之間的時段,此時間段不包括因DNS緩衝未重新整理而導致無法串連的時間。
復原
切換後,如需復原至低版本執行個體,可通過切換前的最後一次低版本備份複製新的執行個體,並將該執行個體的串連地址修改改為舊執行個體的串連地址,以實現復原至低版本。
切換前,系統會對低版本執行個體進行備份。
升級結果說明
升級過程中,升级历史頁簽的升級記錄中,包含以下升級結果。
升級結果 | 執行個體狀態 | 含義 | 可執行動作 |
運行中 | 遷移中 | 升級任務正在運行。 | 無。 |
同步中 | 遷出資料中 | 邏輯複製狀態正常。 |
|
複製斷開 | 遷出資料中 | 邏輯複製狀態異常。 |
|
唯讀 | 遷移中 | 正在切換,執行個體為唯讀模式,並且正在同步Sequence。 | 中斷:取消此次切換操作。 |
切換 | 遷移中 | Sequence同步已完成,現正進行收尾工作。 | 無。 |
取消 | 執行中 | 升級任務取消。 | 無。 |
成功 | 執行中 | 升級任務成功。 | 無。 |