Recuperación de un punto en el tiempo

IBM Cloud® Databases for PostgreSQL ofrece recuperación en un punto en el tiempo (PITR) para cualquier momento de los últimos 7 días. El despliegue realiza copias de seguridad incrementales continuas y puede reproducir las transacciones para llevar un nuevo despliegue que se restaura a partir de una copia de seguridad a cualquier momento que necesite de dicha ventana de 7 días.

La pestaña Copias de seguridad y restauración de la interfaz de usuario de la implantación mantiene toda la información de PITR en Recuperación puntual.

En PostgreSQL versiones 13 y posteriores, al restaurar a un punto específico en los últimos siete días, con un tiempo de restauración después de la última transacción, la restauración falla con el mensaje recovery ended before configured recovery target is reached. Antes de PostgreSQL v13, al restaurar a un punto específico en los últimos siete días, con un tiempo de restauración después de la última transacción, se utiliza el punto de restauración más reciente. Si la restauración falla por este motivo, Restore to last available point o elija una fecha/hora anterior para Restore to a specific point in the last 7 days.

La información incluida es el momento más antiguo para una PITR. Para descubrir el punto de recuperación más antiguo a través de la CLI, utilice el mandato cdb postgresql earliest-pitr-timestamp.

ibmcloud cdb postgresql earliest-pitr-timestamp <INSTANCE_NAME_OR_CRN>

Para descubrir el punto de recuperación más antiguo a través de la API, utilice el punto final /deployments/{id}/point_in_time_recovery_data para encontrar el momento de PITR más antiguo.

{
    "point_in_time_recovery_data": {
        "earliest_point_in_time_recovery_time": "2019-09-09T23:16:00Z"
    }
}

Recuperación

Las copias de seguridad se restauran en un nuevo despliegue. Después de que finalice el suministro del nuevo despliegue, los datos del archivo de copia de seguridad se restauran en el nuevo despliegue. Las copias de seguridad también se pueden restaurar entre cuentas, pero solo mediante la API y solo si el usuario que está ejecutando la restauración tiene acceso a las cuentas de origen y de destino.

De forma predeterminada, el nuevo despliegue se ajusta automáticamente al mismo disco y a la misma asignación de memoria que el despliegue de origen en el momento de realizar la copia de seguridad desde la que está restaurando. Especialmente en el caso de PITR que puede que no sea el tamaño actual del despliegue. Si necesita ajustar los recursos asignados al nuevo despliegue, utilice los campos opcionales de la IU, la CLI o la API para cambiar el tamaño del nuevo despliegue. Asegúrese de asignar lo suficiente para los datos y la carga de trabajo, si el despliegue no recibe suficientes recursos, la restauración falla.

Mientras que el almacenamiento y la memoria se restauran igual que el despliegue de origen, las configuraciones específicas de la instancia no se establecen automáticamente para la nueva instancia. En este caso, puede ser necesario volver a ejecutar la configuración después de una restauración. Tenga en cuenta cualquier modificación de instancia antes de ejecutar la restauración (parámetros como shared_buffers, max_connections, deadlock_timeout, archive_timeout y otros) para garantizar el valor preciso de la instancia una vez finalizada la restauración.

Es importante que no suprima el despliegue de origen mientras la copia de seguridad se está restaurando. Debe esperar hasta que se suministre el nuevo despliegue y se restaure la copia de seguridad antes de suprimir el despliegue anterior. Al borrar una implantación también se borran sus copias de seguridad, por lo que no sólo falla la restauración, sino que es posible que tampoco puedas recuperar la copia de seguridad.

Recuperación en la interfaz de usuario

Para iniciar una PITR, especifique la hora a la que desea volver a restaurar en la hora universal coordinada (UTC). Si desea restaurar la hora disponible más reciente, seleccione esa opción. Al hacer clic en el botón Restaurar aparece la nueva interfaz de usuario de aprovisionamiento en una pestaña con las opciones para su recuperación. Introduzca los detalles del servicio, asigne recursos y establezca la versión de la base de datos, el cifrado y el punto final para su nueva implantación. Haga clic en Recuperación puntual para iniciar el proceso.

Si utiliza Key Protect y tiene una clave, debe utilizar la CLI para recuperarla, y se proporciona un comando para su comodidad.

Recuperación en la CLI

El controlador de recursos da soporte al suministro de despliegues de bases de datos, y el suministro y la restauración son responsabilidad de la CLI del controlador de recursos. Utilice el mandato resource service-instance-create.

