Realizar el mantenimiento de autoservicio

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

Información general

Cloud SQL lanza periódicamente mejoras de software, como parches para vulnerabilidades conocidas, a través de nuevas versiones de mantenimiento. Aunque Cloud SQL programa actualizaciones de mantenimiento cada pocos meses para asegurarse de que tienes la última versión de mantenimiento, puede que quieras usar el mantenimiento de autoservicio si:

  • Necesitas una actualización antes de la próxima actualización de mantenimiento programada.
  • Quieres ponerte al día con la versión de mantenimiento más reciente después de saltarte el evento de mantenimiento programado más reciente.

No es necesario que actualices manualmente a la versión más reciente. Puedes dejar que Cloud SQL actualice automáticamente tu versión de mantenimiento durante el próximo evento de mantenimiento programado.

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

Cuando realizas un mantenimiento de autoservicio en una instancia principal que tiene réplicas de lectura, Cloud SQL aplica automáticamente 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, puedes seguir realizando el mantenimiento de autoservicio en una sola réplica de lectura. Sin embargo, para asegurarte de que todas las instancias de réplica de lectura y la instancia principal funcionen con 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 al mismo tiempo.

Para actualizar una sola instancia de réplica de lectura, especifícala cuando realices el mantenimiento de autoservicio.

Antes de empezar

Antes de realizar el mantenimiento de autoservicio, comprueba la versión de mantenimiento actual. A continuación, puedes determinar la versión de mantenimiento de destino a la que quieres 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, sigue este procedimiento:

gcloud

Antes de ejecutar el siguiente comando gcloud, haz la siguiente sustitución:

  • INSTANCE_ID: la instancia que se va a consultar.
gcloud sql instances describe INSTANCE_ID
  

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

REST v1

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la instancia
  • INSTANCE_NAME: el nombre de la instancia que estás configurando para la alta disponibilidad

Método HTTP y URL:

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

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

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

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

REST v1beta4

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la instancia
  • INSTANCE_NAME: el nombre de la instancia que estás configurando para la alta disponibilidad

Método HTTP y URL:

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

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

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

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

Determinar la versión de mantenimiento de destino

Sigue este método para ver las versiones de mantenimiento que puedes seleccionar como objetivo. No puedes actualizar a una versión anterior a la versión de mantenimiento actual.

gcloud

Antes de ejecutar el siguiente comando gcloud, haz la siguiente sustitución:

  • INSTANCE_ID: la instancia que se va a consultar.
gcloud sql instances describe INSTANCE_ID
  

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

REST v1

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la instancia
  • INSTANCE_NAME: el nombre de la instancia que estás configurando para la alta disponibilidad

Método HTTP y URL:

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

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

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

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

REST v1beta4

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la instancia
  • INSTANCE_NAME: el nombre de la instancia que estás configurando para la alta disponibilidad

Método HTTP y URL:

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

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

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

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

Actualizar 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, sigue este procedimiento.

gcloud

Antes de usar el siguiente comando gcloud, haz la siguiente sustitución:

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

Cuando se te pida que confirmes la acción, escribe Y para continuar o N para cancelar.

Si seleccionas Y, el proceso de actualización aplicará la versión de mantenimiento especificada a todas las réplicas de lectura primero y, después, actualizará la instancia principal. Se omitirán las instancias de réplica de lectura que ya se hayan actualizado a la versión de mantenimiento de destino.

Si seleccionas N, no se actualizará ninguna instancia.

Una vez que se hayan actualizado 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" "mysql_ssm_instance_name" {
  name                = "mysql-ssm-instance-name"
  region              = "asia-northeast1"
  database_version    = "MYSQL_5_7"
  maintenance_version = "MYSQL_5_7_38.R20220809.02_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 la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud

Preparar Cloud Shell

  1. Abre Cloud Shell.
  2. Define el Google Cloud proyecto Google Cloud predeterminado en el que quieras aplicar tus configuraciones de Terraform.

    Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

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

