Réplica de reaprovisionamiento: SQL Server Managed Instance habilitado por Azure Arc
En este artículo se describe cómo aprovisionar una nueva réplica para reemplazar una réplica existente en SQL Server Managed Instance habilitado por Azure Arc.
Al volver a aprovisionar una réplica, se recompila una nueva réplica de instancia administrada para la implementación de SQL Server Managed Instance habilitado por Azure Arc. Use esta tarea para reemplazar una réplica que no se puede sincronizar, por ejemplo, debido a daños en los datos de los volúmenes persistentes (PV) para esa instancia, o debido a algún problema recurrente de SQL.
Puede volver a aprovisionar una réplica mediante la CLI de az
o mediante kubectl
. No se puede volver a aprovisionar una réplica desde Azure Portal.
Requisitos previos
Solo puede volver a aprovisionar una réplica en una instancia de varias réplicas.
Mediante CLI de az
El grupo de comandos az sql mi-arc
de la CLI de Azure incluye reprovision-replica
. Para volver a aprovisionar una réplica, actualice el ejemplo siguiente. Reemplace <instance_name-replica_number>
por el nombre de instancia y el número de réplica de la réplica que quiere reemplazar. Reemplace <namespace>
.
az sql mi-arc reprovision-replica -n <instance_name-replica_number> -k <namespace> --use-k8s
Por ejemplo, para volver a aprovisionar la réplica 2 de instancia mySqlInstance
en el espacio de nombres arc
, use:
az sql mi-arc reprovision-replica -n mySqlInstance-2 -k arc --use-k8s
El comando se ejecuta hasta la finalización, momento en el que la consola devuelve el nombre de la tarea de Kubernetes:
sql-reprov-replica-mySqlInstance-2-1664217002.376132 is Ready
En este momento, puede examinar la tarea o eliminarla.
Examinar la tarea
En el ejemplo siguiente se devuelve información sobre el estado de la tarea de Kubernetes:
kubectl describe SqlManagedInstanceReprovisionReplicaTask sql-reprov-replica-mySqlInstance-2-1664217002.376132 -n arc
Importante
Una vez que se vuelve a aprovisionar una réplica, debe eliminar la tarea para que se pueda ejecutar otro reaprovisionamiento en la misma instancia. Para más información, consulte las limitaciones.
Eliminar la tarea
En el ejemplo siguiente se elimina la tarea de Kubernetes:
kubectl delete SqlManagedInstanceReprovisionReplicaTask sql-reprov-replica-mySqlInstance-2-1664217002.376132 -n arc
Parámetro opcional: --no-wait
Hay un parámetro opcional --no-wait
para el comando. Si envía la solicitud con --no-wait
, la salida incluye el nombre de la tarea que se va a supervisar. Por ejemplo:
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.
A través de kubectl
Para volver a aprovisionar con kubectl
, cree un recurso personalizado. Para crear un recurso personalizado para volver a aprovisionar, puede crear un archivo .yaml con esta estructura:
apiVersion: tasks.sql.arcdata.microsoft.com/v1beta1
kind: SqlManagedInstanceReprovisionReplicaTask
metadata:
name: <task name you make up>
namespace: <namespace>
spec:
replicaName: instance_name-replica_number
Para usar el mismo ejemplo anterior, réplica 2 de mySqlinstance
, la carga es:
apiVersion: tasks.sql.arcdata.microsoft.com/v1beta1
kind: SqlManagedInstanceReprovisionReplicaTask
metadata:
name: my-reprovision-task-mySqlInstance-2
namespace: arc
spec:
replicaName: mySqlInstance-2
Supervisar o eliminar la tarea
Una vez aplicado el yaml a través de kubectl apply, puede supervisar o eliminar la tarea a través de 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
Importante
Una vez que se vuelve a aprovisionar una réplica, debe eliminar la tarea para que se pueda ejecutar otro reaprovisionamiento en la misma instancia. Para más información, consulte las limitaciones.
Limitaciones
La tarea rechaza los intentos de volver a aprovisionar la réplica principal actual. Si la réplica principal actual está dañada y necesita volver a aprovisionarse, conmute por error a otra réplica y, después, solicite el reaprovisionamiento.
El reaprovisionamiento de varias réplicas en la misma instancia se ejecuta en serie. Las tareas se ponen en cola y se mantienen en estado
Creating
hasta que la tarea activa finaliza y se elimina. No hay ninguna limpieza automática de una tarea completada, por lo que esta serialización le afectará incluso si ejecuta el comandoaz sql mi-arc reprovision-replica
de forma sincrónica y espera a que se complete antes de solicitar otro reaprovisionamiento. En todos los casos, debe quitar la tarea a travéskubectl
de antes de que se pueda ejecutar otro reaprovisionamiento en la misma instancia.
Más detalles sobre la serialización de tareas de reaprovisionamiento: si tiene varias solicitudes para volver a aprovisionar una réplica en una instancia, es posible que vea algo parecido a esto en la salida de un 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
Esa última entrada para la réplica c-sql-kkncursza-1, sql-reprov-replica-c-sql-kkncursza-1-1664217434.531035
, permanecerá en estado Creating
hasta que se quite la completada, sql-reprov-replica-c-sql-kkncursza-1-1664217002.376132
.