Recuperación de un momento determinado

En esta página, se describe cómo usar la recuperación de un momento determinado para restablecer el trabajo de la instancia de Cloud SQL.

Para obtener más información sobre la recuperación de un momento determinado, consulta esta página.

Antes de comenzar

Para llevar a cabo esta tarea, debes contar con lo siguiente:

  • Registro binario y copias de seguridad habilitados para la instancia, con registros binarios continuos desde la última copia de seguridad antes del evento del que deseas recuperarte. Para obtener más información, consulta Habilita el registro binario.

  • Un nombre de archivo de un registro binario y la posición del evento del que deseas recuperarte (ese evento y todos los posteriores no se reflejarán en la nueva instancia). Para obtener más información, consulta Identifica la posición del registro binario.

    Después de identificar el archivo de registro binario y la posición, puedes realizar la recuperación de un momento determinado.

La recuperación de un momento determinado está habilitada de forma predeterminada cuando creas una instancia de Cloud SQL nueva.

Habilita la recuperación de un momento determinado

Console

  1. Ve a la página Instancias de Cloud SQL en Google Cloud Console.

    Ir a la página Instancias de Cloud SQL

  2. Selecciona la instancia para la que deseas habilitar la recuperación de un momento determinado.
  3. Haz clic en Editar.
  4. En la sección Copias de seguridad, recuperación y alta disponibilidad, selecciona Automatizar copias de seguridad y Habilitar la recuperación de un momento determinado.
  5. Haz clic en Guardar.
  6. En la página Detalles de la instancia, binaryLogEnabled se muestra como verdadero.

gcloud

  1. Muestra los detalles de la instancia:
    gcloud sql instances describe [INSTANCE_NAME]
    
  2. Si ves enabled: false en 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 recuperación de un momento determinado:
    
    gcloud sql instances patch [INSTANCE_NAME] --enable-bin-log
    
    
  4. Confirma los cambios:
    gcloud sql instances describe [INSTANCE_NAME]
    

    En backupConfiguration, busca binaryLogEnabled: true.

API de 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 o de réplica)
  • start-time: La hora en el formato “HH:MM”
  • enabled: Se establece como verdadero para una instancia principal y como falso para una instancia 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:

{
  "settings":
  {
    "backupConfiguration":
    {
      "startTime": "start-time",
      "enabled": enabled,
      "binaryLogEnabled": true
    }
  }
}

Para enviar tu solicitud, expande una de estas opciones:

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

Identifica la posición de recuperación

Antes de poder realizar una recuperación de un momento determinado, debes identificar un nombre de archivo de registro binario y una posición que correspondan al momento al que deseas recuperar la instancia.

Debes usar el cliente MySQL para realizar esta tarea.

  1. Usa el cliente MySQL a fin de conectarte a la instancia que deseas restablecer.

    Para hacerlo, usa Cloud Shell o la máquina cliente local. Para obtener más información, consulta [Opciones de conexión para aplicaciones externas][connection-options].

  2. Muestra los archivos de registro binarios para la instancia:

    SHOW BINARY LOGS;
    
  3. Muestra los primeros 100 eventos en el archivo de registro más reciente:

    SHOW BINLOG EVENTS IN '<BINARY_LOG_FILE>' LIMIT 100;
    

    Puedes ajustar la cantidad de filas que se muestran, pero no muestres todos los eventos en el archivo hasta que sepas cuál es el tamaño del archivo. Mostrar una gran cantidad de eventos puede afectar el rendimiento del sistema.

  4. Si el evento que buscas no aparece, usa la última posición que se muestra como punto de partida para buscar el siguiente conjunto de eventos:

    SHOW BINLOG EVENTS IN '<BINARY_LOG_FILE>' FROM <POSITION> LIMIT 100;
    
  5. Cuando encuentres el evento que marca el momento al que deseas restablecer la instancia, registra la posición que quieres restablecer (se muestra como Pos) y el nombre del archivo de registro.

    El nombre del archivo de registro y la posición son los valores que debes usar para la recuperación de un momento determinado.

A continuación, se muestra un ejemplo del resultado del comando SHOW BINLOG EVENTS:

+------------------+-----+-------------+-----------+-------------+-----------------------------------------------------+
| Log_name         | Pos | Event_type  | Server_id | End_log_pos | Info                                                |
+------------------+-----+-------------+-----------+-------------+-----------------------------------------------------+
| mysql-bin.000011 |   4 | Format_desc |  88955285 |         120 | Server ver: 5.6.30-log, Binlog ver: 4               |
| mysql-bin.000011 | 120 | Query       |  88955285 |         211 | create database db1                                 |
| mysql-bin.000011 | 211 | Query       |  88955285 |         310 | use `db1`; CREATE TABLE t (c CHAR(20))              |
| mysql-bin.000011 | 310 | Query       |  88955285 |         381 | BEGIN                                               |
| mysql-bin.000011 | 381 | Table_map   |  88955285 |         426 | table_id: 18 (db1.t)                                |
| mysql-bin.000011 | 310 | Query       |  88955285 |         381 | BEGIN                                               |

| mysql-bin.000011 | 426 | Write_rows  |  88955285 |         464 | table_id: 18 flags: STMT_END_F                      |
| mysql-bin.000011 | 464 | Xid         |  88955285 |         495 | COMMIT /* xid=56 */                                 |
| mysql-bin.000011 | 495 | Query       |  88955285 |         566 | BEGIN                                               |
| mysql-bin.000011 | 566 | Table_map   |  88955285 |         611 | table_id: 18 (db1.t)                                |
| mysql-bin.000011 | 611 | Write_rows  |  88955285 |         649 | table_id: 18 flags: STMT_END_F                      |
| mysql-bin.000011 | 649 | Xid         |  88955285 |         680 | COMMIT /* xid=57 */                                 |
| mysql-bin.000011 | 680 | Query       |  88955285 |         751 | BEGIN                                               |
| mysql-bin.000011 | 751 | Table_map   |  88955285 |         796 | table_id: 18 (db1.t)                                |
| mysql-bin.000011 | 796 | Write_rows  |  88955285 |         834 | table_id: 18 flags: STMT_END_F                      |
| mysql-bin.000011 | 834 | Xid         |  88955285 |         865 | COMMIT /* xid=58 */                                 |
| mysql-bin.000011 | 865 | Query       |  88955285 |         977 | use `db1`; DROP TABLE `t` /* generated by server */ |
+------------------+-----+-------------+-----------+-------------+-----------------------------------------------------+
16 rows in set (0.04 sec)

Para restablecer hasta la declaración DROP TABLE, en negrita, debes usar “865” en “mysql-bin.000011” como posición de recuperación. La declaración DROP TABLE y todas las operaciones posteriores no se reflejarán en la nueva instancia.

Realiza la recuperación de un momento determinado

Console

  1. Ve a la página Instancias de Cloud SQL en Google Cloud Console.

    Ir a la página Instancias de Cloud SQL

  2. Abre el menú de más acciones Ícono de más acciones para la instancia que deseas recuperar y haz clic en CLONAR.
  3. En la ventana Crear una clonación, actualiza el nombre de la instancia nueva, si es necesario.
  4. Selecciona Clone from earlier time.
  5. En Nombre del archivo de registro binario, ingresa el nombre del registro binario que identificaste antes.
  6. Ingresa la posición del evento en Posición de recuperación.
  7. Haz clic en Crear clon.

gcloud

  1. Crea la instancia nueva con el nombre del archivo de registro binario y la posición de recuperación que identificaste:
    gcloud sql instances clone [SOURCE_INSTANCE_NAME] [NEW_INSTANCE_NAME] \
           --bin-log-file-name=[BINLOG_FILE_NAME] --bin-log-position=[POSITION]
    

    Por ejemplo, un comando clone puede ser similar al siguiente:

    gcloud sql instances clone instance1 instance1-clone \
           --bin-log-file-name=mysql-bin.0000031 --bin-log-position=107
    
  2. Usa el ID de operación que muestra el comando clone para verificar el estado de la operación de restablecimiento.
    gcloud sql operations describe [OPERATION_ID]
    Cuando la operación está en curso, se muestra el estado RUNNING. Cuando se completa la operación, se muestra el estado DONE.

Para obtener más información sobre la recuperación de un momento determinado, consulta la referencia de MySQL, Recuperación de un momento determinado mediante el registro binario.

