Actualiza la versión principal de la base de datos de manera local

En esta página, se describe cómo actualizar la versión principal de la base de datos mediante la actualización de tu instancia de Cloud SQL in situ en lugar de hacerlo mediante la migración de datos.

Introducción

Periódicamente, los proveedores de software de base de datos lanzan nuevas versiones principales que contienen nuevas funciones y mejoras de rendimiento y seguridad. Cloud SQL toma versiones nuevas después de su lanzamiento. Una vez que Cloud SQL ofrece compatibilidad con una versión principal nueva, puedes actualizar las instancias para mantener la base de datos actualizada.

Puedes actualizar la versión de la base de datos de una instancia in situ o mediante la migración de datos. Las actualizaciones in situ son una forma más simple de actualizar la versión principal de la instancia. No es necesario migrar datos ni cambiar strings de conexión de la aplicación. Con las actualizaciones in situ, puedes conservar el nombre, la dirección IP y otros parámetros de configuración de la instancia actual después de la actualización. Las actualizaciones in situ no requieren que traslades archivos de datos y se pueden completar más rápido. En algunos casos, el tiempo de inactividad es más corto que el que implica la migración de tus datos.

La operación de actualización in situ de Cloud SQL para SQL Server usa la utilidad de actualización in situ de SQL Server.

Planifica una actualización de la versión principal

  1. Elige una versión principal de destino.

    gcloud

    Para obtener información sobre cómo instalar y comenzar a usar la CLI de gcloud, consulta Instala la CLI de gcloud. Para obtener información sobre cómo iniciar Cloud Shell, consulta Usa Cloud Shell.

    Para verificar las versiones de las bases de datos a las que puedes orientar una actualización in situ en tu instancia, haz lo siguiente:

    1. Ejecuta el siguiente comando.
    2. gcloud sql instances describe INSTANCE_NAME
         

      Reemplaza INSTANCE_NAME por el nombre de la instancia.

    3. En el resultado del comando, busca la sección etiquetada upgradableDatabaseVersions.
    4. Cada subartículo muestra una versión de base de datos que está disponible para actualización. En cada subartículo, revisa los siguientes campos.
      • majorVersion: la versión principal a la que puedes orientar la actualización in situ.
      • name: la cadena de versión de la base de datos que incluye la versión principal.
      • displayName: el nombre visible de la versión de la base de datos.

    REST v1

    Para verificar qué versiones de bases de datos de destino están disponibles para una actualización in situ de una versión principal, usa el método instances.get de la API de Cloud SQL Admin.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • INSTANCE_NAME: El nombre de la instancia.

    Método HTTP y URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    
    upgradableDatabaseVersions:
    
    {
      major_version: "SQLSERVER_2022_STANDARD"
      name: "SQLSERVER_2022_STANDARD"
      display_name: "SQL Server 2022 Standard"
    }
    
    

    REST v1beta4

    Para verificar qué versiones de bases de datos de destino están disponibles para la actualización in situ de la versión principal de una instancia, usa el método instances.get de la API de Cloud SQL Admin.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • INSTANCE_NAME: El nombre de la instancia.

    Método HTTP y URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    
    upgradableDatabaseVersions:
    
    {
      major_version: "SQLSERVER_2022_STANDARD"
      name: "SQLSERVER_2022_STANDARD"
      display_name: "SQL Server 2022 Standard"
    }
    
    

    Para obtener la lista completa de las versiones de bases de datos compatibles con Cloud SQL, consulta Versiones de bases de datos y políticas de versiones

  2. Considera las características que se ofrecen en cada versión principal de la base de datos y aborda las incompatibilidades.

    Consulta las funciones descontinuadas y los cambios rotundos de SQL Server.

    Las nuevas versiones principales agregan cambios incompatibles que pueden requerir que modifiques el código de la aplicación, el esquema o la configuración de la base de datos. Antes de que puedas actualizar la instancia de la base de datos, debes revisar las notas de la versión principal de destino para determinar las incompatibilidades que debes abordar.

  3. Prueba la actualización con una ejecución de prueba.

    Realiza una ejecución de prueba del proceso de actualización de extremo a extremo en un entorno de prueba antes de actualizar la base de datos de producción. Puedes clonar tu instancia para crear una copia idéntica de los datos en los que probarás el proceso de actualización.

    Además de validar que la actualización se complete con éxito, ejecuta pruebas para asegurarte de que la aplicación se comporte como se espera en la base de datos actualizada.

  4. Decide el momento de la actualización.

    La actualización requiere que la instancia deje de estar disponible durante un período. Planifica la actualización durante un período en el que la actividad de la base de datos sea baja.

Actualiza la versión principal de la base de datos de manera local

Cuando inicias una operación de actualización, Cloud SQL primero verifica la configuración de tu instancia a fin de garantizar que sea compatible con una actualización. Después de verificar tu configuración, Cloud SQL hace que tu instancia deje de estar disponible, realiza una copia de seguridad previa a la actualización, ejecuta la actualización, hace que la instancia esté disponible otra vez y realiza una copia de seguridad posterior a la actualización.

Console

  1. En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
  3. Haz clic en Editar.
  4. En la sección Información de la instancia, haz clic en el botón Actualizar y confirma que deseas ir a la página de actualización.
  5. En la página Elige una versión para la base de datos, haz clic en la lista Versión de la base de datos para la actualización y selecciona una de las versiones principales de base de datos disponibles.
  6. Haz clic en Continuar.
  7. En el cuadro ID de instancia, ingresa el nombre de la instancia y, luego, haz clic en el botón Iniciar actualización.
La operación tarda varios minutos en completarse.

Verifica que la versión principal de la base de datos actualizada aparezca debajo del nombre de la instancia en la página Descripción general de la instancia.

gcloud

  1. Inicia la actualización.

    Usa el comando gcloud sql instances patch con la marca --database-version.

    Antes de ejecutar el comando, reemplaza lo siguiente:

    • INSTANCE_NAME: El nombre de la instancia
    • DATABASE_VERSION: La enumeración de la versión principal de la base de datos, que debe ser posterior que la versión actual. Especifica una versión de la base de datos para una versión principal que esté disponible como destino de actualización de la instancia. Puedes obtener esta enumeración como el primer paso del plan de actualización. Si necesitas una lista completa de las enumeraciones de versiones de bases de datos, consulta SqlDatabaseEnums.
    gcloud sql instances patch INSTANCE_NAME \
    --database-version=DATABASE_VERSION

    Las actualizaciones de versiones principales tardan varios minutos en completarse. Es posible que veas un mensaje que indica que la operación está tardando más de lo esperado. Puedes ignorar este mensaje o ejecutar el comando gcloud sql operations wait para descartarlo.

  2. Obtén el nombre de la operación de actualización.

    Usa el comando gcloud sql operations list con la marca --instance.

    Antes de ejecutar el comando, reemplaza la variable INSTANCE_NAME por el nombre de la instancia.

    gcloud sql operations list --instance=INSTANCE_NAME
  3. Supervisa el estado de la actualización.

    Usa el comando gcloud sql operations describe.

    Antes de ejecutar el comando, reemplaza la variable OPERATION por el nombre de la operación de actualización que recuperaste en el paso anterior.

    gcloud sql operations describe OPERATION

REST v1

  1. Inicia la actualización local.

    Usa una solicitud PATCH con el método instances:patch.

    Antes de usar cualquiera de los datos de la solicitud, reemplaza estas variables:

    • PROJECT_ID: El ID del proyecto.
    • INSTANCE_NAME: El nombre de la instancia

    Método HTTP y URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    Cuerpo JSON de la solicitud:

    {
      "databaseVersion": DATABASE_VERSION
    }

    Reemplaza DATABASE_VERSION por la enumeración de la versión principal de la base de datos, que debe ser posterior que la versión actual. Especifica una versión de la base de datos para una versión principal que esté disponible como destino de actualización de la instancia. Puedes obtener esta enumeración como el primer paso del plan de actualización. Si necesitas una lista completa de las enumeraciones de versiones de bases de datos, consulta SqlDatabaseVersion.

  2. Obtén el nombre de la operación de actualización.

    Usa una solicitud GET con el método operations.list después de reemplazar PROJECT_ID por el ID del proyecto.

    Método HTTP y URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations
  3. Supervisa el estado de la actualización.

    Usa una solicitud GET con el método operations.get después de reemplazar las siguientes variables:

    • PROJECT_ID: El ID del proyecto.
    • OPERATION_NAME: El nombre de la operación de actualización que se recuperó en el paso anterior.

    Método HTTP y URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operation/OPERATION_NAME

Terraform

Para actualizar la versión de la base de datos, usa un Recurso de Terraform y el proveedor de Terraform para Google Cloud, versión 4.34.0 o posterior.

