Realizar una recuperación a un momento dado (PITR)

Puedes usar la recuperación a un momento dado (PITR) para restaurar tus instancias principales de Cloud SQL, tanto si están activas como si se han eliminado. La recuperación a un momento dado te permite restaurar la instancia a un momento específico. En el caso de una instancia eliminada, puedes restaurarla a un momento dado específico en una instancia nueva o en una ya creada.

Cloud SQL ofrece las siguientes opciones para restaurar tu instancia mediante PITR:

Para realizar una PITR en una instancia no disponible o eliminada, debes buscar la hora de recuperación más reciente y la más antigua.

Realizar una PITR

Consola

  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 Icono de acciones adicionales. de la instancia que quieras recuperar y haz clic en Crear clon.
  3. En la página Crear un clon, puedes actualizar el ID del nuevo clon.
  4. Selecciona Clonar desde un momento anterior.
  5. Introduce una hora de PITR.
  6. Haz clic en Crear clon.

gcloud

Crea un clon mediante PITR.

Haz los cambios siguientes:

  • SOURCE_INSTANCE_NAME: nombre de la instancia desde la que vas a restaurar.
  • NEW_INSTANCE_NAME: nombre del clon.
  • TIMESTAMP: zona horaria UTC de la instancia de origen en formato RFC 3339. Por ejemplo, 2012-11-15T16:19:00.094Z.
gcloud sql instances clone SOURCE_INSTANCE_NAME \
NEW_INSTANCE_NAME \
--point-in-time 'TIMESTAMP'

REST v1

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

  • project-id: el ID del proyecto
  • target-instance-id: ID de la instancia de destino
  • source-instance-id: ID de la instancia de origen
  • restore-timestamp El momento dado hasta el que se debe restaurar

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "pointInTime": "restore-timestamp"
  }
}

Para enviar tu solicitud, despliega una de estas opciones:

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

REST v1beta4

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

  • project-id: el ID del proyecto
  • target-instance-id: ID de la instancia de destino
  • source-instance-id: ID de la instancia de origen
  • restore-timestamp El momento dado hasta el que se debe restaurar

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",
    "pointInTime": "restore-timestamp"
  }
}

Para enviar tu solicitud, despliega una de estas opciones:

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

Realizar una PITR con la bóveda de copias de seguridad

Si tu instancia de Cloud SQL tiene habilitadas las copias de seguridad mejoradas, puedes realizar una recuperación a un momento dado de tu instancia mediante el archivo de copias de seguridad.

Consola

  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 Icono de acciones adicionales. de la instancia que quieras recuperar y haz clic en Crear clon.

  3. Selecciona Clonar desde un momento anterior.

  4. Introduce una hora de PITR.

  5. Haz clic en Crear clon.

gcloud

Para realizar una recuperación a un momento dado en una instancia desde el almacén de copias de seguridad, tendrás que buscar el data-source de la copia de seguridad más cercana a la hora en la que quieras realizar la recuperación. Para encontrar la copia de seguridad, consulta Lista de todas las copias de seguridad del archivo de copias de seguridad de una instancia. Una vez que hayas identificado la copia de seguridad, ejecuta el siguiente comando para realizar la restauración a un momento dado:

gcloud sql instances point-in-time-restore DATA_SOURCE
PITR_TIMESTAMP
--project=TARGET_PROJECT

Haz los cambios siguientes:

  • DATA_SOURCE: la ruta del data-source de la copia de seguridad más cercana a la marca de tiempo de PITR a la que quieras restaurar.
  • PITR_TIMESTAMP: marca de tiempo UTC del registro PITR de la instancia de origen a la que quieres restaurar tu instancia, en formato RFC 3339. Por ejemplo, 2012-11-15T16:19:00.094Z.
  • TARGET_PROJECT: el ID de proyecto de tu instancia de Cloud SQL.

REST v1

REST v1beta4

Realizar PITR en una instancia no disponible

Consola

Puede que quieras recuperar una instancia que no esté disponible en otra zona por los siguientes motivos:

  • No se puede acceder a la zona en la que está configurada la instancia. Esta instancia tiene el estado FAILED.
  • Se está realizando el mantenimiento de la instancia. Esta instancia tiene el estado MAINTENANCE.

Para recuperar una instancia no disponible, sigue estos pasos:

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

    Ir a Instancias de Cloud SQL

  2. Busca la fila de la instancia que quieras clonar.
  3. En la columna Acciones, haz clic en el menú Más acciones.
  4. Haz clic en Crear clon.
  5. En la página Crear una clonación, sigue estos pasos:
    1. En el campo ID de instancia, actualice el ID de instancia si es necesario.
    2. Haz clic en Clonar desde un momento anterior.
    3. En el campo Punto en el tiempo, selecciona la fecha y la hora a partir de las que quieras clonar los datos. De esta forma, se recupera el estado de la instancia a partir de ese momento.
    4. Haz clic en Crear clon.
  6. Mientras se inicializa el clon, se te redirige a la página de la lista de instancias.

gcloud

Puede que quieras recuperar una instancia que no esté disponible en otra zona porque no se puede acceder a la zona en la que está configurada la instancia.

gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \
--point-in-time DATE_AND_TIME_STAMP \
--preferred-zone ZONE_NAME \
--preferred-secondary-zone SECONDARY_ZONE_NAME

El usuario o la cuenta de servicio que ejecute el comando gcloud sql instances clone debe tener el permiso cloudsql.instances.clone. Para obtener más información sobre los permisos necesarios para ejecutar comandos de gcloud CLI, consulta Permisos de Cloud SQL.

REST v1

Puede que quieras recuperar una instancia que no esté disponible en otra zona porque no se puede acceder a la zona en la que está configurada la instancia.

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

  • PROJECT_ID: el ID del proyecto.
  • SOURCE_INSTANCE_NAME: el nombre de la instancia de la fuente.
  • TARGET_INSTANCE_NAME: el nombre de la instancia de destino (clonada).
  • DATE_AND_TIME_STAMP: marca de fecha y hora de la instancia de origen en la zona horaria UTC y en el formato RFC 3339 (por ejemplo,
    2012-11-15T16:19:00.094Z).
  • ZONE_NAME: opcional. Nombre de la zona principal de la instancia de destino. Se usa para especificar una zona principal diferente para la instancia de Cloud SQL que quieras clonar. En el caso de una instancia regional, esta zona sustituye a la zona principal, pero la zona secundaria sigue siendo la misma que la de la instancia.
  • SECONDARY_ZONE_NAME: opcional. Nombre de la zona secundaria de la instancia de destino. Se usa para especificar una zona secundaria diferente para la instancia regional de Cloud SQL que quieras clonar.

Método HTTP y URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone

Cuerpo JSON de la solicitud:

{
  "cloneContext":
  {
    "destinationInstanceName": "TARGET_INSTANCE_NAME",
    "pointInTime": "DATE_AND_TIME_STAMP",
    "preferredZone": "ZONE_NAME",
    "preferredSecondaryZone": "SECONDARY_ZONE_NAME"
  }
}

Para enviar tu solicitud, despliega una de estas opciones:

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

El usuario o la cuenta de servicio que use el método de la API instances.clone debe tener el permiso cloudsql.instances.clone. Para obtener más información sobre los permisos necesarios para usar los métodos de la API, consulta Permisos de Cloud SQL.

REST v1beta4

Puede que quieras recuperar una instancia que no esté disponible en otra zona porque no se puede acceder a la zona en la que está configurada la instancia.

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

  • PROJECT_ID: el ID del proyecto.
  • SOURCE_INSTANCE_NAME: el nombre de la instancia de la fuente.
  • TARGET_INSTANCE_NAME: el nombre de la instancia de destino (clonada).
  • DATE_AND_TIME_STAMP: marca de fecha y hora de la instancia de origen en la zona horaria UTC y en el formato RFC 3339 (por ejemplo,
    2012-11-15T16:19:00.094Z).
  • ZONE_NAME: opcional. Nombre de la zona principal de la instancia de destino. Se usa para especificar una zona principal diferente para la instancia de Cloud SQL que quieras clonar. En el caso de una instancia regional, esta zona sustituye a la zona principal, pero la zona secundaria sigue siendo la misma que la de la instancia.
  • SECONDARY_ZONE_NAME: opcional. Nombre de la zona secundaria de la instancia de destino. Se usa para especificar una zona secundaria diferente para la instancia regional de Cloud SQL que quieras clonar.

Método HTTP y URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone

Cuerpo JSON de la solicitud:

{
  "cloneContext":
  {
    "destinationInstanceName": "TARGET_INSTANCE_NAME",
    "pointInTime": "DATE_AND_TIME_STAMP",
    "preferredZone": "ZONE_NAME",
    "preferredSecondaryZone": "SECONDARY_ZONE_NAME"
  }
}

Para enviar tu solicitud, despliega una de estas opciones:

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

El usuario o la cuenta de servicio que use el método de la API instances.clone debe tener el permiso cloudsql.instances.clone. Para obtener más información sobre los permisos necesarios para usar los métodos de la API, consulta Permisos de Cloud SQL.