Preparar 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 en ese directorio. El nombre del archivo debe tener la extensión .tf. Por ejemplo, main.tf. En este tutorial, nos referiremos al archivo como main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.

    Copia el código de ejemplo en el archivo main.tf que acabas de crear.

    También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
  4. Guarda los cambios.
  5. Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
    terraform init

    Si quieres usar la versión más reciente del proveedor de Google, incluye la opción -upgrade:

    terraform init -upgrade

Aplica los cambios

  1. Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
    terraform plan

    Haga las correcciones necesarias en la configuración.

  2. Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo yes en la petición:
    terraform apply

    Espera hasta que Terraform muestre el mensaje "Apply complete!".

  3. Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.

Eliminar los cambios

Para eliminar los cambios, sigue estos pasos:

  1. Para inhabilitar la protección contra la eliminación, en el archivo de configuración de Terraform, asigna el valor false al argumento deletion_protection.
    deletion_protection =  "false"
  2. Aplica la configuración de Terraform actualizada ejecutando el siguiente comando e introduciendo yes en la petición:
    terraform apply
  1. Para quitar los recursos que se hayan aplicado anteriormente con tu configuración de Terraform, ejecuta el siguiente comando e introduce yes en la petición:

    terraform destroy

REST v1

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

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

Método HTTP y 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, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "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 los datos de la solicitud, haz las siguientes sustituciones:

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

Método HTTP y 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, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "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"
}

Actualizar una sola instancia a la versión de mantenimiento de destino

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

gcloud

Antes de usar el siguiente comando gcloud, haz los siguientes cambios:

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

Si especificas una réplica de lectura, aparecerá una solicitud 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á ninguna instancia.

Cuando 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" "mysql_ssm_instance_name" {
  name                = "mysql-ssm-instance-name"
  region              = "asia-northeast1"
  database_version    = "MYSQL_5_7"
  maintenance_version = "MYSQL_5_7_38.R20220809.02_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 la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud

Preparar Cloud Shell

  1. Abre Cloud Shell.
  2. Define el Google Cloud proyecto Google Cloud predeterminado en el que quieras aplicar tus configuraciones de Terraform.

    Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

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

Preparar 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 en ese directorio. El nombre del archivo debe tener la extensión .tf. Por ejemplo, main.tf. En este tutorial, nos referiremos al archivo como main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.

    Copia el código de ejemplo en el archivo main.tf que acabas de crear.

    También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
  4. Guarda los cambios.
  5. Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
    terraform init

    Si quieres usar la versión más reciente del proveedor de Google, incluye la opción -upgrade:

    terraform init -upgrade

Aplica los cambios

  1. Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
    terraform plan

    Haga las correcciones necesarias en la configuración.

  2. Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo yes en la petición:
    terraform apply

    Espera hasta que Terraform muestre el mensaje "Apply complete!".

  3. Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.

Eliminar los cambios

Para eliminar los cambios, sigue estos pasos:

  1. Para inhabilitar la protección contra la eliminación, en el archivo de configuración de Terraform, asigna el valor false al argumento deletion_protection.
    deletion_protection =  "false"
  2. Aplica la configuración de Terraform actualizada ejecutando el siguiente comando e introduciendo yes en la petición:
    terraform apply
  1. Para quitar los recursos que se hayan aplicado anteriormente con tu configuración de Terraform, ejecuta el siguiente comando e introduce yes en la petición:

    terraform destroy

REST v1

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

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

Método HTTP y 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, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "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 los datos de la solicitud, haz las siguientes sustituciones:

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

Método HTTP y 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, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "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"
}

Solucionar problemas

Problema Solución de problemas
No se puede aplicar una actualización de mantenimiento a una instancia detenida. Para solucionar 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, no se ha podido realizar la actualización de mantenimiento.

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, siga uno de los procedimientos que se indican a continuación:

No se ha podido realizar la actualización de mantenimiento debido a una diferencia en la versión secundaria de la base de datos.

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

Para actualizar la versión secundaria de una instancia, sigue los pasos que se indican en Actualizar la versión secundaria de la base de datos.

Siguientes pasos