Actualización de una instancia administrada de Azure SQL Managed Instance conectada de manera directa a Azure Arc mediante la CLI

En este artículo se explica cómo actualizar una instancia administrada de Azure SQL Managed Instance en un controlador de datos habilitado para Azure Arc conectado de manera directa mediante la CLI de Azure (az).

Requisitos previos

Instalación de herramientas

Antes de pasar a las tareas de este artículo, instale:

La versión de la extensión de arcdata y la versión de la imagen están relacionadas. Compruebe que tiene la versión correcta de la extensión de arcdata que corresponde a la versión de la imagen a la que quiere actualizar en el registro de versiones.

Limitaciones

El controlador de datos de Azure Arc debe actualizarse a la nueva versión para que la instancia administrada se pueda actualizar.

Si la integración de Active Directory está habilitada, el conector de Active Directory debe actualizarse a la nueva versión antes de que se pueda actualizar la instancia administrada.

La instancia administrada debe tener la misma versión que el controlador de datos y el conector de Active Directory antes de actualizar un controlador de datos.

No hay ningún proceso de actualización por lotes disponible en este momento.

Actualización de la instancia administrada

Primero puede hacer un simulacro. El simulacro valida el esquema de versión y enumera las instancias que se actualizarán. Use --dry-run. Por ejemplo:

az sql mi-arc upgrade --resource-group <resource group> --name <instance name> --dry-run 

El resultado será:

Preparing to upgrade sql sqlmi-1 in namespace arc to data controller version.
****Dry Run****1 instance(s) would be upgraded by this commandsqlmi-1 would be upgraded to <version-tag>.

Uso general

Durante una actualización de uso general de SQL Managed Instance, el pod finalizará y se volverá a aprovisionar en la nueva versión. Como consecuencia, se producirá un corto tiempo de inactividad a medida que se crea el nuevo pod. Para garantizar una interrupción mínima, deberá crear resistencia en la aplicación, por ejemplo, en la lógica de reintento de conexión. Lea Información general sobre el fundamento de confiabilidad para obtener más información sobre la arquitectura de resistencia y la Guía de reintentos para los servicios de Azure.

Crítico para la empresa

Durante una actualización crítica para la empresa de SQL Managed Instance con más de una réplica:

  • Los pods de réplica secundaria finalizan y se vuelven a aprovisionar en la nueva versión.
  • Una vez actualizadas las réplicas, la réplica principal conmutará por error a una réplica actualizada.
  • El pod principal anterior finaliza y se vuelve a aprovisionar en la nueva versión y se convierte en uno secundario.

Hay un breve momento de tiempo de inactividad cuando se produce la conmutación por error.

Actualizar

Para actualizar una instancia administrada, use el siguiente comando:

az sql mi-arc upgrade --resource-group <resource group> --name <instance name> --desired-version <imageTag> [--no-wait]

Ejemplo:

az sql mi-arc upgrade --resource-group myresource-group --name sql1 --desired-version v1.6.0_2022-05-02 [--no-wait]

Monitor

Puede supervisar el progreso de la actualización con la CLI.

Ejemplo de la CLI

az sql mi-arc show --resource-group <resource group> --name <instance name>

Output

La salida del comando mostrará la información del recurso. La información de actualización estará en Estado.

Durante la actualización, State mostrará Updating y Running Version será la versión actual:

Status:
  Log Search Dashboard:  https://30.88.222.48:5601/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:sqlmi-1'))
  Metrics Dashboard:     https://30.88.221.32:3000/d/40q72HnGk/sql-managed-instance-metrics?var-hostname=sqlmi-1-0
  Observed Generation:   2
  Primary Endpoint:      30.76.129.38,1433
  Ready Replicas:        1/1
  Running Version:       v1.5.0_2022-04-05
  State:                 Updating

Una vez completada la actualización, State mostrará Ready y Running Version será la nueva versión:

Status:
  Log Search Dashboard:  https://30.88.222.48:5601/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:sqlmi-1'))
  Metrics Dashboard:     https://30.88.221.32:3000/d/40q72HnGk/sql-managed-instance-metrics?var-hostname=sqlmi-1-0
  Observed Generation:   2
  Primary Endpoint:      30.76.129.38,1433
  Ready Replicas:        1/1
  Running Version:       v1.6.0_2022-05-02
  State:                 Ready

Solución de problemas

Cuando la versión deseada se establece en una versión específica, el trabajo de arranque intentará actualizar a esa versión hasta que se realice correctamente. Si la actualización se realiza correctamente, la propiedad RunningVersion de la especificación se actualiza a la nueva versión. Las actualizaciones pueden producir un error en escenarios como una etiqueta de imagen incorrecta, no se pueden conectar al registro o al repositorio, una CPU o memoria insuficiente asignadas a los contenedores o un almacenamiento insuficiente.

  1. Ejecute el comando siguiente para ver si alguno de los pods muestra un estado Error o tiene un gran número de reinicios:

    kubectl get pods --namespace <namespace>
    
  2. Para ver si hay un error en los eventos, ejecute

    kubectl describe pod <pod name> --namespace <namespace>
    
  3. Para obtener una lista de los contenedores de los pods, ejecute

    kubectl get pods <pod name> --namespace <namespace> -o jsonpath='{.spec.containers[*].name}*'
    
  4. Para obtener los registros de un contenedor, ejecute

    kubectl logs <pod name> <container name> --namespace <namespace>
    

Para ver errores comunes y cómo solucionarlos, vaya a Recursos para la solución de problemas.