Si intentas crear un clon de PITR en un momento posterior a la última hora recuperable, se mostrará el siguiente mensaje de error:

The timestamp for point-in-time recovery is after the latest recovery time of
Timestamp of latest recovery time. Clone the instance with a time
that's earlier than this recovery time.

Realizar una recuperación a un momento dado en una instancia eliminada

Para usar PITR y restaurar una instancia eliminada, necesitas lo siguiente:

  • La marca de tiempo de PITR (timestamp) a la que quieres restaurar tu instancia
  • Nombre de la instancia de destino
  • La hora en la que se eliminó la instancia de origen (source-instance-deletion-time)

Solo puedes usar la PITR en una instancia eliminada con la CLI de gcloud o la API de Cloud SQL. Para obtener más información, consulta Restaurar una instancia eliminada mediante una restauración a un momento dado.

gcloud

Buscar la ventana de PITR

Para encontrar el periodo de PITR de tu instancia eliminada, consulta la hora de recuperación más antigua y más reciente de tu instancia. Puedes seleccionar cualquier marca de tiempo en esta ventana para realizar una PITR.

Buscar la hora de eliminación de la instancia de origen y los días de conservación de los registros

Los source-instance-deletion-time y log-retention-days de la instancia eliminada se almacenan con las copias de seguridad conservadas de tu instancia después de la eliminación. Para encontrar estos valores en tu instancia eliminada, consulta Lista de copias de seguridad conservadas.

Restaurar con una PITR

Para restaurar la instancia eliminada mediante una PITR, ejecuta el siguiente comando:

gcloud sql instances clone SOURCE_INSTANCE_NAME \
NEW_INSTANCE_NAME \
--point-in-time='PITR_TIMESTAMP' \
--source-instance-deletion-time=SOURCE_INSTANCE_DELETION_TIMESTAMP

Haz los cambios siguientes:

  • SOURCE_INSTANCE_NAME: el nombre de la instancia de origen que quieras restaurar.
  • NEW_INSTANCE_NAME: el nombre de la nueva instancia.
  • PITR_TIMESTAMP: marca de tiempo UTC del registro PITR de la instancia de origen a la que quieres restaurar tu instancia, en formato RFC 3339. Por ejemplo, 2012-11-15T16:19:00.094Z.
  • SOURCE_INSTANCE_DELETION_TIMESTAMP: marca de tiempo UTC de la hora en la que se eliminó la instancia de origen, en formato RFC 3339. Por ejemplo, 2012-11-15T16:19:00.094Z.

REST v1

Buscar la ventana de PITR

Para encontrar el periodo de PITR de tu instancia eliminada, consulta la hora de recuperación más antigua y más reciente de tu instancia. Puedes seleccionar cualquier marca de tiempo en esta ventana para realizar una PITR.

Buscar la hora de eliminación de la instancia de origen y los días de conservación de los registros

Los source-instance-deletion-time y log-retention-days de la instancia eliminada se almacenan con las copias de seguridad conservadas de tu instancia después de la eliminación. Para encontrar estos valores en tu instancia eliminada, consulta Lista de copias de seguridad conservadas.

Restaurar con una PITR

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

  • project-id: el ID del proyecto
  • target-instance-id: el ID de instancia de destino
  • source-instance-id: el ID de instancia de origen
  • source-instance-deletion-time: hora de eliminación de la instancia de fuente
  • restore-timestamp el momento en el que quieres restaurar la instancia

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "sourceInstanceDeletionTime: "source-instance-deletion-time",
    "pointInTime": "restore-timestamp"
  }
}

Para enviar tu solicitud, despliega una de estas opciones:

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

REST v1beta4

Buscar la ventana de PITR

Para encontrar el periodo de PITR de tu instancia eliminada, consulta la hora de recuperación más antigua y más reciente de tu instancia. Puedes seleccionar cualquier marca de tiempo de esta ventana para realizar una restauración a un momento dado.

Buscar la hora de eliminación de la instancia de origen y los días de conservación de los registros

Los source-instance-deletion-time y log-retention-days de la instancia eliminada se almacenan con las copias de seguridad conservadas de tu instancia después de la eliminación. Para encontrar estos valores en tu instancia eliminada, consulta Lista de copias de seguridad conservadas.

Restaurar con PITR

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

  • project-id: el ID del proyecto
  • target-instance-id: el ID de instancia de destino
  • source-instance-id: el ID de instancia de origen
  • source-instance-deletion-time: hora de eliminación de la instancia de fuente
  • restore-timestamp el momento en el que quieres restaurar la instancia

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",
    "sourceInstanceDeletionTime: "source-instance-deletion-time",
    "pointInTime": "restore-timestamp"
  }
}

