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.

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://www.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.

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://www.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.

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://www.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 para tu instancia, puedes aumentar el tamaño de almacenamiento de la instancia, aunque el aumento de tamaño de tu registro binario con respecto al uso del disco puede ser temporal. Para evitar problemas de almacenamiento inesperados, recomendamos habilitar los aumentos de almacenamiento automáticos cuando se use PITR.

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.

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

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://www.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: