Configura la recuperación de un momento determinado (PITR)

Cuando creas una instancia nueva en la Google Cloud consola, se habilitan automáticamente las copias de seguridad automáticas y la recuperación de un momento determinado (PITR). Puedes configurar la PITR para cualquier instancia existente de la siguiente manera:

Habilita la PITR

Cuando creas una instancia nueva en la consola de Google Cloud , las opciones Copias de seguridad automáticas y Habilitar la recuperación de un momento determinado se habilitan automáticamente.

Con el siguiente procedimiento, se habilita la PITR en una instancia principal existente.

Console

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

    Ir a Instancias de Cloud SQL

  2. Abre el menú de más acciones Ícono de más acciones. para la instancia en la que deseas habilitar PITR y haz clic en Editar.
  3. En Personaliza tu instancia, expande la sección Protección de datos.
  4. Selecciona la casilla de verificación Habilitar la recuperación de un momento determinado.
  5. En el campo Días de registros, ingresa la cantidad de días que se conservarán los registros, de 1 a 35 para la edición de Cloud SQL Enterprise Plus o de 1 a 7 para la edición de Cloud SQL Enterprise.
  6. Haz clic en Guardar.

gcloud

  1. Muestra la descripción general de la instancia:
    gcloud sql instances describe INSTANCE_NAME
  2. Si ves enabled: false en la sección backupConfiguration, habilita las copias de seguridad programadas:
    gcloud sql instances patch INSTANCE_NAME \
    --backup-start-time=HH:MM

    Debes especificar el parámetro backup-start-time mediante el formato de 24 horas en la zona horaria UTC±00.

  3. Habilita la PITR:
    gcloud sql instances patch INSTANCE_NAME \
    --enable-bin-log

    Si habilitas PITR en una instancia principal, también puedes configurar la cantidad de días para los que deseas conservar los registros de transacciones. Para ello, agrega el siguiente parámetro:

    --retained-transaction-log-days=RETAINED_TRANSACTION_LOG_DAYS
  4. Confirma los cambios:
    gcloud sql instances describe INSTANCE_NAME

    En la sección backupConfiguration, verás binaryLogEnabled: true si se realizó correctamente el cambio.

Terraform

Para habilitar la PITR, usa un recurso de Terraform.

resource "google_sql_database_instance" "default" {
  name             = "mysql-instance-pitr"
  region           = "asia-northeast1"
  database_version = "MYSQL_8_0"
  settings {
    tier = "db-f1-micro"
    backup_configuration {
      enabled                        = true
      binary_log_enabled             = true
      start_time                     = "20:55"
      transaction_log_retention_days = "3"
    }
  }
}

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 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 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 o el número del proyecto del proyecto Google Cloud que contiene la instancia
  • INSTANCE_NAME: el nombre de la instancia principal o de réplica de lectura que configuras para obtener alta disponibilidad
  • START_TIME: el tiempo (en horas y minutos)

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "settings":
  {
    "backupConfiguration":
    {
      "startTime": "START_TIME",
      "enabled": true,
      "binaryLogEnabled": true
    }
  }
}

Para enviar tu solicitud, expande una de estas opciones:

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

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 del proyecto Google Cloud que contiene la instancia
  • INSTANCE_NAME: el nombre de la instancia principal o de réplica de lectura que configuras para obtener alta disponibilidad
  • START_TIME: el tiempo (en horas y minutos)

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "settings":
  {
    "backupConfiguration":
    {
      "startTime": "START_TIME",
      "enabled": true,
      "binaryLogEnabled": true
    }
  }
}

Para enviar tu solicitud, expande una de estas opciones:

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

Inhabilita la PITR

Console

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

    Ir a Instancias de Cloud SQL

  2. Abre el menú de más acciones Ícono de más acciones. para la instancia que deseas inhabilitar y selecciona Editar.
  3. En Personaliza tu instancia, expande la sección Protección de datos.
  4. Desmarca la opción Habilitar la recuperación de un momento determinado.
  5. Haz clic en Guardar.

