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-wait
polecenia , 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ą kubectl
polecenia , 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 uruchomiszaz 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ą poleceniakubectl
, 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
.