Udostępnij za pośrednictwem


Ponowne aprowizowane repliki — wystąpienie zarządzane SQL włączone przez usługę Azure Arc

W tym artykule opisano sposób aprowizowania nowej repliki w celu zastąpienia istniejącej repliki w usłudze SQL Managed Instance włączonej przez usługę Azure Arc.

Po ponownym aprowizacji repliki należy ponownie skompilować nową replikę wystąpienia zarządzanego dla wystąpienia zarządzanego SQL włączonego przez wdrożenie usługi Azure Arc. To zadanie służy do zastępowania repliki, która nie może zsynchronizować, na przykład z powodu uszkodzenia danych na woluminach trwałych (PV) dla tego wystąpienia lub z powodu cyklicznego problemu z programem SQL.

Replikę można ponownie aprowizacji za pomocą interfejsu wiersza polecenia lub za pomocą polecenia kubectl.az Nie można ponownie aprowizacji repliki z witryny Azure Portal.

Wymagania wstępne

Replikę można ponownie aprowizować tylko w wystąpieniu z wieloma replikami.

Za pośrednictwem az interfejsu wiersza polecenia

Grupa poleceń interfejsu wiersza polecenia az sql mi-arc platformy Azure zawiera element reprovision-replica. Aby ponownie aprowizacja repliki, zaktualizuj poniższy przykład. Zastąp <instance_name-replica_number> ciąg nazwą wystąpienia i numerem repliki repliki, którą chcesz zamienić. Zastąp element <namespace>.

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

Aby na przykład ponownie aprowizacji repliki 2 wystąpienia mySqlInstance w przestrzeni nazw arc, użyj polecenia:

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

Polecenie jest uruchamiane do momentu ukończenia, w którym konsola zwraca nazwę zadania Kubernetes:

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

W tym momencie możesz zbadać zadanie lub usunąć je.

Badanie zadania

Poniższy przykład zwraca informacje o stanie zadania Kubernetes:

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

Ważne

Po ponownym aprowizacji repliki należy usunąć zadanie, zanim kolejna ponowna aprowizacja będzie mogła działać w tym samym wystąpieniu. Aby uzyskać więcej informacji, zobacz Ograniczenia.

Usuń zadanie

Poniższy przykład usuwa zadanie Kubernetes:

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

Parametr opcji: --no-wait

Istnieje opcjonalny --no-wait parametr dla polecenia . Jeśli wyślesz żądanie za pomocą --no-waitpolecenia , dane wyjściowe zawierają nazwę zadania do monitorowania. Na przykład:

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.

Za pomocą narzędzia kubectl

Aby ponownie aprowizacji za pomocą kubectlpolecenia , utwórz zasób niestandardowy. Aby utworzyć zasób niestandardowy do ponownego aprowizacji, możesz utworzyć plik yaml o tej strukturze:

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

Aby użyć tego samego przykładu co powyżej, mySqlinstance replika 2, ładunek to:

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

Monitorowanie lub usuwanie zadania

Po zastosowaniu kodu yaml za pomocą narzędzia kubectl można monitorować lub usuwać zadanie za pomocą narzędzia 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

Ważne

Po ponownym aprowizacji repliki należy usunąć zadanie, zanim kolejna ponowna aprowizacja będzie mogła działać w tym samym wystąpieniu. Aby uzyskać więcej informacji, zobacz Ograniczenia.

Ograniczenia

  • Zadanie odrzuca próby ponownego aprowizacji bieżącej repliki podstawowej. Jeśli bieżąca replika podstawowa jest uszkodzona i wymaga ponownej aprowizacji, przełącz tryb failover do innej repliki, a następnie zażądaj ponownej aprowizacji.

  • Ponowne aprowizowanie wielu replik w tym samym wystąpieniu jest uruchamiane szeregowo. Kolejka zadań i są przechowywane w Creating stanie do czasu zakończenia aktualnie aktywnego zadania i jego usunięcia. Nie ma automatycznego czyszczenia ukończonego zadania, więc ta serializacja będzie mieć wpływ na Ciebie, nawet jeśli uruchomisz az sql mi-arc reprovision-replica polecenie synchronicznie i zaczekaj na jego ukończenie przed zażądaniem kolejnej ponownej aprowizacji. We wszystkich przypadkach należy usunąć zadanie za pomocą polecenia kubectl , zanim będzie można uruchomić kolejną ponowną aprowizę w tym samym wystąpieniu.

Więcej szczegółów na temat serializacji zadań ponownej aprowizacji: jeśli masz wiele żądań ponownego aprowizacji repliki w jednym wystąpieniu, może zostać wyświetlony komunikat podobny do następującego w danych wyjściowych z elementu 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

Ten ostatni wpis dla repliki c-sql-kkncursza-1, sql-reprov-replica-c-sql-kkncursza-1-1664217434.531035, pozostanie w stanie Creating do momentu usunięcia ukończonego sql-reprov-replica-c-sql-kkncursza-1-1664217002.376132 .