gcloud

  1. Desactiva la recuperación de un momento determinado:
    gcloud sql instances patch INSTANCE_NAME \
    --no-enable-bin-log
  2. Confirma los cambios:
    gcloud sql instances describe INSTANCE_NAME

    En la sección backupConfiguration, verás binaryLogEnabled: false si se realizó correctamente el cambio.

REST v1

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

  • project-id: el ID del proyecto
  • instance-id: Es el ID de la instancia.

Método HTTP y URL:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

Cuerpo JSON de la solicitud:

{
  "settings":
  {
    "backupConfiguration":
    {
      "enabled": false,
      "binaryLogEnabled": false
    }
  }
}

Para enviar tu solicitud, expande una de estas opciones:

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

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: Es el ID de la instancia.

Método HTTP y URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

Cuerpo JSON de la solicitud:

{
  "settings":
  {
    "backupConfiguration":
    {
      "enabled": false,
      "binaryLogEnabled": false
    }
  }
}

Para enviar tu solicitud, expande una de estas opciones:

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

Configura la retención del registro de transacciones

Para establecer la cantidad de días que se retendrán los registros de objetos binarios, haz lo siguiente:

Console

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

    Ir a Instancias de Cloud SQL

  2. Abre el menú de más acciones Ícono de más acciones para la instancia en la que deseas establecer el registro de transacciones y selecciona Editar.
  3. En Personaliza tu instancia, expande la sección Protección de datos.
  4. En la sección Habilitar la recuperación de un momento determinado, expande Opciones avanzadas.
  5. Ingresa la cantidad de días que se retendrán los registros, entre 1 y 35 para la edición Cloud SQL Enterprise Plus o 1-7 para la edición Cloud SQL Enterprise.
  6. Haz clic en Guardar.

gcloud

Edita la instancia para establecer la cantidad de días que se retendrán los registros binarios.

Reemplaza lo siguiente:

  • INSTANCE_NAME: Es el nombre de la instancia en la que deseas configurar el registro de transacciones.
  • DAYS_TO_RETAIN: Es la cantidad de días de registros de transacciones que se conservarán. Para la edición Enterprise Plus de Cloud SQL, el rango válido es de entre 1 y 35 días, con un valor predeterminado de 14 días. Para la edición Enterprise de Cloud SQL, el rango válido es de entre 1 y 7 días, con un valor predeterminado de 7 días.

    Si no especificas un valor, Cloud SQL usa el valor predeterminado. Esto solo es válido cuando se habilita PITR. Para conservar más días de registros de transacciones, se requiere un tamaño de almacenamiento mayor.

  gcloud sql instances patch INSTANCE_NAME 
--retained-transaction-log-days=DAYS_TO_RETAIN

REST v1

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.
  • DAYS_TO_RETAIN: Es la cantidad de días que se retendrán los registros de transacciones. Para la edición Enterprise Plus de Cloud SQL, el rango válido es de entre 1 y 35 días, con un valor predeterminado de 14 días. Para la edición Enterprise de Cloud SQL, el rango válido es de entre 1 y 7 días, con un valor predeterminado de 7 días.

    Si no se especifica ningún valor, se usa el valor predeterminado. Esto solo es válido cuando se habilita PITR. Para conservar más días de registros de transacciones, se requiere un tamaño de almacenamiento mayor.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "settings":
  {
    "backupConfiguration":
    {
      "transactionLogRetentionDays": "DAYS_TO_RETAIN"
    }
  }
}

Para enviar tu solicitud, expande una de estas opciones:

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

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.
  • DAYS_TO_RETAIN: Es la cantidad de días que se retendrán los registros de transacciones. Para la edición Enterprise Plus de Cloud SQL, el rango válido es de entre 1 y 35 días, con un valor predeterminado de 14 días. Para la edición Enterprise de Cloud SQL, el rango válido es de entre 1 y 7 días, con un valor predeterminado de 7 días.

    Si no se especifica ningún valor, se usa el valor predeterminado. Esto solo es válido cuando se habilita PITR. Para conservar más días de registros de transacciones, se requiere un tamaño de almacenamiento mayor.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "settings":
  {
    "backupConfiguration":
    {
      "transactionLogRetentionDays": "DAYS_TO_RETAIN"
    }
  }
}