resource "google_sql_database_instance" "instance" {
  name             = "sqlserver-instance"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier = "db-custom-2-7680"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Aplique los cambios

Para aplicar tu configuración de Terraform en un proyecto de Google Cloud, completa los pasos de las siguientes secciones.

Prepara Cloud Shell

  1. Inicia Cloud Shell
  2. Establece el proyecto de Google Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.

    Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.

Prepara el directorio

Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).

  1. En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión .tf, por ejemplo, main.tf. En este instructivo, el archivo se denomina main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.

    Copia el código de muestra en el main.tf recién creado.

    De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.

  3. Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
  4. Guarda los cambios.
  5. Inicializa Terraform. Solo debes hacerlo una vez por directorio.
    terraform init

    De manera opcional, incluye la opción -upgrade para usar la última versión del proveedor de Google:

    terraform init -upgrade

Aplica los cambios

  1. Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
    terraform plan

    Corrige la configuración según sea necesario.

  2. Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe yes cuando se te solicite:
    terraform apply

    Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.

  3. Abre tu proyecto de Google Cloud para ver los resultados. En la consola de Google Cloud, navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.

Borra los cambios

Para borrar tus cambios, haz lo siguiente:

  1. Para inhabilitar la protección contra la eliminación, en tu archivo de configuración de Terraform, establece el argumento deletion_protection en false.
    deletion_protection =  "false"
  2. Para aplicar la configuración actualizada de Terraform, ejecuta el siguiente comando y, luego, ingresa yes cuando se te solicite:
    terraform apply
  1. Quita los recursos que se aplicaron antes con tu configuración de Terraform mediante la ejecución del siguiente comando y, luego, ingresa yes cuando se te solicite:

    terraform destroy

Cuando envías una solicitud de actualización local, Cloud SQL primero realiza una verificación previa a la actualización. Si Cloud SQL determina que tu instancia no está lista para una actualización, tu solicitud de actualización fallará con un mensaje que sugiere cómo abordar el problema. Consulta también Soluciona problemas de una actualización de versión principal.

Copias de seguridad automáticas de actualización

Cuando realizas una actualización de versión principal, Cloud SQL realiza de forma automática dos copias de seguridad bajo demanda, llamadas copias de seguridad de actualización:

  • La primera copia de seguridad de actualización es la copia de seguridad previa a la actualización, que se realiza inmediatamente antes de comenzar la actualización. Puedes usar esta copia de seguridad para restablecer la instancia de la base de datos a su estado en la versión anterior.
  • La segunda copia de seguridad es la copia de seguridad posterior a la actualización, que se realiza inmediatamente después de que se permiten nuevas operaciones de escritura en la instancia de la base de datos actualizada.

Cuando ves tu lista de copias de seguridad, las copias de seguridad de actualización se enumeran con el tipo On-demand. Las copias de seguridad de actualización están etiquetadas para que puedas identificarlas con facilidad. Por ejemplo, si actualizas de SQL Server Enterprise 2017 a SQL Server Enterprise 2019, tu copia de seguridad previa a la actualización se etiqueta como Pre-upgrade backup, SQLSERVER_2017_ENTERPRISE to SQLSERVER_2019_ENTERPRISE. y la copia de seguridad posterior a la actualización se etiqueta como Post-upgrade backup, SQLSERVER_2019_ENTERPRISE from SQLSERVER_2017_ENTERPRISE.

Al igual que con otras copias de seguridad bajo demanda, las copias de seguridad de actualización persisten hasta que las borres o borres la instancia.

Actualiza el nivel de compatibilidad de la base de datos

El nivel de compatibilidad de la base de datos determina cómo se comporta la base de datos con respecto a la aplicación a la que entrega datos. La configuración del nivel de compatibilidad de la base de datos garantiza la retrocompatibilidad con versiones anteriores de SQL Server y se relaciona con los cambios de Transact-SQL y del optimizador de consultas. Cuando se actualiza la versión de la base de datos de una instancia de SQL Server, se conservan los niveles de compatibilidad de las bases de datos existentes, de modo que la aplicación pueda seguir funcionando en la versión más reciente de SQL Server. La actualización del nivel de compatibilidad te ayuda a beneficiarte de nuevas funciones, mejoras del procesamiento de consultas y otros cambios.

Una vez que hayas actualizado la versión del motor de base de datos de una instancia, cuando esté lista la aplicación a la que entrega datos la base de datos, actualiza el nivel de compatibilidad de cada base de datos de la instancia. Cuando el nivel de compatibilidad se configura como el más reciente, las bases de datos se actualizan con las funciones y las mejoras de rendimiento más recientes.

Para actualizar el nivel de compatibilidad de la base de datos, sigue estos pasos:

  1. Identifica el nivel de compatibilidad actual de tu base de datos.

    Por ejemplo, en SQL Server 2017, el nivel de compatibilidad predeterminado es 140. Para verificar el nivel de compatibilidad actual de la base de datos, ejecuta el siguiente comando en Transact-SQL después de reemplazar DATABASE_NAME

    por el nombre de la base de datos en tu instancia de SQL Server.

    USE DATABASE_NAME
    GO
    SELECT compatibility_level
    FROM sys.databases WHERE name = 'DATABASE_NAME'
  2. Determina el nivel de compatibilidad objetivo.

    Identifica la designación del nivel de compatibilidad predeterminado para la versión de la base de datos actualizada a fin de determinar el nivel de compatibilidad objetivo de tu base de datos. Por ejemplo, para SQL Server 2022, el nivel de compatibilidad predeterminado es 160. Consulta la tabla que asigna versiones nuevas de SQL Server con niveles de compatibilidad.

  3. Evalúa las diferencias entre tus niveles de compatibilidad actuales y objetivo.

    Antes de actualizar el nivel de compatibilidad, estudia las diferencias en el comportamiento del sistema entre el nivel de compatibilidad actual y el nivel de compatibilidad objetivo. Consulta la lista completa de las diferencias entre los niveles de compatibilidad.

  4. Recopila un modelo de referencia de los datos de la carga de trabajo.

    Antes de actualizar el nivel de compatibilidad, recopila un modelo de referencia de los datos de la carga de trabajo con SQL Server Query Store para que puedas identificar y abordar las consultas regresivas más adelante. Query Store se usa a fin de capturar las consultas y los planes para un ciclo de negocios típico y establecer un modelo de referencia de rendimiento. Para obtener un flujo de trabajo guiado, usa la función Asistente de ajuste de consultas en SQL Server Management Studio.

  5. Actualiza el nivel de compatibilidad.

    Para cambiar el nivel de compatibilidad de la base de datos, ejecuta el siguiente comando en Transact-SQL después de reemplazar DATABASE_NAME

    por el nombre de la base de datos en tu instancia de SQL Server y TARGET_COMPATIBILITY_LEVEL por el nivel de compatibilidad objetivo.

    ALTER DATABASE DATABASE_NAME
    SET COMPATIBILITY_LEVEL = TARGET_COMPATIBILITY_LEVEL;
    GO
  6. Recopila datos actualizados de la carga de trabajo.

    Recopila datos actualizados de la carga de trabajo mediante Query Store para la comparación y la detección de regresión.

  7. Aborda las consultas regresivas.

    Por lo general, los cambios de Query Optimizer en los niveles de compatibilidad actualizados mejoran el rendimiento. Sin embargo, ocasionalmente es posible que ciertas consultas causen una regresión en el rendimiento. La función Consultas regresivas de Query Store te ayuda a identificar las consultas con regresión y te permite forzar el último plan de consultas bueno conocido. SQL Server también ofrece corrección automática del plan, que puede cambiar de forma automática al último plan bueno conocido en caso de una regresión de consulta.

Completa la actualización de la versión principal

Después de actualizar tu instancia principal, realiza pruebas de aceptación para asegurarte de que el sistema actualizado funcione como se espera.

Soluciona problemas de una actualización de versión principal

Cloud SQL muestra un mensaje de error si intentas ejecutar un comando de actualización no válido, por ejemplo, si tu instancia contiene marcas de base de datos no válidas para la versión nueva.

Si tu solicitud de actualización falla, verifica su sintaxis. Si la solicitud tiene una estructura válida, intenta con las siguientes sugerencias.

Visualiza los registros de actualización

Si se produce algún problema con una solicitud de actualización válida, Cloud SQL publica registros de errores en projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fsqlserver.err. Cada entrada de registro contiene una etiqueta con el identificador de instancia que te ayuda a identificarla con el error de actualización. Busca estos errores de actualización y resuélvelos.

