Share via


設定容錯移轉群組 - CLI

本文說明如何使用 Azure 入口網站為 Azure Arc 啟用的 SQL 受控執行個體設定災害復原。 繼續之前,請先檢閱 Azure Arc 啟用的 SQL 受控執行個體 - 災害復原中的資訊和必要條件。

必要條件

在 Azure Arc 啟用的兩個 SQL 受控執行個體之間設定容錯移轉群組之前,您必須先符合下列必要條件:

  • 使用 --license-type 在主要站台上將 Azure Arc 資料控制器和 Arc 啟用的 SQL 受控執行個體佈建為 BasePriceLicenseIncluded
  • 在次要站台佈建 Azure Arc 資料控制器和 Arc 啟用的 SQL 受控執行個體並使用下列各項與主要站台相同的設定:
    • CPU
    • 記憶體
    • 儲存體
    • 服務層級
    • 定序
    • 其他執行個體設定
  • 次要站台的執行個體需要 --license-type 設為 DisasterRecovery。 這個執行個體必須是新的,沒有任何使用者物件。

注意

  • 請務必在受控執行個體建立期間指定 --license-type。 藉此,系統就能從主要資料中心的主要執行個體中植入災害復原執行個體。 於部署後更新這項屬性不會獲得相同的效果。

部署程序

若要在兩個執行個體之間設定 Azure 容錯移轉群組,請完成下列步驟:

  1. 在主要站台建立分散式可用性群組的自訂資源
  2. 在次要站台建立分散式可用性群組的自訂資源
  3. 從鏡像憑證中複製二進位資料
  4. 使用 sync 模式或 async 模式,設定主要站台與次要站台之間的分散式可用性群組

下圖顯示已正確設定的分散式可用性群組:

Diagram showing a properly configured distributed availability group.

同步處理模式

Azure Arc 資料服務中的容錯移轉群組支援兩種同步處理模式 - syncasync。 同步處理模式會直接影響執行個體之間的資料同步處理方式,且可能會影響主要受控執行個體的效能。

如果主要和次要站台彼此相距數英里,請使用 sync 模式。 否則,請使用 async 模式,以避免對主要站台造成任何效能影響。

設定 Azure 容錯移轉群組 - 直接模式

如果 Azure Arc 資料服務是在 directly 連線模式中部署,請遵循下列步驟。

符合必要條件後,請執行下列命令來設定兩個執行個體之間的 Azure 容錯移轉群組:

az sql instance-failover-group-arc create --name <name of failover group> --mi <primary SQL MI> --partner-mi <Partner MI> --resource-group <name of RG> --partner-resource-group <name of partner MI RG>

範例:

az sql instance-failover-group-arc create --name sql-fog --mi sql1 --partner-mi sql2 --resource-group rg-name --partner-resource-group rg-name

上述命令:

  • 在主要和次要站台上建立必要的自訂資源
  • 複製鏡像憑證,並設定執行個體之間的容錯移轉群組

設定 Azure 容錯移轉群組 - 間接模式

