本文說明如何就地升級 AlloyDB for PostgreSQL 資料庫的主要版本,也就是在不遷移資料或取代現有執行個體的情況下,將資料庫升級至較高版本。
PostgreSQL 社群會定期發布新的主要版本,內含新功能、效能改善項目和安全性強化功能。PostgreSQL 發布新的主要版本後,AlloyDB 會新增相容版本的支援。如要讓資料庫保持在最新狀態,您可以升級至較新的主要版本,藉此升級 AlloyDB 叢集。您可以透過這項就地升級功能升級叢集,也可以將資料遷移至新的 AlloyDB 叢集。
詳情請參閱「資料庫版本政策」。
就地升級主要版本是升級叢集主要版本的有效方式,原因如下:
- 升級後,AlloyDB 會保留叢集和執行個體詳細資料,以及執行個體名稱、IP 位址和資料庫標記等資料庫設定。
- 您不必變更應用程式連線字串。
- 所有叢集執行個體 (主要和讀取集區) 都會透過同一項作業升級。
此外,系統不會保留授予者不存在的角色成員資格 (孤立成員資格)。如果任何叢集的 pg_auth_members 目錄中含有孤立的成員資格,升級後這些角色成員資格就會遺失。詳情請參閱「準備叢集以進行主要版本升級」。
就地升級主要版本的工作流程
當您開始升級叢集時,AlloyDB 會執行下列動作:
- 執行升級前檢查,找出可能影響升級的不相容項目。
- 準備升級主要版本,包括建立叢集的內部副本。
- 導致主要執行個體無法使用。停機時間開始。您仍可透過讀取集區進行讀取。
- 啟動升級前備份。
- 升級主要執行個體。
- 導致讀取集區執行個體無法使用。
- 讓主要執行個體可供使用。停機時間結束。
- 啟動升級後備份。
- 升級讀取集區執行個體。
通過升級前檢查後,系統會將叢集複製到同一專案的內部叢集。複製叢集所需的備份和還原作業,每 TB 資料約需 10 分鐘。
在複製作業期間,您可以繼續使用原始叢集。 複製作業完成後,升級程序就會開始。主要執行個體升級完成前,您無法讀取或寫入主要執行個體。預計停機時間通常為 20 分鐘到 1 小時,主要取決於資料庫結構定義和物件數量。
主要執行個體升級後,讀取集區執行個體會無法使用。系統會嘗試同時升級所有讀取集區執行個體。停機時間預計約 20 分鐘。
如果主要執行個體升級前,在任何步驟發生主要版本升級失敗,AlloyDB 會自動還原所有變更。
主要執行個體升級後,叢集版本會升級至目標版本,且之後發生任何失敗都不會觸發回溯。舉例來說,如果一或多個讀取集區執行個體升級失敗,AlloyDB 不會將叢集回復原狀。在這些情況下,請與 Google Cloud CLI 支援團隊聯絡。
下表列出不同資料庫大小的叢集完成升級所需時間的約略估計值:
| 資料庫大小 | 升級前 (無停機時間) | 主要停機時間 | 讀取集區停機時間 | 總持續時間 |
|---|---|---|---|---|
| 100 GB | 約 15 分鐘 | 約 20 分鐘 | 約 20 分鐘 | 約 1 小時 |
| 1 TB | 約 30 分鐘 | 約 20 分鐘 | 約 20 分鐘 | 約 1 小時 15 分鐘 |
| 4 TB | 約 1 小時 | 約 20 分鐘 | 約 20 分鐘 | 約 1 小時 45 分鐘 |
| 16 TB | 約 3 小時 | 約 20 分鐘 | 約 20 分鐘 | 約 3 小時 45 分鐘 |
| 32 TB | 約 5 小時 30 分鐘 | 約 20 分鐘 | 約 20 分鐘 | 約 6 小時 15 分鐘 |
| 64 TB | 約 11 小時 | 約 20 分鐘 | 約 20 分鐘 | 約 12 小時 |
| 128 TB | 約 21 小時 30 分鐘 | 約 20 分鐘 | 約 20 分鐘 | 約 22 小時 15 分鐘 |
詳情請參閱「就地升級資料庫主要版本」。
升級狀態
升級程序包含下列階段:
ALLOYDB_PRECHECKPG_UPGRADE_CHECKPREPARE_FOR_UPGRADEPRIMARY_INSTANCE_UPGRADEREAD_POOL_INSTANCES_UPGRADEROLLBACK(僅適用於讀取集區升級前發生失敗的情況)CLEANUP
這些階段的可能狀態包括:
NOT_STARTEDIN_PROGRESSSUCCESSFAILEDCANCEL_IN_PROGRESSCANCELLED
取消升級
在主要執行個體升級期間,您可以在特定時間點前取消升級作業。一旦超過該時間點,就無法取消升級。
如果「取消升級」按鈕顯示為灰色,表示無法在 Google Cloud 控制台中取消作業。使用 Google Cloud CLI 或 REST API,您可以透過檢查升級狀態中的 upgradeClusterStatus,判斷是否可以取消升級:
- 如果
cancellable為true,你可以取消升級。 - 如果狀態為
cancellable或缺少false,就無法取消升級。
自動備份升級前和升級後的資料
執行主要版本升級時,AlloyDB 會自動建立下列連續備份,其中 XX 是來源主要版本,YY 是目標主要版本。
- 系統會在升級開始前立即建立升級前備份。這個備份檔的命名格式為
pre-upgrade-bkp-pgXX-pgYY-<uuid>。您可以使用這項備份資料還原至升級前的狀態。請注意,還原作業不會在原地執行,而是會建立新的叢集。 - 主要執行個體升級後,系統會建立升級後備份。這個備份檔的命名格式為
post-upgrade-bkp-pgXX-pgYY-<uuid>。
持續備份是增量備份,也就是說,備份只會儲存相較於上次持續備份而變更的資料。這種做法可減少備份大小和成本 (以資源計算),並加快備份建立程序。詳情請參閱「資料備份與復原總覽」。
查看備份清單時,升級備份會列出 CONTINUOUS 類型。詳情請參閱「查看備份清單」。
執行時間點復原 (PITR) 時,必須有版本備份檔。升級後的叢集必須完成升級後備份,或在主要執行個體升級後啟動其他備份作業,才能執行復原作業。