Réplica de reaprovisionamiento: SQL Instancia administrada 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 Instancia administrada habilitada por Azure Arc.

Al volver a aprovisionar una réplica, recompila una nueva réplica de instancia administrada para una Instancia administrada de SQL habilitada por la implementación de 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 comando az 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és kubectl 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.