如果 Azure Arc 資料服務是在 indirectly 連線模式中部署,請遵循下列步驟。

  1. 在主要站台中佈建受控執行個體。

    az sql mi-arc create --name <primaryinstance> --tier bc --replicas 3 --k8s-namespace <namespace> --use-k8s
    
  2. 在即將成為災害復原執行個體的次要站台上執行 kubectl config use-context <secondarycluster> 並佈建受控執行個體,將內容切換至次要叢集。 此時,系統資料庫不是自主可用性群組的一部分。

    注意

    務必在受控執行個體期間指定 --license-type DisasterRecovery。 藉此,系統就能從主要資料中心的主要執行個體中植入災害復原執行個體。 於部署後更新這項屬性不會獲得相同的效果。

    az sql mi-arc create --name <secondaryinstance> --tier bc --replicas 3 --license-type DisasterRecovery --k8s-namespace <namespace> --use-k8s
    
  3. 鏡像憑證:建立執行個體容錯移轉群組 CR (自訂資源) 時,必須使用受控執行個體的鏡像憑證屬性內的二進位資料。

    這項資料可透過幾種方式取得:

    (a) 如果使用 az CLI,系統會先產生鏡像憑證檔案,然後在設定執行個體容錯移轉群組時指向該檔案,從檔案中讀取二進位資料並複製到 CR。 容錯移轉群組建立之後,就不需要憑證檔案。

    (b) 如果使用 kubectl,系統會直接複製受控執行個體 CR 的二進位資料,並貼到用來建立執行個體容錯移轉群組的 YAML 檔案中。

    若使用上方的 (a):

    為主要執行個體建立鏡像憑證檔案:

    az sql mi-arc get-mirroring-cert --name <primaryinstance> --cert-file </path/name>.pem​ --k8s-namespace <namespace> --use-k8s
    

    範例:

    az sql mi-arc get-mirroring-cert --name sqlprimary --cert-file $HOME/sqlcerts/sqlprimary.pem​ --k8s-namespace my-namespace --use-k8s
    

    連線到次要叢集,為次要執行個體建立鏡像憑證檔案:

    az sql mi-arc get-mirroring-cert --name <secondaryinstance> --cert-file </path/name>.pem --k8s-namespace <namespace> --use-k8s
    

    範例:

    az sql mi-arc get-mirroring-cert --name sqlsecondary --cert-file $HOME/sqlcerts/sqlsecondary.pem --k8s-namespace my-namespace --use-k8s
    

    建立鏡像憑證檔案後,從次要執行個體將憑證複製到主要執行個體叢集上的共用/本地路徑,反之亦然。

  4. 在兩個站台上建立容錯移轉群組資源。

    注意

    確定 SQL 執行個體的主要和次要站台擁有不同名稱,且兩個站台的 shared-name 擁有相同的值。

    az sql instance-failover-group-arc create --shared-name <name of failover group> --name <name for primary failover group resource> --mi <local SQL managed instance name> --role primary --partner-mi <partner SQL managed instance name>  --partner-mirroring-url tcp://<secondary IP> --partner-mirroring-cert-file <secondary.pem> --k8s-namespace <namespace> --use-k8s
    

    範例:

    az sql instance-failover-group-arc create --shared-name myfog --name primarycr --mi sqlinstance1 --role primary --partner-mi sqlinstance2  --partner-mirroring-url tcp://10.20.5.20:970 --partner-mirroring-cert-file $HOME/sqlcerts/sqlinstance2.pem --k8s-namespace my-namespace --use-k8s
    

    在次要執行個體上,執行下列命令來設定容錯移轉群組自訂資源。 此案例中的 --partner-mirroring-cert-file 應指向擁有鏡像憑證檔案的路徑;該路徑由主要執行個體產生,如上方 3(a) 所述。

    az sql instance-failover-group-arc create --shared-name <name of failover group> --name <name for secondary failover group resource> --mi <local SQL managed instance name> --role secondary --partner-mi <partner SQL managed instance name>  --partner-mirroring-url tcp://<primary IP> --partner-mirroring-cert-file <primary.pem> --k8s-namespace <namespace> --use-k8s
    

    範例:

    az sql instance-failover-group-arc create --shared-name myfog --name secondarycr --mi sqlinstance2 --role secondary --partner-mi sqlinstance1  --partner-mirroring-url tcp://10.10.5.20:970 --partner-mirroring-cert-file $HOME/sqlcerts/sqlinstance1.pem --k8s-namespace my-namespace --use-k8s
    

擷取 Azure 容錯移轉群組健全狀態

容錯移轉群組的相關資訊 (例如主要角色、次要角色和目前健全狀態) 可以在主要或次要站台上的資定資源上檢視。

在主要和/或次要站台上執行下列命令,以列出容錯移轉群組自訂資源:

kubectl get fog -n <namespace>

描述要擷取容錯移轉群組狀態的自訂資源,如下所示:

