Mantenimiento de autoservicio

En esta página, se describe el mantenimiento de autoservicio, que te permite aceptar una actualización de mantenimiento en la instancia fuera del flujo normal de mantenimiento programado.

Descripción general

Cloud SQL lanza con regularidad mejoras de software, como parches para vulnerabilidades conocidas, a través de versiones de mantenimiento nuevas. Si bien Cloud SQL programa actualizaciones de mantenimiento una vez cada varios meses para garantizar que tengas la versión de mantenimiento más reciente, puedes usar el mantenimiento de autoservicio si se cumplen las siguientes condiciones:

  • Necesitas actualizar antes del próximo evento de mantenimiento programado.
  • Quieres mantenerte al día con la última versión de mantenimiento después de omitir el evento de mantenimiento programado más reciente.

No es necesario que actualices de forma manual a la versión más reciente. Puedes permitir que Cloud SQL actualice de forma automática la versión de mantenimiento durante el siguiente evento de mantenimiento programado.

Administra el mantenimiento en todas las réplicas de lectura de una instancia principal

Cuando realizas el mantenimiento de autoservicio en una instancia principal que tiene réplicas de lectura, Cloud SQL aplica de forma automática la actualización de mantenimiento a todas sus réplicas de lectura. Si tienes más de tres instancias de réplica de lectura, las instancias se dividen en grupos y se actualizan en paralelo. Como paso final, la actualización de mantenimiento se aplica a la instancia principal.

Si es necesario, aún puedes realizar mantenimiento de autoservicio en una sola réplica de lectura. Sin embargo, para garantizar que todas las instancias de réplica de lectura y la instancia principal operen en la misma versión de mantenimiento, te recomendamos que realices el mantenimiento de autoservicio en todas las réplicas de lectura de una instancia principal a la misma versión tiempo.

Para actualizar una sola instancia de réplica de lectura, especifica esa instancia de réplica de lectura cuando realices el mantenimiento de autoservicio.

Antes de comenzar

Antes de realizar el mantenimiento de autoservicio, primero verifica tu versión de mantenimiento actual. Luego, puedes determinar la versión de mantenimiento objetivo a la que deseas actualizar y actualizar la instancia a esa versión. Si usas réplicas de lectura, actualiza todas las réplicas de lectura de la instancia principal a esa versión.

Para ver la versión de mantenimiento actual de una instancia, usa el siguiente procedimiento:

gcloud

Antes de ejecutar el siguiente comando de gcloud, realiza el siguiente reemplazo:

  • INSTANCE_ID: la instancia que se consulta
gcloud sql instances describe INSTANCE_ID
  

La versión de mantenimiento que está instalada en la instancia se indica junto al atributo maintenanceVersion.

REST v1

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

  • PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia
  • INSTANCE_NAME: el nombre de la instancia que configuras para obtener alta disponibilidad

HTTP method and 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:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "SQLSERVER_2019_STANDARD"
}

Busca el elemento maintenanceVersion en la sección DatabaseInstance de la respuesta.

REST v1beta4

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

  • PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia
  • INSTANCE_NAME: el nombre de la instancia que configuras para obtener alta disponibilidad

HTTP method and 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:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "SQLSERVER_2019_STANDARD"
}

Busca el elemento maintenanceVersion en la sección DatabaseInstance de la respuesta.

Determina la versión de mantenimiento objetivo

Usa el siguiente método para ver las versiones de mantenimiento que puedes seleccionar como destino. No puedes actualizar a una versión anterior a la versión de mantenimiento actual.

gcloud

Antes de ejecutar el siguiente comando de gcloud, realiza el siguiente reemplazo:

  • INSTANCE_ID: la instancia que se consulta
gcloud sql instances describe INSTANCE_ID
  

La versión de mantenimiento disponible se indica junto al atributo availableMaintenanceVersions.

REST v1

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

  • PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia
  • INSTANCE_NAME: el nombre de la instancia que configuras para obtener alta disponibilidad

HTTP method and 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:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "SQLSERVER_2019_STANDARD"
}

Busca el elemento availableMaintenanceVersions en la sección DatabaseInstance de la respuesta.

REST v1beta4

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

  • PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia
  • INSTANCE_NAME: el nombre de la instancia que configuras para obtener alta disponibilidad

HTTP method and 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:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "SQLSERVER_2019_STANDARD"
}

Busca el elemento availableMaintenanceVersions en la sección DatabaseInstance de la respuesta.

Actualiza todas las réplicas de lectura de una instancia principal a la versión de mantenimiento de destino

Para realizar una actualización de mantenimiento en todas las instancias de réplica de lectura de una instancia principal, usa el siguiente procedimiento.

gcloud

Antes de usar el siguiente comando de gcloud, reemplaza lo siguiente:

  • PRIMARY_INSTANCE_ID: Es el ID de la instancia principal.
  • MAINTENANCE_VERSION: Es la versión del mantenimiento de Cloud SQL que se aplicará.
gcloud sql instances patch PRIMARY_INSTANCE_ID \
   --maintenance-version=MAINTENANCE_VERSION
  

Cuando se te solicite confirmación, escribe Y para continuar o N para cancelar.