Para enviar tu solicitud, expande una de estas opciones:

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

Verifica la ubicación de almacenamiento de los registros de transacciones que se usan para la PITR

Puedes verificar dónde tu instancia de Cloud SQL almacena los registros de transacciones que se usan para la PITR.

gcloud

Para determinar si tu instancia almacena registros para la PITR en el disco o en Cloud Storage, usa el siguiente comando:

   gcloud sql instances describe INSTANCE_NAME
   

Reemplaza INSTANCE_NAME por el nombre de la instancia.

En el caso de varias instancias en el mismo proyecto, también puedes verificar la ubicación de almacenamiento de los registros de transacciones. Para determinar la ubicación de varias instancias, usa el siguiente comando:

   gcloud sql instances list --show-transactional-log-storage-state
   

Respuesta de ejemplo:

NAME  DATABASE_VERSION LOCATION       TRANSACTIONAL_LOG_STORAGE_STATE
my_01 MYSQL_8_0        us-central-1     DISK
my_02 MYSQL_8_0        us-central-1     CLOUD_STORAGE
...
   

En el resultado del comando, el campo transactionalLogStorageState o la columna TRANSACTIONAL_LOG_STORAGE_STATE proporcionan información sobre dónde se almacenan los registros de transacciones de PITR para la instancia. Los posibles estados de almacenamiento de registros de transacciones son los siguientes:

  • DISK: la instancia almacena los registros de transacciones que se usan para la PITR en el disco. Si actualizas una instancia de Cloud SQL Enterprise a la edición Cloud SQL Enterprise Plus, el proceso de actualización también cambia la ubicación de almacenamiento de registros a Cloud Storage automáticamente. Para obtener más información, consulta Actualiza una instancia a la edición Cloud SQL Enterprise Plus mediante la actualización in situ. También puedes cambiar la ubicación de almacenamiento con gcloud CLI o la API de Cloud SQL Admin sin actualizar la edición de tu instancia y sin incurrir en ningún tiempo de inactividad. Para obtener más información, consulta Cómo cambiar el almacenamiento de registros de transacciones a Cloud Storage.
  • SWITCHING_TO_CLOUD_STORAGE: la instancia cambia la ubicación de almacenamiento de los registros de transacciones de la PITR a Cloud Storage.
  • SWITCHED_TO_CLOUD_STORAGE: La instancia completó el cambio de la ubicación de almacenamiento de los registros de transacciones de la PITR del disco a Cloud Storage.
  • CLOUD_STORAGE: la instancia almacena los registros de transacciones que se usan para la PITR en Cloud Storage.

Cambia el almacenamiento de registros de transacciones a Cloud Storage

Si tu instancia almacena sus registros de transacciones usados para la PITR en el disco, puedes cambiar la ubicación de almacenamiento a Cloud Storage sin tiempo de inactividad. El proceso general de cambiar la ubicación de almacenamiento tarda aproximadamente la duración del período de retención de registros de transacciones (días) en completarse. En cuanto comiences el cambio, los registros de transacciones comenzarán a acumularse en Cloud Storage. Durante la operación, puedes verificar el estado del proceso general con el comando que se indica en Verifica la ubicación de almacenamiento de los registros de transacciones que se usan para la PITR.

Una vez que se completa el proceso general de cambio a Cloud Storage, Cloud SQL usa los registros de transacciones de Cloud Storage para la PITR.

gcloud

Para cambiar la ubicación de almacenamiento a Cloud Storage, usa el siguiente comando:

   gcloud sql instances patch INSTANCE_NAME \
      --switch-transaction-logs-to-cloud-storage
   

Reemplaza INSTANCE_NAME por el nombre de la instancia. La instancia debe ser una principal y no una de réplica. La respuesta es similar al ejemplo a continuación:

The following message is used for the patch API method.
{"name": "INSTANCE_NAME", "project": "PROJECT_NAME", "switchTransactionalLogsToCloudStorageEnabled": "true"}

