Delen via


Reprovision replica - SQL Managed Instance ingeschakeld door Azure Arc

In dit artikel wordt beschreven hoe u een nieuwe replica inricht om een bestaande replica te vervangen in SQL Managed Instance die is ingeschakeld door Azure Arc.

Wanneer u een replica opnieuw indeelt, bouwt u een nieuwe replica van een beheerd exemplaar opnieuw op voor een MET SQL beheerd exemplaar dat is ingeschakeld door azure Arc-implementatie. Gebruik deze taak om een replica te vervangen die niet kan worden gesynchroniseerd, bijvoorbeeld vanwege beschadiging van de gegevens op de permanente volumes (HW) voor dat exemplaar of vanwege een terugkerend SQL-probleem.

U kunt een replica opnieuw inrichten via az CLI of via kubectl. U kunt een replica niet opnieuw inrichten vanuit Azure Portal.

Vereisten

U kunt een replica alleen opnieuw inrichten op een exemplaar met meerdere replica's.

Via az CLI

Azure CLI-opdrachtgroep az sql mi-arc bevat reprovision-replica. Als u een replica opnieuw wilt inrichten, werkt u het volgende voorbeeld bij. Vervang door <instance_name-replica_number> de exemplaarnaam en het replicanummer van de replica die u wilt vervangen. Vervangen <namespace>.

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

Als u bijvoorbeeld replica 2 van het exemplaar mySqlInstance in naamruimte arcopnieuw wilt inrichten, gebruikt u:

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

De opdracht wordt uitgevoerd totdat deze is voltooid, waarna de console de naam van de Kubernetes-taak retourneert:

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

Op dit moment kunt u de taak onderzoeken of verwijderen.

De taak onderzoeken

In het volgende voorbeeld wordt informatie geretourneerd over de status van de Kubernetes-taak:

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

Belangrijk

Nadat een replica opnieuw is ingericht, moet u de taak verwijderen voordat een andere inrichting kan worden uitgevoerd op hetzelfde exemplaar. Zie Beperkingen voor meer informatie.

De taak verwijderen

In het volgende voorbeeld wordt de Kubernetes-taak verwijderd:

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

Optieparameter: --no-wait

Er is een optionele --no-wait parameter voor de opdracht. Als u de aanvraag verzendt, --no-waitbevat de uitvoer de naam van de taak die moet worden bewaakt. Voorbeeld:

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.

Via kubectl

Als u de inrichting opnieuw wilt inrichten kubectl, maakt u een aangepaste resource. Als u een aangepaste resource wilt maken voor het opnieuw inrichten, kunt u een YAML-bestand maken met deze structuur:

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

Als u hetzelfde voorbeeld wilt gebruiken als hierboven, mySqlinstance replica 2, is de nettolading:

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

De taak controleren of verwijderen

Zodra de yaml via kubectl is toegepast, kunt u de taak bewaken of verwijderen via 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

Belangrijk

Nadat een replica opnieuw is ingericht, moet u de taak verwijderen voordat een andere inrichting kan worden uitgevoerd op hetzelfde exemplaar. Zie Beperkingen voor meer informatie.

Beperkingen

  • De taak weigert pogingen om de huidige primaire replica opnieuw in te stellen. Als de huidige primaire replica beschadigd is en er opnieuw moet worden ingericht, voert u een failover uit naar een andere replica en vraagt u de inrichting aan.

  • Het opnieuw inrichten van meerdere replica's in hetzelfde exemplaar wordt serieel uitgevoerd. De takenwachtrij en worden in Creating de status gehouden totdat de huidige actieve taak is voltooid en wordt verwijderd. Er is geen automatische opschoning van een voltooide taak, dus deze serialisatie heeft invloed op u, zelfs als u de az sql mi-arc reprovision-replica opdracht synchroon uitvoert en wacht tot deze is voltooid voordat u een andere inrichting aanvraagt. In alle gevallen moet u de taak verwijderen voordat kubectl een andere inrichting op hetzelfde exemplaar kan worden uitgevoerd.

Meer informatie over serialisatie van herinrichtingstaken: als u meerdere aanvragen hebt om een replica in één exemplaar opnieuw in te stellen, ziet u mogelijk iets als dit in de uitvoer van een 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

Deze laatste vermelding voor replica c-sql-kkncursza-1, sql-reprov-replica-c-sql-kkncursza-1-1664217434.531035blijft in de status Creating totdat het voltooide sql-reprov-replica-c-sql-kkncursza-1-1664217002.376132 item wordt verwijderd.