重新佈建複本 - Azure Arc 所啟用的 SQL 受控執行個體

本文說明如何佈建新的複本,以取代 Azure Arc 所啟用之 SQL 受控執行個體中的現有複本。

當您重新佈建複本時,您會重建 Azure Arc 部署所啟用之 SQL 受控執行個體的新受控執行個體複本。 使用此工作來取代無法同步的複本,例如,因為該執行個體在永續性磁碟區 (PV) 上的資料損毀,或因為某些週期性 SQL 問題。

您可以透過 az CLI透過 kubectl 重新佈建複本。 您無法從 Azure 入口網站重新佈建複本。

必要條件

您只能在多複本執行個體上重新佈建複本。

透過 az CLI

Azure CLI az sql mi-arc 命令群組包含 reprovision-replica。 若要重新佈建複本,請更新下列範例。 將 <instance_name-replica_number> 換成所要取代複本的執行個體名稱和複本號碼。 取代 <namespace>

az sql mi-arc reprovision-replica -n <instance_name-replica_number> -k <namespace> --use-k8s

例如,若要在命名空間 arc 中重新佈建執行個體 mySqlInstance 的複本 2,請使用:

az sql mi-arc reprovision-replica -n mySqlInstance-2 -k arc --use-k8s

此命令會執行到完成,屆時主控台會傳回 Kubernetes 工作的名稱:

sql-reprov-replica-mySqlInstance-2-1664217002.376132 is Ready

此時,您可以檢查或刪除工作。

檢查工作

下列範例傳回 Kubernetes 工作狀態的相關資訊:

kubectl describe SqlManagedInstanceReprovisionReplicaTask sql-reprov-replica-mySqlInstance-2-1664217002.376132 -n arc

重要

重新佈建複本之後,您必須刪除工作,才能在同一個執行個體上執行另一次重新佈建。 如需詳細資訊,請參閱限制

刪除工作

下列範例刪除 Kubernetes 工作:

kubectl delete SqlManagedInstanceReprovisionReplicaTask sql-reprov-replica-mySqlInstance-2-1664217002.376132 -n arc

選用參數:--no-wait

此命令有選用的 --no-wait 參數。 如果您使用 --no-wait 傳送要求,則輸出會包含待監視工作的名稱。 例如:

az sql mi-arc reprovision-replica -n mySqlInstance-2 -k arc --use-k8s --no-wait
Reprovisioning replica mySqlInstance-2 in namespace `arc`. Please use
`kubectl get -n arc SqlManagedInstanceReprovisionReplicaTask sql-reprov-replica-mySqlInstance-2-1664217434.531035`
to check its status or
`kubectl get -n arc SqlManagedInstanceReprovisionReplicaTask`
to view all reprovision tasks.

透過 kubectl

若要使用 kubectl 重新佈建,請建立自訂資源。 若要建立要重新佈建的自訂資源,您可以建立具有下列結構的 .yaml 檔案:

apiVersion: tasks.sql.arcdata.microsoft.com/v1beta1
kind: SqlManagedInstanceReprovisionReplicaTask
metadata:
  name: <task name you make up>
  namespace: <namespace>
spec:
  replicaName: instance_name-replica_number

若要使用上述相同的範例,即 mySqlinstance 複本 2,則承載為:

apiVersion: tasks.sql.arcdata.microsoft.com/v1beta1
kind: SqlManagedInstanceReprovisionReplicaTask
metadata:
  name: my-reprovision-task-mySqlInstance-2
  namespace: arc
spec:
  replicaName: mySqlInstance-2

監視或刪除工作

透過 kubectl apply 套用 yaml 之後,您可以透過 kubectl 來監視或刪除工作:

kubectl get -n arc SqlManagedInstanceReprovisionReplicaTask my-reprovision-task-mySqlInstance-2
kubectl describe -n arc SqlManagedInstanceReprovisionReplicaTask my-reprovision-task-mySqlInstance-2
kubectl delete -n arc SqlManagedInstanceReprovisionReplicaTask my-reprovision-task-mySqlInstance-2

重要

重新佈建複本之後,您必須刪除工作,才能在同一個執行個體上執行另一次重新佈建。 如需詳細資訊,請參閱限制

限制

  • 工作會拒絕嘗試重新佈建目前的主要複本。 如果目前的主要複本損毀且需要重新佈建,請容錯移轉至不同的複本,然後要求重新佈建。

  • 在相同執行個體中重新佈建多個複本會循序執行。 工作會加入佇列並停留在 Creating 狀態,直到目前作用中的工作完成並刪除為止。 不會自動清除已完成的工作,即使您以同步方式執行 az sql mi-arc reprovision-replica 命令,並等候完成後再要求另一次重新佈建,此序列化也會影響您。 在所有情況下,您必須透過 kubectl 移除工作,才能在同一個執行個體上執行另一次重新佈建。

重新佈建工作序列化的詳細資料:如果在一個執行個體中多次要求重新佈建複本,您在 kubectl get SqlManagedInstanceReprovisionReplicaTask 的輸出中可能會看到如下內容:

kubectl get SqlManagedInstanceReprovisionReplicaTask -n arc
NAME                                                     STATUS      AGE
sql-reprov-replica-c-sql-djlexlmty-1-1664217344.304601   Completed   13m
sql-reprov-replica-c-sql-kkncursza-1-1664217002.376132   Completed   19m
sql-reprov-replica-c-sql-kkncursza-1-1664217434.531035   Creating    12m

複本 c-sql-kkncursza-1 的最後一個項目 sql-reprov-replica-c-sql-kkncursza-1-1664217434.531035 會停留在 Creating 狀態,直到移除已完成的項目 sql-reprov-replica-c-sql-kkncursza-1-1664217002.376132 為止。