Para ver los registros de errores, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
  3. En el panel Operaciones y registros de la página Descripción general de la instancia, haz clic en el vínculo Ver registros de error de SQL Server.

    Se abrirá la página Explorador de registros.

  4. Visualiza los registros de la siguiente manera:

    • Para enumerar todos los registros de errores de un proyecto, selecciona el nombre correspondiente en el filtro Nombre del registro.

    Para obtener más información sobre los filtros de consulta, ve a la sección Consultas avanzadas.

    • Para filtrar los registros de errores de actualización de una sola instancia, ingresa la siguiente consulta en el cuadro Buscar en todos los campos después de reemplazar DATABASE_ID

    por el ID del proyecto seguido del nombre de la instancia en este formato: project_id:instance_name.

    resource.type="cloudsql_database"
    resource.labels.database_id="DATABASE_ID"
    logName : "projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fsqlserver.err"

    Por ejemplo, para filtrar los registros de errores de actualización de una instancia llamada shopping-db que se ejecuta en el proyecto buylots, usa el siguiente filtro de consulta:

     resource.type="cloudsql_database"
     resource.labels.database_id="buylots:shopping-db"
     logName : "projects/buylots/logs/cloudsql.googleapis.com%2Fsqlserver.err"

Restablece a la versión principal anterior

Si el sistema de la base de datos actualizada no funciona como se espera, es posible que debas restablecer la instancia a la versión anterior. Para ello, restablece tu copia de seguridad previa a la actualización en una instancia de recuperación de Cloud SQL, que es una instancia nueva que ejecuta la versión previa a la actualización.

Para restablecer a la versión anterior, realiza los siguientes pasos:

  1. Identifica la copia de seguridad previa a la actualización.

    Consulta Copias de seguridad automáticas de actualización.

  2. Crea una instancia de recuperación.

    Crea una nueva instancia de Cloud SQL con la versión principal que ejecutaba Cloud SQL cuando se hizo la copia de seguridad previa a la actualización. Establece las mismas marcas y la configuración de instancia que usa la instancia original.

  3. Restablece la copia de seguridad previa a la actualización.

    Restablece la copia de seguridad previa a la actualización en la instancia de recuperación. Esto puede tardar varios minutos en completarse.

  4. Agrega las réplicas de lectura.

    Si usabas réplicas de lectura, agrégalas de forma individual.

  5. Conecta tu aplicación.

    Después de recuperar el sistema de la base de datos, actualiza la aplicación con detalles sobre la instancia de recuperación y sus réplicas de lectura. Puedes reanudar la entrega de tráfico en la versión previa a la actualización de tu base de datos.

Limitaciones

En esta sección se enumeran las limitaciones para una actualización in situ de versión principal.

  • No puedes realizar una actualización local de versión principal en una réplica externa.

Preguntas frecuentes

Las siguientes preguntas pueden surgir cuando actualizas la versión principal de la base de datos.

¿Mi instancia no está disponible durante una actualización?
Sí. Tu instancia permanece no disponible durante un período mientras Cloud SQL realiza la actualización.
¿Cuánto demora una actualización?

La actualización de una sola instancia suele tomar menos de 10 minutos. Si la configuración de tu instancia usa una pequeña cantidad de CPU virtuales o memoria, es posible que la actualización tarde más tiempo.

Si tu instancia aloja demasiadas bases de datos o tablas, o tus bases de datos son muy grandes, es posible que la actualización tarde horas o incluso se agote el tiempo de espera porque el tiempo de actualización corresponde a la cantidad de objetos en tus bases de datos. Si tienes que actualizar múltiples instancias, el tiempo de actualización total aumenta de forma proporcional.

¿Puedo supervisar cada paso de mi proceso de actualización?
Si bien Cloud SQL te permite supervisar si una operación de actualización aún está en curso, no puedes realizar un seguimiento de los pasos individuales en cada actualización.
¿Puedo cancelar la actualización después de iniciarla?
No, no puedes cancelar una actualización una vez que se inicia. Si la actualización falla, Cloud SQL recupera de forma automática la instancia en la versión anterior.
¿Qué sucede con mi configuración durante una actualización?

Cuando realizas una actualización local de versión principal, Cloud SQL conserva la configuración de tu base de datos, incluidos el nombre de la instancia, la dirección IP, los valores de marca configurados de manera explícita y los datos del usuario. Sin embargo, el valor predeterminado de las variables de sistema puede cambiar.

Para obtener más información, consulta Configura marcas de base de datos. Si una marca o un valor de marca determinados ya no son compatibles con tu versión de destino, Cloud SQL quita automáticamente la marca durante la actualización.

¿Qué sigue?