Patching Cloud SQL instance...done.
Updated
[https://sqladmin.prod.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME].
   

Si el comando muestra un error, consulta Cómo solucionar problemas relacionados con el cambio a Cloud Storage para conocer los posibles pasos a seguir.

REST v1

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. La instancia debe ser una principal y no una de réplica.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
   "switchTransactionLogsToCloudStorageEnabled": true
}

Para enviar tu solicitud, expande una de estas opciones:

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

Si la solicitud muestra un error, consulta Cómo solucionar problemas relacionados con el cambio a Cloud Storage para conocer los posibles pasos a seguir.

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. La instancia debe ser una principal y no una de réplica.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
   "switchTransactionLogsToCloudStorageEnabled": true
}

Para enviar tu solicitud, expande una de estas opciones:

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

Si la solicitud muestra un error, consulta Cómo solucionar problemas relacionados con el cambio a Cloud Storage para conocer los posibles pasos a seguir.

Almacenamiento y configuración del registro de transacciones después del cambio

Para fines de replicación, Cloud SQL aún retiene copias de los registros binarios en el disco.

Si deseas explorar los registros binarios con la utilidad mysqlbinlog, es útil almacenarlos en el disco.

Si configuraste las marcas expire_logs_days o binlog_expire_logs_seconds en tu instancia antes del cambio, los valores configurados permanecerán intactos.

Después del cambio, ya que los registros binarios que se usan para realizar la PITR ahora se almacenan en Cloud Storage, asegúrate de que los valores de las marcas reflejen la retención de los registros de transacciones en el disco que esperas. Cloud SQL solo retiene registros en el disco para el valor mínimo de uno de los siguientes:

  • el parámetro de configuración de la PITR transactionLogRetentionDays antes del cambio El valor predeterminado para este parámetro de configuración es de 7 días.
  • las marcas expire_logs_days o binlog_expire_logs_seconds que estableciste en tu instancia de forma manual.

Si deseas ahorrar espacio en el disco, después de que se complete el proceso de cambio, configura el valor de las marcas expire_logs_days o binlog_expire_logs_seconds en 1 día para reducir el tamaño de disco asignado y los costos de almacenamiento en disco. Para obtener más información sobre el almacenamiento de registros de transacciones y la PITR, consulta Almacenamiento de registros para la PITR.

Para obtener más información sobre cómo verificar el uso del disco, consulta Registros y uso del disco.

Soluciona problemas relacionados con el cambio a Cloud Storage

En la siguiente tabla, se enumeran los posibles errores que pueden mostrarse con el código INVALID REQUEST cuando cambias la ubicación de almacenamiento de los registros de transacciones del disco a Cloud Storage.

Problema Soluciona problemas
Switching the storage location of the transaction logs used for PITR is not supported for instances with database type %s. Asegúrate de ejecutar el comando gcloud CLI o de realizar la solicitud a la API en una instancia de Cloud SQL para MySQL o Cloud SQL para PostgreSQL. No se admite cambiar la ubicación de almacenamiento de los registros de transacciones con gcloud CLI o la API de Cloud SQL Admin para Cloud SQL para SQL Server.
MySQL transactional logging is not enabled on this instance. MySQL usa el registro binario como los registros de transacciones para la recuperación de un momento determinado (PITR). Para admitir PITR, MySQL requiere que habilites el registro binario en la instancia. Para obtener más información sobre cómo habilitar el registro binario, consulta Habilita la PITR.
This command is not supported on replica instances. Run the command on the primary instance instead. Asegúrate de especificar una instancia principal cuando ejecutes el comando o realices la solicitud a la API.
This instance is already storing transaction logs used for PITR in Cloud Storage Para verificar la ubicación de almacenamiento de los registros de transacciones, ejecuta el comando que se indica en Verifica la ubicación de almacenamiento de los registros de transacciones que se usan para la PITR.
The instance is already switching transaction logs used for PITR from disk to Cloud Storage.

Espera a que se complete la operación de cambio.

Para verificar el estado de la operación y la ubicación de almacenamiento de los registros de transacciones, ejecuta el comando en Verifica la ubicación de almacenamiento de los registros de transacciones que se usan para la PITR.

¿Qué sigue?