En esta página, se describe cómo usar la recuperación de un momento determinado (PITR) para restablecer la instancia principal de Cloud SQL.
Para obtener más información sobre PITR, consulta Recuperación de un momento determinado (PITR).
Si creas una instancia de la edición de Cloud SQL Enterprise Plus, la PITR está habilitada de forma predeterminada, sin importar el método que se use para la creación. Si quieres inhabilitar la función, debes hacerlo de forma manual.
Si creas una instancia de Cloud SQL Enterprise, la PITR está inhabilitada de forma predeterminada, sin importar el método que se use para la creación. En este caso, si quieres habilitar la función, debes hacerlo de forma manual.
Almacenamiento de registros para PITR
El 31 de mayo de 2024, lanzamos el almacenamiento de registros de transacciones para la PITR en Cloud Storage. Desde este lanzamiento, se aplican las siguientes condiciones:Las instancias de Cloud SQL habilitadas para la PITR que se crearon antes de esta fecha solían almacenar registros de transacciones de PITR en el disco. Los registros de transacciones de la PITR de la mayoría de estas instancias se migraron a Cloud Storage. Para verificar la ubicación de los registros de una instancia específica, consulta Verifica la ubicación de almacenamiento de los registros de transacciones que se usan para la PITR.
Todas las instancias de Cloud SQL creadas con la PITR habilitada a partir de esta fecha almacenan estos registros en Cloud Storage.
Estos registros se actualizan de forma periódica y usan espacio de almacenamiento. Cloud SQL borra automáticamente los registros de transacciones con sus copias de seguridad automáticas asociadas.
Esto sucede después de que se alcanza el valor establecido para el parámetro transactionLogRetentionDays
. Para obtener más información sobre este parámetro, consulta Registros y uso del disco.
Para las instancias que almacenan registros de transacciones solo en el disco, puedes configurar Cloud SQL para que almacene los registros en Cloud Storage. Para ello, primero desactiva y, luego, vuelve a habilitar la PITR. No puedes volver a mover los registros de Cloud Storage al disco.
Para asegurarte de que los registros de tu instancia se almacenen en Cloud Storage en lugar de en el disco, completa las siguientes acciones:
- Verifica si tu instancia almacena registros en el disco o en Cloud Storage.
- Verifica la arquitectura de red de la instancia. Si la instancia está en la arquitectura de red anterior, actualízala a la nueva arquitectura de red.
- Si el tamaño de los registros en el disco causa problemas de rendimiento en la instancia, desactiva la PITR y vuelve a habilitarla.
Registros y uso del disco
En las instancias con registros de transacciones almacenados en Cloud Storage, los registros se almacenan en la misma región que la instancia principal. Este almacenamiento de registros (hasta 35 días para la edición Cloud SQL Enterprise Plus y siete días para la edición Cloud SQL Enterprise, la longitud máxima de la PITR) no genera costos adicionales por instancia.
Cloud SQL genera registros de transacciones con regularidad, y estos registros usan espacio de almacenamiento. Cloud SQL borra los registros de transacciones automáticamente con sus copias de seguridad automáticas asociadas. Esto sucede después de que se cumple el valor que estableciste para el parámetro transactionLogRetentionDays
. Este parámetro especifica la cantidad de días que Cloud SQL retiene los registros de transacciones. Para la edición de Cloud SQL Enterprise Plus, puedes establecer la cantidad de días de registros de transacciones retenidos de 1 a 35, y para la edición de Cloud SQL Enterprise, puedes establecer este valor de 1 a 7.
Si no se configura un valor para este parámetro, el período predeterminado de retención de registros de transacciones de 14 días se establece para las instancias de la edición de Cloud SQL Enterprise Plus y de 7 días para las instancias de la edición de Cloud SQL Enterprise. Para obtener más información sobre cómo aplicar este parámetro de configuración, consulta Configura la retención del registro de transacciones.
Para saber cuánto disco usan los registros de transacciones, consulta la métrica bytes_used_by_data_type
de la instancia. El valor del tipo de datos muestra el tamaño de los registros de transacciones en el disco. En el caso de las instancias que almacenan registros de transacciones que se usan para la PITR en el disco, Cloud SQL borra definitivamente los datos del disco a diario para cumplir con la configuración de la PITR transactionLogRetentionDays
. Para obtener más información, consulta Retención de copias de seguridad automáticas.
Limitaciones
Las siguientes limitaciones están asociadas con que tu instancia tenga habilitada la PITR y que el tamaño de los registros de transacciones en el disco cause un problema en la instancia:
- Puedes desactivar la PITR y volver a habilitarla para asegurarte de que Cloud SQL almacene los registros en Cloud Storage en la misma región que la instancia. Sin embargo, Cloud SQL borra todos los registros existentes, por lo que no puedes realizar una operación de PITR antes de la hora en que volviste a habilitar la PITR.
- Puedes aumentar el tamaño de almacenamiento de la instancia, pero el aumento del tamaño de tu registro de transacciones con respecto al uso del disco puede ser temporal.
- Para evitar problemas de almacenamiento inesperados, te recomendamos habilitar el aumento automático de almacenamiento. Esta recomendación se aplica solo si tu instancia tiene habilitada la PITR y tus registros se almacenan en el disco.
- Si deseas borrar registros y recuperar el almacenamiento, puedes desactivar la PITR sin volver a habilitarla. Sin embargo, disminuir el almacenamiento en uso no reduce el tamaño del disco 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.
Por ejemplo, si especificas
7
para el valor del parámetrotransactionLogRetentionDays
, para el parámetrobackupRetentionSettings
, establece la cantidad deretainedBackups
en8
.
Para obtener más información sobre la PITR, consulta Recuperación de un momento determinado (PITR).
Modelo de recuperación de la base de datos para la PITR
Si habilitas la PITR en una instancia, Cloud SQL establece de manera automática el modelo de recuperación de las bases de datos existentes y posteriores en el modelo de recuperación completo.
Para obtener más información sobre los modelos de recuperación de SQL Server, consulta la documentación de Microsoft.
Habilita la PITR
Cuando creas una instancia nueva en la consola de Google Cloud, la configuración Copias de seguridad automáticas se habilita de forma automática.Con el siguiente procedimiento, se habilita la PITR en una instancia principal existente.
Consola
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Abre el menú de más acciones
para la instancia en la que deseas habilitar PITR y haz clic en Editar.
- En Personaliza tu instancia, expande la sección Protección de datos.
- Selecciona la casilla de verificación Habilitar la recuperación de un momento determinado.
- 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.
- Haz clic en Guardar.
gcloud
- Muestra la descripción general de la instancia:
gcloud sql instances describe INSTANCE_NAME
- Si ves
enabled: false
en la secciónbackupConfiguration
, 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. - Habilita la PITR:
gcloud sql instances patch INSTANCE_NAME \ --enable-point-in-time-recovery
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
- Confirma los cambios:
gcloud sql instances describe INSTANCE_NAME
En la sección
backupConfiguration
, veráspointInTimeRecoveryEnabled: true
si se realizó correctamente el cambio.
Terraform
Para habilitar la PITR, usa un recurso de Terraform.
Habilita la PITR para la edición Enterprise Plus de Cloud SQL
Usa la siguiente muestra de código de Terraform para crear una instancia de la edición de Cloud SQL Enterprise Plus con la PITR habilitada:Habilita la PITR para la edición Enterprise de Cloud SQL
Usa la siguiente muestra de código de Terraform para crear una instancia de Cloud SQL Enterprise con la PITR habilitada: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
- Inicia Cloud Shell
-
Establece el proyecto de 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).
-
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 denominamain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
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.
- Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
- Guarda los cambios.
-
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
-
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.
-
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!”.
- Abre tu proyecto de 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:
- Para inhabilitar la protección contra la eliminación, en tu archivo de configuración de Terraform, establece el argumento
deletion_protection
enfalse
.deletion_protection = "false"
- Para aplicar la configuración actualizada de Terraform, ejecuta el siguiente comando y, luego, ingresa
yes
cuando se te solicite:terraform apply
-
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 de 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, "pointInTimeRecoveryEnabled": 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 de 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/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
Cuerpo JSON de la solicitud:
{ "settings": { "backupConfiguration": { "startTime": "START_TIME", "enabled": true, "pointInTimeRecoveryEnabled": 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:
Realiza PITR
Console
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Abre el menú de más acciones
para la instancia que deseas recuperar y haz clic en Crear clonación.
- De manera opcional, en la página Crear una clonación, actualiza el ID de la clonación nueva.
- Selecciona Clonar desde un momento anterior.
- Ingresa un tiempo de PITR.
- Selecciona Todas las bases de datos o especifica un nombre de base de datos.
Si especificas un nombre de base de datos, solo se puede seleccionar uno. De forma predeterminada, la PITR es para todas las bases de datos. - Haz clic en Crear clon.
gcloud
Crea un clon con PITR.
Reemplaza lo siguiente:
- SOURCE_INSTANCE_NAME: Es el nombre de la instancia desde la que restableces.
- NEW_INSTANCE_NAME: Es el nombre para el clon.
- TIMESTAMP: Es la zona horaria UTC para 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 cualquiera de los datos de solicitud a continuación, realiza los siguientes 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
- restore-timestamp El momento al que se restablecerá
En la solicitud JSON, tienes la opción de especificar hasta un nombre de base de datos específico, de la siguiente manera: "databaseNames": "my-database"
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, 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
- target-instance-id: El ID de la instancia de destino
- source-instance-id: El ID de la instancia de origen
- restore-timestamp El momento al que se restablecerá
En la solicitud JSON, tienes la opción de especificar hasta un nombre de base de datos específico, de la siguiente manera: "databaseNames": "my-database"
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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Desactiva PITR
Console
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Abre el menú de más acciones
para la instancia que deseas inhabilitar y selecciona Editar.
- En Personaliza tu instancia, expande la sección Protección de datos.
- Desmarca la opción Habilitar la recuperación de un momento determinado.
- Haz clic en Guardar.
gcloud
- Desactiva la recuperación de un momento determinado:
gcloud sql instances patch INSTANCE_NAME \ --no-enable-point-in-time-recovery
- Confirma los cambios:
gcloud sql instances describe INSTANCE_NAME
En la sección
backupConfiguration
, veráspointInTimeRecoveryEnabled: 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, "pointInTimeRecoveryEnabled": 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, "pointInTimeRecoveryEnabled": 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:
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.
Para 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 SQLSERVER_2019_STANDARD us-central-1 DISK my_02 SQLSERVER_2019_STANDARD 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.CLOUD_STORAGE
: la instancia almacena los registros de transacciones que se usan para la PITR en Cloud Storage.
Configura la retención del registro de transacciones
Para establecer la cantidad de días que se retendrán los registros de transacciones, haz lo siguiente:
Consola
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Abre el menú de más acciones
para la instancia en la que deseas establecer el registro de transacciones y selecciona Editar.
- En Personaliza tu instancia, expande la sección Protección de datos.
- En la sección Habilitar la recuperación de un momento determinado, expande Opciones avanzadas.
- 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.
- Haz clic en Guardar.
gcloud
Edita la instancia para establecer la cantidad de días que se retendrán los registros de transacciones.
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:
Solucionar problemas
Problema | Soluciona problemas |
---|---|
O
|
La marca de tiempo que proporcionaste no es válida. |
O
|
La marca de tiempo que proporcionaste se debe a una hora en la que no se pudieron encontrar las copias de seguridad o las coordenadas binlog. |
¿Qué sigue?
- Configura marcas en tu clonación.