設定高可用性

高可用性設定的目的是在資料庫叢集執行個體無法使用時,縮短停機時間。如果執行個體記憶體不足,就可能發生這種情況。啟用高可用性後,用戶端應用程式仍可存取資料。

在站點中,設定是由主要執行個體和待命副本組成。對主要執行個體執行的所有寫入作業,都會在回報交易已修訂前,複寫至待命副本。如果主要執行個體無法使用,GDC 會自動將待命副本升級為新的主要執行個體。然後將應用程式流量重新導向至新的主要執行個體。這項程序稱為容錯移轉。

如果主要執行個體連續 3 次健康狀態檢查失敗 (每次間隔 30 秒),系統就會啟動自動容錯移轉。

GDC 支援自動和手動容錯移轉。自動容錯移轉功能預設為啟用,您可以視需要停用。您也可以隨時手動觸發容錯移轉,從非預期的故障中復原,並盡可能縮短停機時間。

容錯移轉程序依序包含下列步驟:

  1. GDC 會將主要執行個體離線。

  2. GDC 會將待命副本轉換為新的使用中資料庫叢集。

  3. GDC 會刪除先前的有效資料庫叢集。

  4. GDC 會建立新的待命副本。

更新現有叢集

您可以更新現有資料庫叢集的高可用性設定:

控制台

  1. 在導覽選單中,選取「Database Service」。

  2. 在資料庫叢集清單中,按一下要更新的資料庫叢集。

  3. 選取「高可用性」部分中的「編輯」。

    編輯資料庫叢集的高可用性設定。

  4. 選取「Enable same zone standby」(啟用相同可用區待命),即可啟用或停用與主要資料庫叢集位於相同可用區的待命執行個體。

  5. 按一下「儲存」。

  6. 在資料庫叢集清單的「High availability」(高可用性) 欄中查看狀態,確認資料庫叢集反映高可用性更新。

gdcloud

  1. 更新資料庫叢集的高可用性設定:

    gdcloud database clusters update CLUSTER_NAME \
        --availability-type HA_TYPE
    

    更改下列內容:

    • CLUSTER_NAME:資料庫叢集的名稱。
    • HA_TYPE:資料庫叢集的高可用性層級。您可以設定 zonal 或 zonal_ha。系統預設會設定 zonal 值。
  2. 確認資料庫叢集反映高可用性更新:

    gdcloud database clusters list
    

API

  1. 更新資料庫叢集的高可用性設定:

      kubectl patch dbcluster.postgresql.dbadmin.gdc.goog DBCLUSTER_NAME \
        -n USER_PROJECT \
        -p '{"spec": {"availability": {"enableHighAvailability": HA_ENABLED}}}' \
        --type=merge
    

    請替換下列變數:

    • DBCLUSTER_NAME:資料庫叢集的名稱。
    • USER_PROJECT:建立資料庫叢集的使用者專案名稱。
    • HA_ENABLED:資料庫叢集的高可用性層級。您可以設定 true 或 false。系統預設會設定 false 值。
  2. 確認資料庫叢集反映高可用性更新:

    kubectl get dbcluster.DBENGINE_NAME.dbadmin.gdc.goog DBCLUSTER_NAME \
      -n USER_PROJECT \
      -o yaml
    

遷移至最新高可用性實作

如要確認高可用性資料庫叢集是否使用最新實作,請檢查高可用性資料庫叢集 CR 是否有 dbcluster.dbadmin.goog/raasEnabled 註解。這個註解只會顯示在使用新實作方式的叢集上。如果沒有這個註解,可以啟用並按照下列步驟遷移叢集:

  1. 請向基礎架構操作員確認,GDC 環境已升級至 1.15.1 以上版本。
  2. 停用資料庫叢集的高可用性。請等待 HAReady 狀況消失,然後重新啟用高可用性。
  3. 看到 HAReady in progress 或 HAReady setup complete 後,請檢查資料庫叢集 CR 是否有 dbcluster.dbadmin.goog/raasEnabled 註解。如果出現,表示資料庫叢集已成功遷移。

觸發容錯移轉

如果您已為資料庫叢集設定高可用性,可以觸發容錯移轉。如要觸發容錯移轉,請完成下列步驟:

控制台

  1. 在導覽選單中,選取「Database Service」。

  2. 在資料庫叢集清單中,按一下要觸發容錯移轉的資料庫叢集。資料庫叢集必須啟用高可用性,才能進行容錯移轉。

  3. 按一下「容錯移轉」。

  4. 輸入叢集 ID 做為確認詞組,然後按一下「Failover」(容錯移轉),觸發容錯移轉程序。

gdcloud

觸發資料庫叢集的容錯移轉:

gdcloud database clusters failover CLUSTER_NAME

將 CLUSTER_NAME 替換為資料庫叢集名稱。

API

  apiVersion: fleet.dbadmin.gdc.goog/v1
  kind: Failover
  metadata:
    name: FAILOVER_NAME
    namespace: USER_PROJECT
  spec:
    dbclusterRef: DBCLUSTER_NAME

請替換下列變數:

  • DBCLUSTER_NAME:資料庫叢集的名稱。
  • USER_PROJECT:建立資料庫叢集的使用者專案名稱。
  • FAILOVER_NAME:容錯移轉作業的專屬名稱,例如 failover-sample。

停用自動容錯移轉

高可用性資料庫叢集預設會啟用自動容錯移轉功能。

如要停用自動容錯移轉功能,請在資料庫叢集的資訊清單中,將 enableAutoFailover 設為 false:

spec:
  availability:
    enableAutoFailover: false

如要使用 API 更新現有資料庫叢集的自動容錯移轉設定,請執行下列指令:

kubectl patch dbcluster.postgresql.dbadmin.gdc.goog DBCLUSTER_NAME \
  -n USER_PROJECT \
  -p '{"spec": {"availability": {"enableAutoFailover": AUTO_FAILOVER_ENABLED}}}' \
  --type=merge

請替換下列變數:

  • DBCLUSTER_NAME:資料庫叢集的名稱。
  • USER_PROJECT:建立資料庫叢集的使用者專案名稱。
  • AUTO_FAILOVER_ENABLED:資料庫叢集的自動容錯移轉設定。您可以設定 true 或 false。系統預設會設定 true 值。