Réapprovisionner un réplica : SQL Managed Instance activée par Azure Arc
Cet article explique comment approvisionner un nouveau réplica pour remplacer un réplica existant dans une SQL Managed Instance activée par Azure Arc.
Quand vous réapprovisionnez un réplica, vous regénérez un nouveau réplica d’instance managée pour une SQL Managed Instance activée par le déploiement d’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 commandeaz 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 viakubectl
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é.