Para enviar tu solicitud, despliega una de estas opciones:

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

Obtener el tiempo de recuperación más temprano y más tardío

En una instancia disponible, puedes realizar una restauración a un momento dado a cualquier marca de tiempo dentro del periodo de PITR de la instancia. El intervalo de PITR empieza en el momento de recuperación más antiguo y termina en el más reciente. Si la instancia no está disponible y los registros de la instancia se almacenan en Cloud Storage, o si la instancia se ha eliminado y tenía habilitada la conservación de PITR, puedes recuperar la hora de recuperación más antigua y la más reciente, y realizar la recuperación a un momento dado dentro de ese periodo. En todos los casos, puedes restaurar la instancia en otra zona principal o secundaria proporcionando valores para las zonas preferidas.

gcloud

Instancia no disponible

Para obtener la hora más antigua y la más reciente a las que puedes recuperar una instancia de Cloud SQL que no está disponible, ejecuta el siguiente comando:

gcloud sql instances get-latest-recovery-time INSTANCE_NAME

Haz los cambios siguientes:

  • INSTANCE_NAME: el nombre de la instancia de la que quieras consultar la hora de recuperación más reciente.

Instancia eliminada

Para obtener la hora más antigua y la más reciente a las que puedes recuperar una instancia de Cloud SQL eliminada, ejecuta el siguiente comando:

gcloud sql instances get-latest-recovery-time INSTANCE_NAME
--source-instance-deletion-time='SOURCE_INSTANCE_DELETION_TIMESTAMP'

Haz los cambios siguientes:

  • INSTANCE_NAME: el nombre de la instancia de la que quieras consultar la hora de recuperación más reciente.
  • SOURCE_INSTANCE_DELETION_TIMESTAMP: marca de tiempo UTC de la hora en la que se eliminó la instancia de origen, en formato RFC 3339. Por ejemplo, 2012-11-15T16:19:00.094Z.

REST v1

Instancia no disponible

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

  • PROJECT_ID: el ID del proyecto
  • INSTANCE_NAME: el nombre de la instancia de la que quieres consultar la hora de recuperación más reciente

Método HTTP y URL:

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

Para enviar tu solicitud, despliega una de estas opciones:

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

{
  "kind": "sql#getLatestRecoveryTime",
  "earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
  "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}

Instancia eliminada

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

  • PROJECT_ID: el ID del proyecto
  • INSTANCE_NAME: el nombre de la instancia de origen de la que quieres consultar la hora de recuperación más reciente
  • SOURCE_INSTANCE_DELETION_TIME: la hora en la que se eliminó la instancia de origen

Método HTTP y URL:

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

Para enviar tu solicitud, despliega una de estas opciones:

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

{
  "kind": "sql#getLatestRecoveryTime",
  "earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
  "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}

REST v1beta4

Instancia no disponible

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

  • PROJECT_ID: el ID del proyecto
  • INSTANCE_NAME: el nombre de la instancia de la que quieres consultar la hora de recuperación más reciente

Método HTTP y URL:

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

Para enviar tu solicitud, despliega una de estas opciones:

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

{
  "kind": "sql#getLatestRecoveryTime",
  "earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
  "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}

Instancia eliminada

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

  • PROJECT_ID: el ID del proyecto
  • INSTANCE_NAME: el nombre de la instancia de origen de la que quieres consultar la hora de recuperación más reciente
  • SOURCE_INSTANCE_DELETION_TIME: la hora en la que se eliminó la instancia de origen

Método HTTP y URL:

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

Para enviar tu solicitud, despliega una de estas opciones:

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

{
  "kind": "sql#getLatestRecoveryTime",
  "earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
  "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}

Solucionar problemas

Problema Solución de problemas

argument --point-in-time: Failed to parse date/time:
Unknown string format: 2021-0928T30:54:03.094;
received: 2021-0928T30:54:03.094Z

O

Invalid value at 'body.clone_context.point_in_time'
(type.googleapis.com/google.protobuf.Timestamp), Field 'pointInTime',
Invalid time format: Failed to parse input,

La marca de tiempo que has proporcionado no es válida.

HTTP Error 400: Successful backup required for carrying out the operation was not found.

O

Successful backup required for carrying out the operation was not found. or Time where no backups can be found.

La marca de tiempo que has proporcionado corresponde a un momento en el que no se han podido encontrar copias de seguridad ni coordenadas de binlog.

Siguientes pasos