Freigeben über


Erneutes Bereitstellen: SQL Managed Instance mit Azure Arc-Unterstützung

In diesem Artikel wird beschrieben, wie Sie ein neues Replikat bereitstellen, um ein bestehendes Replikat in SQL Managed Instance mit Azure Arc-Unterstützung zu ersetzen.

Wenn Sie ein Replikat erneut bereitstellen, erstellen Sie ein neues Replikat für die verwaltetes Instanz für eine Bereitstellung von SQL Managed Instance mit Azure Arc-Unterstützung. Verwenden Sie diese Aufgabe, um ein Replikat zu ersetzen, das nicht synchronisiert werden kann, z. B. aufgrund einer Beschädigung der Daten auf den persistenten Volumes (PV) für diese Instanz oder aufgrund eines wiederkehrenden SQL-Problems.

Sie können ein Replikat über az die CLI oder über kubectl erneut bereitstellen. Sie können ein Replikat über das Azure-Portal nicht erneut bereitstellen.

Voraussetzungen

Sie können ein Replikat nur auf einer Instanz mit mehreren Replikaten erneut bereitstellen.

Über die az-CLI

Die Azure CLI-az sql mi-arc-Befehlsgruppe enthält reprovision-replica. Aktualisieren Sie zum erneuten Bereitstellen eines Replikats das folgende Beispiel. Ersetzen Sie <instance_name-replica_number> durch den Instanznamen und die Nummer des Replikats, das Sie ersetzen möchten. Ersetzen Sie <namespace>.

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

Verwenden Sie zum erneuten Bereitstellen von Replikat 2 der Instanz mySqlInstance im Namespace arc beispielsweise Folgendes:

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

Der Befehl wird bis zum Abschluss ausgeführt. An diesem Punkt gibt die Konsole den Namen der Kubernetes-Aufgabe zurück:

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

An diesem Punkt können Sie die Aufgabe entweder untersuchen oder löschen.

Untersuchen der Aufgabe

Im folgenden Beispiel werden Informationen zum Status der Kubernetes-Aufgabe zurückgegeben:

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

Wichtig

Nach der erneuten Bereitstellung eines Replikats müssen Sie die Aufgabe löschen, bevor eine weitere erneute Bereitstellung auf derselben Instanz ausgeführt werden kann. Weitere Informationen finden Sie unter Einschränkungen.

Löschen der Aufgabe

Im folgenden Beispiel wird die Kubernetes-Aufgabe gelöscht:

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

Optionaler Parameter: --no-wait

Es gibt einen optionalen --no-wait-Parameter für den Befehl. Wenn Sie die Anforderung mit --no-wait senden, enthält die Ausgabe den Namen der zu überwachenden Aufgabe. Beispiel:

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.

Über kubectl

Erstellen Sie für die erneute Bereitstellung mit kubectl eine benutzerdefinierte Ressource. Um eine benutzerdefinierte Ressource für die erneute Bereitstellung zu erstellen, können Sie eine YAML-Datei mit dieser Struktur erstellen:

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

Die Nutzdaten für dasselbe Beispiel wie oben mySqlinstance, Replikat 2:

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

Überwachen oder Löschen der Aufgabe

Nachdem YAML über kubectl apply angewendet wurde, können Sie die Aufgabe über kubectl überwachen oder löschen:

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

Wichtig

Nach der erneuten Bereitstellung eines Replikats müssen Sie die Aufgabe löschen, bevor eine weitere erneute Bereitstellung auf derselben Instanz ausgeführt werden kann. Weitere Informationen finden Sie unter Einschränkungen.

Begrenzungen

  • Die Aufgabe lehnt Versuche ab, das aktuelle primäre Replikat erneut bereitzustellen. Wenn das aktuelle primäre Replikat beschädigt ist und eine erneute Bereitstellung erforderlich ist, führen Sie ein Failover zu einem anderen Replikat durch, und fordern Sie dann die erneute Bereitstellung an.

  • Die erneute Bereitstellung mehrerer Replikate in derselben Instanz wird seriell ausgeführt. Die Aufgaben werden in die Warteschlange eingereiht und im Creating-Status gehalten, bis die aktuell aktive Aufgabe abgeschlossen ist und gelöscht wird. Es gibt keine automatische Bereinigung einer abgeschlossenen Aufgabe, sodass sich diese Serialisierung auch dann auf Sie auswirkt, wenn Sie den az sql mi-arc reprovision-replica-Befehl synchron ausführen und warten, bis er abgeschlossen ist, bevor Sie eine erneute Bereitstellung anfordern. In allen Fällen müssen Sie die Aufgabe über kubectl entfernen, bevor eine weitere erneute Bereitstellung auf derselben Instanz ausgeführt werden kann.

Weitere Details zur Serialisierung von Aufgaben für die erneute Bereitstellung: Wenn Sie mehrere Anforderungen zum erneuten Bereitstellen eines Replikats in einer Instanz haben, sehen Sie diese möglicherweise in der Ausgabe von 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

Der letzte Eintrag für das Replikat c-sql-kkncursza-1, sql-reprov-replica-c-sql-kkncursza-1-1664217434.531035, bleibt im Status Creating, bis der abgeschlossene sql-reprov-replica-c-sql-kkncursza-1-1664217002.376132-Eintrag entfernt wird.