Réplica de reprovisionnement - SQL Managed Instance activé par Azure Arc

Cet article explique comment provisionner un nouveau réplica pour remplacer un réplica existant dans SQL Managed Instance activé par Azure Arc.

Lorsque vous réprovisionnez un réplica, vous régénérez un nouveau réplica d’instance managée pour une instance managée SQL activée par le déploiement Azure Arc. Utilisez cette tâche pour remplacer un réplica qui ne peut pas se synchroniser, par exemple, en raison d’une altération des données sur les volumes persistants (PV) de cette instance, ou en raison d’un problème SQL récurrent.

Vous pouvez reprovisionner un réplica via az CLI ou via kubectl. Vous ne pouvez pas reprovisionner un réplica à partir du portail Azure.

Prérequis

Vous pouvez uniquement reprovisionner un réplica sur une instance multiréplica.

Via az CLI

Le groupe de commandes Azure CLI az sql mi-arc comprend reprovision-replica. Pour reprovisionner un réplica, mettez à jour l’exemple suivant. Remplacez <instance_name-replica_number> par le nom de l’instance et le numéro de réplica du réplica à remplacer. Remplacez <namespace>.

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

Par exemple, pour reprovisionner le réplica 2 de l’instance mySqlInstance dans l’espace de noms arc, utilisez :

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

La commande s’exécute jusqu’à la fin, puis la console retourne le nom de la tâche Kubernetes :

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

À ce stade, vous pouvez examiner la tâche ou la supprimer.

Examiner la tâche

L’exemple suivant retourne des informations sur l’état de la tâche Kubernetes :

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

Important

Une fois qu’un réplica est reprovisionné, vous devez supprimer la tâche avant qu’un autre reprovisionnement puisse s’exécuter sur la même instance. Pour plus d’informations, consultez Limitations.

Supprimez la tâche

L’exemple suivant supprime la tâche Kubernetes :

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

Paramètre d’option : --no-wait

Il y a un paramètre facultatif --no-wait pour la commande. Si vous envoyez la demande avec --no-wait, la sortie comprend le nom de la tâche à monitorer. Par exemple :

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

Pour reprovisionner avec kubectl, créez une ressource personnalisée. Pour créer une ressource personnalisée à reprovisionner, vous pouvez créer un fichier .yaml avec cette structure :

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

Pour utiliser le même exemple que ci-dessus, mySqlinstance replica 2, la charge utile est :

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

Monitorer ou supprimer la tâche

Une fois que yaml est appliqué via kubectl apply, vous pouvez monitorer ou supprimer la tâche avec 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

Important

Une fois qu’un réplica est reprovisionné, vous devez supprimer la tâche avant qu’un autre reprovisionnement puisse s’exécuter sur la même instance. Pour plus d’informations, consultez Limitations.

Limites

  • La tâche rejette les tentatives de reprovisionnement du réplica principal actuel. Si le réplica principal actuel est endommagé et a besoin d’un reprovisionnement, basculez vers un autre réplica, puis demandez le reprovisionnement.

  • Le reprovisionnement de plusieurs réplicas dans la même instance s’exécute en série. Les tâches sont placées en file d’attente et conservées dans l’état Creating jusqu’à ce que la tâche actuellement active se termine et soit supprimée. Comme il n’y a pas de nettoyage automatique d’une tâche terminée, cette sérialisation vous affecte même si vous exécutez la commande az sql mi-arc reprovision-replica de manière synchrone et que vous attendez qu’elle se termine avant de demander un autre reprovisionnement. Dans tous les cas, vous devez supprimer la tâche via kubectl avant qu’un autre reprovisionnement sur la même instance puisse s’exécuter.

Plus d’informations sur la sérialisation des tâches de reprovisionnement : si vous avez plusieurs demandes de reprovisionnement d’un réplica dans une instance, vous pouvez voir quelque chose de ce type dans la sortie d’une 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

Cette dernière entrée pour le réplica c-sql-kkncursza-1, sql-reprov-replica-c-sql-kkncursza-1-1664217434.531035, reste dans l’état Creating jusqu’à ce que le réplica terminé sql-reprov-replica-c-sql-kkncursza-1-1664217002.376132 soit supprimé.