在 Kubernetes 上為 AlloyDB Omni 執行次要資料庫版本升級

本頁說明如何升級 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

請替換下列變數:

升級 AlloyDB Omni 版本

如要升級至 16.8.0 版,請更新叢集資訊清單檔案中的 databaseVersioncontrolPlaneAgentsVersion 欄位,然後重新套用該檔案。

以下是資訊清單檔案的開頭,其中指定 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"
...

請替換下列變數:

監控升級程序

更新資訊清單檔案後,AlloyDB Omni 運算子會啟動升級程序。如要監控升級程序,請檢查 DBCUpgradeInProgress 條件。

kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -o yaml | yq '.status.conditions[] | select(.type == "DBCUpgradeInProgress")'

請替換下列變數:

在處理期間,狀態會顯示為 true。程序完成後,條件的狀態會變更為 false

疑難排解

如果在升級過程中收到任何失敗訊息,請參閱下列章節:

升級前失敗

如果資料庫叢集在升級前失敗,請檢查訊息並相應解決問題。

如要略過升級前失敗訊息,可以啟用 force-upgrade 註解。

kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME upgrade.alloydbomni.dbadmin.google/force-upgrade=true

請替換下列變數:

升級程序完成後,請將 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)

升級程序成功,但待命執行個體未趕上主要執行個體,因此無法建立同步複製。

大量流量會傳送至主要執行個體。隨著流量減少,待命執行個體會逐漸趕上。發生這種情況後,HAReady 條件會變成 true

修正主要和待命執行個體的小版本不同問題 中選擇一個選項。

all standbys upgrade succeeded but the switchover instance failed to promote an upgraded standby.

備用執行個體已成功升級,但切換程序失敗。

  1. 檢查切換自訂資源的狀態,判斷導致失敗的原因。
  2. 修正主要和待命執行個體的小版本不同問題 中選擇一個選項。
standby instance upgrade failed but rollback succeeded.

備用執行個體升級失敗,但 AlloyDB Omni 運算子已成功將其還原至先前版本。

  1. 查看升級失敗訊息。
  2. 修正主要和待命執行個體的小版本不同問題 中選擇一個選項。
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-
    

    請替換下列變數:

  • 如果導致升級失敗的問題持續發生,請將執行個體降級至先前的 AlloyDB Omni 運算子版本。

    如要降級執行個體,請按照升級程序操作,並將資訊清單檔案中的 databaseVersioncontrolPlaneAgentsVersion 欄位變更為先前使用的版本。