kubectl describe fog <failover group cr name> -n <namespace>

容錯移轉群組作業

在受控執行個體之間設定容錯移轉群組後,視情況而定,可以執行不同的容錯移轉作業。

可能的容錯移轉案例包括:

  • 這兩個站台的執行個體都處於狀況良好狀態,且必須執行容錯移轉:

    • 在主要 SQL MI 上設定 role=secondary,以執行從主要複本到次要複本的手動容錯移轉 (不會遺失資料)。
  • 主要站台的狀況不良/無法連線,且需要執行容錯移轉:

    • Azure Arc 所啟用的主要 SQL 受控執行個體已關閉/狀況不良/無法連線
    • Azure Arc 所啟用的次要 SQL 受控執行個體必須強制升階為主要,且可能會遺失資料
    • 當 Azure Arc 所啟用的原始主要 SQL 受控執行個體重新上線時,其會回報為 Primary 角色和狀況不良的狀態,而且必須強制成為 secondary 角色才能加入容錯移轉群組,且資料才能同步。

手動容錯移轉 (不會遺失資料)

使用 az sql instance-failover-group-arc update ... 命令群組以起始從主要站台到次要站台的容錯移轉。 異地主要執行個體上的任何暫止交易都會在容錯移轉之前複寫至異地次要執行個體。

直接連線模式

執行下列命令,以使用 ARM API 在 direct 連線模式中起始手動容錯移轉:

az sql instance-failover-group-arc update --name <shared name of failover group> --mi <primary instance> --role secondary --resource-group <resource group>

範例:

az sql instance-failover-group-arc update --name myfog --mi sqlmi1 --role secondary --resource-group myresourcegroup

間接連線模式

執行下列命令,以使用 kubernetes API 在 indirect 連線模式中起始手動容錯移轉:

az sql instance-failover-group-arc update --name <name of failover group resource> --role secondary --k8s-namespace <namespace> --use-k8s 

範例:

az sql instance-failover-group-arc update --name myfog --role secondary --k8s-namespace my-namespace --use-k8s 

強制容錯移轉 (可能遺失資料)

在異地主要執行個體變成無法使用的情況下,可以在異地次要災害復原執行個體上執行下列命令以升階為主要資料庫,但強制容錯移轉會導致潛在的資料遺失。

在異地次要災害復原執行個體上,執行下列命令將其升級為主要角色,但可能會遺失資料。

注意

如果 --partner-sync-mode 設定為 sync,則當次要複本升階為主要複本時,它必須重設為 async

直接連線模式

az sql instance-failover-group-arc update --name <shared name of failover group> --mi <instance> --role force-primary-allow-data-loss --resource-group <resource group> --partner-sync-mode async

範例:

az sql instance-failover-group-arc update --name myfog --mi sqlmi2 --role force-primary-allow-data-loss --resource-group myresourcegroup --partner-sync-mode async

間接連線模式

az sql instance-failover-group-arc update --k8s-namespace my-namespace --name secondarycr --use-k8s --role force-primary-allow-data-loss --partner-sync-mode async

當異地主要執行個體可供使用時,請執行下列命令,將其帶入容錯移轉群組並同步處理資料:

直接連線模式

az sql instance-failover-group-arc update --name <shared name of failover group> --mi <old primary instance> --role force-secondary --resource-group <resource group>

間接連線模式

az sql instance-failover-group-arc update --k8s-namespace my-namespace --name secondarycr --use-k8s --role force-secondary

您也可以視需要將 --partner-sync-mode 設定回 sync 模式。

容錯移轉後作業

當您執行從主要站台到次要站台的容錯移轉後,不論資料是否遺失,您都可能需要執行下列動作:

  • 更新應用程式的連接字串,以連線到新升階的主要 Arc SQL 受控執行個體
  • 如果您打算繼續從次要站台執行生產工作負載,請將 --license-type 更新為 BasePriceLicenseIncluded,以針對所取用的虛擬核心起始計費。