設定容錯移轉群組 - CLI
本文說明如何使用 Azure 入口網站為 Azure Arc 啟用的 SQL 受控執行個體設定災害復原。 繼續之前,請先檢閱 Azure Arc 啟用的 SQL 受控執行個體 - 災害復原中的資訊和必要條件。
必要條件
在 Azure Arc 啟用的兩個 SQL 受控執行個體之間設定容錯移轉群組之前,您必須先符合下列必要條件:
- 使用
--license-type
在主要站台上將 Azure Arc 資料控制器和 Arc 啟用的 SQL 受控執行個體佈建為BasePrice
或LicenseIncluded
。 - 在次要站台佈建 Azure Arc 資料控制器和 Arc 啟用的 SQL 受控執行個體並使用下列各項與主要站台相同的設定:
- CPU
- 記憶體
- 儲存體
- 服務層級
- 定序
- 其他執行個體設定
- 次要站台的執行個體需要
--license-type
設為DisasterRecovery
。 這個執行個體必須是新的,沒有任何使用者物件。
注意
- 請務必在受控執行個體建立期間指定
--license-type
。 藉此,系統就能從主要資料中心的主要執行個體中植入災害復原執行個體。 於部署後更新這項屬性不會獲得相同的效果。
部署程序
若要在兩個執行個體之間設定 Azure 容錯移轉群組,請完成下列步驟:
- 在主要站台建立分散式可用性群組的自訂資源
- 在次要站台建立分散式可用性群組的自訂資源
- 從鏡像憑證中複製二進位資料
- 使用
sync
模式或async
模式,設定主要站台與次要站台之間的分散式可用性群組
下圖顯示已正確設定的分散式可用性群組:
同步處理模式
Azure Arc 資料服務中的容錯移轉群組支援兩種同步處理模式 - sync
和 async
。 同步處理模式會直接影響執行個體之間的資料同步處理方式,且可能會影響主要受控執行個體的效能。
如果主要和次要站台彼此相距數英里,請使用 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
連線模式中部署,請遵循下列步驟。
在主要站台中佈建受控執行個體。
az sql mi-arc create --name <primaryinstance> --tier bc --replicas 3 --k8s-namespace <namespace> --use-k8s
在即將成為災害復原執行個體的次要站台上執行
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
鏡像憑證:建立執行個體容錯移轉群組 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
建立鏡像憑證檔案後,從次要執行個體將憑證複製到主要執行個體叢集上的共用/本地路徑,反之亦然。
在兩個站台上建立容錯移轉群組資源。
注意
確定 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
,以執行從主要複本到次要複本的手動容錯移轉 (不會遺失資料)。
- 在主要 SQL MI 上設定
主要站台的狀況不良/無法連線,且需要執行容錯移轉:
- 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
更新為BasePrice
或LicenseIncluded
,以針對所取用的虛擬核心起始計費。