API de REST v1beta4

Crea la instancia nueva con el nombre del archivo de registro binario y la posición de recuperación que identificaste:

Antes de usar cualquiera de los siguientes datos de solicitud, realiza estos reemplazos:

  • project-id: El ID del proyecto
  • target-instance-id: El ID de la instancia de destino
  • source-instance-id: El ID de la instancia de origen
  • binary-log-file-name: El nombre del archivo de registro binario
  • binary-log-position: La posición dentro del archivo de registro binario

Método HTTP y URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone

Cuerpo JSON de la solicitud:

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "binLogCoordinates":
    {
      "kind": "sql#binLogCoordinates",
      "binLogFileName": "binary-log-file-name",
      "binLogPosition": "binary-log-position"
    }
  }
}

Para enviar tu solicitud, expande una de estas opciones:

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

Inhabilita registros binarios

Console

  1. Ve a la página Instancias de Cloud SQL en Google Cloud Console.

    Ir a la página Instancias de Cloud SQL

  2. Selecciona la instancia para la que deseas inhabilitar la recuperación de un momento determinado.
  3. Haz clic en Editar.
  4. En la sección Copias de seguridad, recuperación y alta disponibilidad, anula la selección de Habilitar la recuperación de un momento determinado.
  5. Haz clic en Guardar.
  6. En la página Detalles de la instancia, el objeto binaryLogEnabled se muestra como falso.

gcloud

  1. Inhabilita 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 backupConfiguration, busca binaryLogEnabled: false.

API de 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

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 siguiente:

Uso del disco y recuperación de un momento determinado

La recuperación de un momento determinado (PITR) usa registros binarios. Estos registros se actualizan de forma periódica y usan espacio de almacenamiento. Los registros binarios y la copia automática de seguridad que se asocia a ellos se borran de manera automática. Por lo general, esto ocurre luego de 7 días.

Si el tamaño de los registros binarios genera un problema en la instancia, haz lo siguiente:

  • Puedes aumentar el tamaño de almacenamiento de la instancia, pero el aumento del tamaño de tu registro binario con respecto al uso del disco puede ser temporal.

  • Te recomendamos que habilites el aumento automático de almacenamiento para evitar problemas inesperados.

  • Para borrar los registros y recuperar el almacenamiento, puedes inhabilitar la recuperación de un momento determinado. Sin embargo, ten en cuenta que disminuir el almacenamiento en uso no reduce el tamaño del almacenamiento aprovisionado para la instancia.

  • Los registros se borran definitivamente una vez al día, no de forma continua. Configurar la retención de registros en dos días implica que se retengan al menos dos días de registros y, como máximo, tres días de registros. Recomendamos configurar la cantidad de copias de seguridad en un día más que los días de retención de registros para garantizar un mínimo de días específicos de retención.

Configura la retención del registro de transacciones

Para configurar la cantidad de días que se retendrán los registros binarios (de uno a siete):

Console

  1. Ve a la página Instancias de Cloud SQL en Google Cloud Console.

    Ir a la página Instancias de Cloud SQL

  2. Haz clic en la instancia para abrir la página Descripción general.
  3. Selecciona la pestaña Copias de seguridad.
  4. Haz clic en Editar la configuración.
  5. Expande Opciones avanzadas en Habilitar recuperación de un momento determinado.
  6. Ingresa los Días de registros para almacenar a la vez.
  7. Haz clic en Guardar.

gcloud

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

gcloud sql instances patch instance-name --retained-transaction-log-days days-to-retain
    

Cantidad de días de registros de transacciones que se deben conservar. El rango válido es entre 1 y 7. Si no se especifica, el valor predeterminado es 7. Solo es válido cuando la recuperación de un momento determinado está habilitada. Para conservar más días de registros de transacciones, se requiere un tamaño de almacenamiento mayor.

API de REST

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

  • days-to-retain: es la cantidad de días que se retendrán los registros de transacciones, de 1 a 7
  • project-id: El ID del proyecto
  • instance-id: 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":
    {
      "transactionLogRetentionDays": "days-to-retain"
    }
  }
}

Para enviar tu solicitud, expande una de estas opciones:

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