Para PITR, utilice los parámetros point_in_time_recovery_time y point_in_time_recovery_deployment_id. El point_in_time_recovery_deployment_id es el ID del despliegue de origen y point_in_time_recovery_time es la indicación de fecha y hora en la hora universal coordinada a la que se desea restaurar. Para restaurar el último punto en el tiempo disponible, utilice "point_in_time_recovery_time":" ".

ibmcloud resource service-instance-create <databases-for-postgresql> <INSTANCE_NAME> <REGION> -p '{"point_in_time_recovery_deployment_id":"DEPLOYMENT_ID", "point_in_time_recovery_time":"TIMESTAMP", "version":" "}'

Dispone de un mandato preformateado para una copia de seguridad o PITR específica en la vista detallada de la copia de seguridad.

Cuando se restaura a través de la CLI, los parámetros opcionales están disponibles. Utilícelos para personalizar recursos o utilice una clave de Key Protect para el cifrado BYOK en el nuevo despliegue.

ibmcloud resource service-instance-create <databases-for-postgresql> <INSTANCE_NAME> standard <REGION> <--service-endpoints SERVICE_ENDPOINTS_TYPE> -p
'{"point_in_time_recovery_deployment_id":"DEPLOYMENT_ID", "point_in_time_recovery_time":"TIMESTAMP","key_protect_key":"KEY_PROTECT_KEY_CRN", "members_disk_allocation_mb":"DESIRED_DISK_IN_MB", "members_memory_allocation_mb":"DESIRED_MEMORY_IN_MB", "members_cpu_allocation_count":"NUMBER_OF_CORES", "version":" "}'

Recuperación en la API

El controlador de recursos da soporte al suministro de despliegues de bases de datos, y el suministro y la restauración son responsabilidad de la API del controlador de recursos. Debe seguir los pasos necesarios para utilizar la API del controlador de recursos para poder utilizarlo para restaurar a partir de una copia de seguridad.

Cuando tenga toda la información, la solicitud de creación se publica (POST) en el punto final /resource_instances.

curl -X POST \
  https://resource-controller.cloud.ibm.com/v2/resource_instances \
  -H 'Authorization: Bearer <>' \
  -H 'Content-Type: application/json' \
    -d '{
    "name": "<INSTANCE_NAME_OR_CRN>",
    "target": "<REGION>",
    "resource_group": "<RESOURCE_GROUP>",
    "resource_plan_id": "<SERVICE_ID>"
    "point_in_time_recovery_time":"<TIMESTAMP>",
    "point_in_time_recovery_deployment_id":"<DEPLOYMENT_ID>"
  }'

Los parámetros name, target, resource_group y resource_plan_id son obligatorios. El valor target es la región en la que desea alojar el nuevo despliegue, que puede ser distinta de la región del despliegue de origen. Se da soporte a las restauraciones entre regiones, excepto para restaurar una copia de seguridad de eu-de en otra región.

Para PITR, utilice los parámetros point_in_time_recovery_time y point_in_time_recovery_deployment_id. El point_in_time_recovery_deployment_id es el ID del despliegue de origen y point_in_time_recovery_time es la indicación de fecha y hora en la hora universal coordinada a la que se desea restaurar. Para restaurar el último punto en el tiempo disponible, utilice "point_in_time_recovery_time":" ".

Si tiene que ajustar recursos o utilizar una clave de Key Protect, añada los parámetros opcionales key_protect_key, members_disk_allocation_mb, members_memory_allocation_mb y/o members_cpu_allocation_count y sus valores en el cuerpo de la solicitud.

Verificación de PITR

Para verificar el tiempo de recuperación correcto, compruebe los registros de la base de datos. La comprobación de los registros de base de datos requiere que se configure la Integración de registro en el despliegue.

Cuando realiza una recuperación, los datos se restauran a partir de la copia de seguridad incremental más reciente. Las transacciones pendientes del registro WAL se utilizan para restaurar la base de datos hasta el momento en que se ha recuperado. Una vez que la recuperación haya finalizado y se hayan ejecutado las transacciones, aparecerá un mensaje en los registros. Puede comprobar que sus registros contienen el mensaje con el siguiente comando:

LOG:  last completed transaction was at log time 2019-09-03 19:40:48.997696+00

Existen dos casos de ejemplo en los que la recuperación no aparece en los registros.

  1. El despliegue tiene una copia de seguridad completa reciente y no hay actividad después de que se haya realizado la copia de seguridad que sea necesario reproducir.
  2. Si ha especificado un momento para la recuperación que sea posterior a la hora actual o al punto de recuperación en un punto en el tiempo más reciente disponible.

En ambos casos, la recuperación sigue realizándose con éxito, pero no habrá una entrada en los registros para comprobar el momento exacto al que se ha restaurado la base de datos.