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 denaz 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 überkubectl
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.