Si seleccionas Y, el proceso de actualización aplica la versión de mantenimiento especificada a todas las réplicas de lectura antes de actualizar la instancia principal. Se omiten todas las instancias de réplica de lectura que ya se hayan actualizado a la versión de mantenimiento objetivo.

Si seleccionas N, no se actualizarán las instancias.

Después de que se complete la actualización de las réplicas de lectura y la instancia principal, aparecerá un mensaje similar al siguiente:

  Patching Cloud SQL instance....done.
  Patching Cloud SQL instance....done.
  Patching Cloud SQL instance....done.
  Updated [https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/PRIMARY_INSTANCE_ID]
  

Terraform

Para crear una instancia, usa un recurso de Terraform.

resource "google_sql_database_instance" "sqlserver_ssm_instance_name" {
  name                = "sqlserver-ssm-instance-name"
  region              = "asia-northeast1"
  database_version    = "SQLSERVER_2019_STANDARD"
  maintenance_version = "SQLSERVER_2019_STANDARD_CU16_GDR.R20220821.00_00"
  settings {
    tier = "db-f1-micro"
  }
  # 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
}

Aplica 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. Inicialice 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 a través de la ejecución del siguiente comando y, luego, ingresa yes cuando se te solicite:

    terraform destroy

REST v1

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

  • PROJECT_ID: el ID del proyecto
  • PROJECT_ID: El ID de la instancia principal.
  • MAINTENANCE_VERSION: La versión del mantenimiento del software de Cloud SQL que se aplicará

HTTP method and URL:

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

Cuerpo JSON de la solicitud:

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

Para enviar tu solicitud, expande una de estas opciones:

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "PRIMARY_INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

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

  • PROJECT_ID: el ID del proyecto
  • INSTANCE_ID: El ID de la instancia principal.
  • MAINTENANCE_VERSION: La versión del mantenimiento del software de Cloud SQL que se aplicará

HTTP method and URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

Cuerpo JSON de la solicitud:

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

Para enviar tu solicitud, expande una de estas opciones:

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Actualiza una sola instancia a la versión de mantenimiento objetivo

Para realizar una actualización de mantenimiento en una sola instancia, usa el siguiente procedimiento. Si es necesario, puedes usar este procedimiento para actualizar una sola instancia de réplica de lectura.

gcloud

Antes de ejecutar el siguiente comando gcloud, realiza los siguientes reemplazos:

  • INSTANCE_ID: El ID de la instancia. Esta instancia puede ser una instancia de réplica de lectura.
  • MAINTENANCE_VERSION: Es la versión del mantenimiento de Cloud SQL que se aplicará.
  gcloud sql instances patch INSTANCE_ID \
     --maintenance-version=MAINTENANCE_VERSION
  

Si especificas una réplica de lectura, aparecerá un mensaje de confirmación. Escribe Y para continuar o N para cancelar.

  • Si seleccionas Y, el proceso de actualización aplica la versión de mantenimiento especificada solo a la réplica de lectura especificada.
  • Si seleccionas N, no se actualizarán las instancias.

Una vez que se complete la actualización de la instancia, aparecerá un mensaje similar al siguiente:

  Patching Cloud SQL instance....done.
  Updated [https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID]
  

Terraform

Para crear una instancia, usa un recurso de Terraform.

resource "google_sql_database_instance" "sqlserver_ssm_instance_name" {
  name                = "sqlserver-ssm-instance-name"
  region              = "asia-northeast1"
  database_version    = "SQLSERVER_2019_STANDARD"
  maintenance_version = "SQLSERVER_2019_STANDARD_CU16_GDR.R20220821.00_00"
  settings {
    tier = "db-f1-micro"
  }
  # 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
}

Aplica 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. Inicialice 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 a través de la ejecución del siguiente comando y, luego, ingresa yes cuando se te solicite:

    terraform destroy

REST v1

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

  • PROJECT_ID: el ID del proyecto
  • PROJECT_ID: El ID de la instancia, que puede ser una instancia de réplica de lectura
  • MAINTENANCE_VERSION: La versión del mantenimiento del software de Cloud SQL que se aplicará

HTTP method and URL:

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

Cuerpo JSON de la solicitud:

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

Para enviar tu solicitud, expande una de estas opciones:

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "PRIMARY_INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

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

  • PROJECT_ID: el ID del proyecto
  • INSTANCE_ID: El ID de la instancia, que puede ser una instancia de réplica de lectura
  • MAINTENANCE_VERSION: La versión del mantenimiento del software de Cloud SQL que se aplicará

HTTP method and URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

Cuerpo JSON de la solicitud:

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

Para enviar tu solicitud, expande una de estas opciones:

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Solución de problemas

Problema Soluciona problemas
No se puede aplicar la actualización de mantenimiento a una instancia detenida. Para resolver este problema, inicia la instancia antes de realizar la actualización de mantenimiento de autoservicio.
Debido a una diferencia en la versión principal de la base de datos, la actualización de mantenimiento falló.

No puedes usar el mantenimiento de autoservicio para actualizar la versión principal de la base de datos de una instancia.

Para actualizar la versión principal de una instancia, usa uno de los siguientes procedimientos:

¿Qué sigue?