本頁說明如何升級 Kubernetes 上的 AlloyDB Omni 資料庫次要版本。
如要進行次要資料庫版本升級,有以下兩種做法:
減少停機時間的升級作業:對於執行 AlloyDB Omni 15.7.1 以上版本的高可用性 (HA) 環境,AlloyDB Omni 會先升級待命執行個體,接著,AlloyDB Omni 運算子會執行切換作業,將其中一個升級的待命執行個體升級為新的主要執行個體。切換成功後,系統會更新舊的主例項。
這個程序可確保升級期間的停機時間最短。
同步升級:在所有其他情況下,AlloyDB Omni 運算子會同時升級所有執行個體。也就是說,升級期間會發生停機情形。
限制
如要進行低停機時間升級,任何時間都只能有一個待命執行個體無法使用。為確保資料庫叢集不會達到零復原點目標 (RPO),且不會有資料遺失風險,資料庫叢集必須有一個主要執行個體和至少兩個待命執行個體。
事前準備
- 如果叢集為高可用性叢集,且 AlloyDB Omni 版本舊於 15.7.1,請先按照「更新資料庫叢集」一文中的步驟操作,再進行次要版本升級程序。
- 找出流量偏低的時段,進行次要版本升級。
- 為避免資料遺失,請備份資料。
啟用低停機時間的次要資料庫版本升級程序
如要啟用低停機時間的次要資料庫版本升級程序,請在資料庫叢集中加入下列註解。
kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME dbcluster.dbadmin.goog/enableLDTM=true
請替換下列變數:
DB_CLUSTER_NAME
:資料庫叢集名稱。也就是您在建立資料庫叢集時提供的名稱。 詳情請參閱「在 Kubernetes 上安裝 AlloyDB Omni」。
升級 AlloyDB Omni 版本
如要升級至 16.8.0 版,請更新叢集資訊清單檔案中的 databaseVersion
和 controlPlaneAgentsVersion
欄位,然後重新套用該檔案。
以下是資訊清單檔案的開頭,其中指定 databaseVersion
的版本為 16.8.0,controlPlaneAgentsVersion
的版本為 1.5.0:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: DB_CLUSTER_NAME
spec:
databaseVersion: "16.8.0"
controlPlaneAgentsVersion: "1.5.0"
...
請替換下列變數:
DB_CLUSTER_NAME
:資料庫叢集名稱。也就是您在建立資料庫叢集時提供的名稱。 詳情請參閱「在 Kubernetes 上安裝 AlloyDB Omni」。
監控升級程序
更新資訊清單檔案後,AlloyDB Omni 運算子會啟動升級程序。如要監控升級程序,請檢查 DBCUpgradeInProgress
條件。
kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -o yaml | yq '.status.conditions[] | select(.type == "DBCUpgradeInProgress")'
請替換下列變數:
DB_CLUSTER_NAME
:資料庫叢集名稱。也就是您在建立資料庫叢集時提供的名稱。 詳情請參閱「在 Kubernetes 上安裝 AlloyDB Omni」。
在處理期間,狀態會顯示為 true
。程序完成後,條件的狀態會變更為 false
。
疑難排解
如果在升級過程中收到任何失敗訊息,請參閱下列章節:
升級前失敗
如果資料庫叢集在升級前失敗,請檢查訊息並相應解決問題。
如要略過升級前失敗訊息,可以啟用 force-upgrade
註解。
kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME upgrade.alloydbomni.dbadmin.google/force-upgrade=true
請替換下列變數:
DB_CLUSTER_NAME
:資料庫叢集名稱。也就是您在建立資料庫叢集時提供的名稱。 詳情請參閱「在 Kubernetes 上安裝 AlloyDB Omni」。
升級程序完成後,請將 force-upgrade
註解設為 false
。
升級失敗
在自動升級程序中,高可用性環境可能會在幾個時間點發生失敗。如要進一步瞭解每個失敗情境,以及 AlloyDB Omni 運算子採取的後續動作,請參閱下表。
失敗訊息 | 說明 | 使用者必須採取的行動 |
---|---|---|
standby instance upgrade succeeded but the replication lag of the standby(s) is too high to be promoted to synchronous standby(s)
|
升級程序成功,但待命執行個體未趕上主要執行個體,因此無法建立同步複製。
大量流量會傳送至主要執行個體。隨著流量減少,待命執行個體會逐漸趕上。發生這種情況後, |
在 修正主要和待命執行個體的小版本不同問題 中選擇一個選項。 |
all standbys upgrade succeeded but the switchover instance failed
to promote an upgraded standby.
|
備用執行個體已成功升級,但切換程序失敗。 |
|
standby instance upgrade failed but rollback succeeded.
|
備用執行個體升級失敗,但 AlloyDB Omni 運算子已成功將其還原至先前版本。 |
|
standby instance upgrade failed and rollback failed.
|
備用執行個體升級失敗,且 AlloyDB Omni 運算子無法將執行個體還原為先前版本。 |
與 Google 支援團隊聯絡 ,排解問題。 |
修正次要版本不同的主要和待命執行個體
如要解決這個問題,請選擇下列任一做法:
如果造成升級失敗的問題已修正,請重試升級。
如要重試升級,請從執行個體中移除升級的
start-time
註解。移除註解後,AlloyDB Omni 運算子會產生新的開始時間,並重新啟動升級程序。kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME upgrade.alloydbomni.dbadmin.google/start-time-
請替換下列變數:
DB_CLUSTER_NAME
:資料庫叢集名稱。也就是您在建立資料庫叢集時提供的名稱。 詳情請參閱「在 Kubernetes 上安裝 AlloyDB Omni」。
如果導致升級失敗的問題持續發生,請將執行個體降級至先前的 AlloyDB Omni 運算子版本。
如要降級執行個體,請按照升級程序操作,並將資訊清單檔案中的
databaseVersion
和controlPlaneAgentsVersion
欄位變更為先前使用的版本。