In questa pagina viene descritto come utilizzare il recupero point-in-time (PITR) per ripristinare dell'istanza Cloud SQL principale.
Per scoprire di più sul PITR, consulta: Recupero point-in-time (PITR).
Per impostazione predefinita, PITR è abilitato quando crei un'istanza della versione Cloud SQL Enterprise Plus, indipendentemente o meno di creare l'istanza utilizzando la console Google Cloud gcloud CLI, Terraform o l'API Cloud SQL Admin.
Se crei un'istanza della versione Cloud SQL Enterprise nella console Google Cloud, il PITR viene sono abilitate per impostazione predefinita. Altrimenti, se crei l'istanza utilizzando il comando gcloud CLI, Terraform o l'API Cloud SQL Admin, devi abilitare manualmente PITR.
Archiviazione dei log per PITR
Cloud SQL utilizza l'archiviazione WAL (write-ahead logging) per il PITR.Il 9 gennaio 2023 abbiamo lanciato l'archiviazione dei log write-ahead per PITR in Cloud Storage. Da questo lancio, i seguenti si applicano le seguenti condizioni:
- Tutte le istanze della versione Cloud SQL Enterprise Plus archiviano i log write-ahead in Cloud Storage. Solo le istanze della versione Cloud SQL Enterprise Plus di cui esegui l'upgrade dalla versione Cloud SQL Enterprise e aveva PITR abilitato prima del 9 gennaio 2023 continua per archiviare i rispettivi log su disco.
- Istanze della versione Cloud SQL Enterprise create con PITR abilitato prima del 9 gennaio 2023 per continuare ad archiviare i propri log su disco.
- Tutte le istanze della versione Cloud SQL Enterprise che crei con PITR abilitato dopo Il 9 gennaio 2023 archivia i log in Cloud Storage.
Per le istanze che archiviano i log write-ahead solo su disco, puoi: per spostare i log dal disco a Cloud Storage, disattivandoli e riabilitando PITR.
Registra periodo di conservazione
Per vedere se un'istanza archivia i log utilizzati per PITR in Cloud Storage, usa Controlla la posizione di archiviazione dei log delle transazioni utilizzati per il PITR.
Dopo aver utilizzato un client PostgreSQL come psql
o pgAdmin
per
connettiti a un database dell'istanza, esegui questo comando:
show archive_command
. Se eventuali log write-ahead vengono archiviati in Cloud Storage,
vedi
-async_archive -remote_storage
.
Tutte le altre istanze esistenti con PITR abilitato a conservare i log su disco. La modifica relativa all'archiviazione dei log Cloud Storage sarà disponibile in un secondo momento.
Se i log sono archiviati in Cloud Storage, Cloud SQL carica i log ogni cinque minuti o meno. Di conseguenza, se un Cloud SQL se l'istanza è disponibile, l'istanza potrà essere recuperata all'ora più recente. Tuttavia, se l'istanza non è disponibile, il Recovery Point Objective è in genere massimo cinque minuti. Utilizza gcloud CLI o l'API Admin per verificare l'ora più recente in cui puoi ripristinare l'istanza ed eseguire il ripristino fino a quel momento.
I log write-ahead utilizzati con PITR vengono eliminati
automaticamente con i relativi ID
backup automatico, che di solito si verifica dopo che il valore impostato
transactionLogRetentionDays
viene rispettata. Questo è il numero di giorni di log delle transazioni che Cloud SQL
vengono conservati per PITR. Per la versione Cloud SQL Enterprise Plus, il numero
di giorni di log delle transazioni conservati può essere impostato da 1 a 35 e per
Cloud SQL Enterprise, il valore può essere impostato da 1 a 7.
Quando ripristini un backup su un'istanza Cloud SQL prima di abilitarlo PITR, perderai i log write-ahead che ti consentono l'operabilità di PITR.
Per
istanze abilitate per chiave di crittografia gestita dal cliente (CMEK)
i log write-ahead sono criptati utilizzando l'ultima versione
tramite CMEK. Per eseguire un ripristino, tutte le versioni della chiave che erano le più recenti per
il numero di giorni in cui hai configurato
Il parametro retained-transaction-log-days
deve essere disponibile.
Per le istanze con log write-ahead archiviati in Cloud Storage, mentre i log sono archiviati nella stessa regione dell'istanza principale. Questo spazio di archiviazione dei log (fino a 35 giorni per la versione Cloud SQL Enterprise Plus e sette giorni per la versione Cloud SQL Enterprise, la durata massima per il PITR) non genera costi aggiuntivi per istanza.
Log e utilizzo del disco
Se per l'istanza è abilitato PITR e se la dimensione i log write-ahead sul disco causano un problema all'istanza:
Puoi disattivare e riattivare PITR per assicurarti che i nuovi log in Cloud Storage, nella stessa regione dell'istanza. Tuttavia, eventuali write-ahead esistenti vengono eliminati, quindi non puoi eseguire un ripristino point-in-time prima l'ora in cui hai riattivato PITR.
Puoi aumentare la dimensione dello spazio di archiviazione dell'istanza, ma la capacità dell'utilizzo del disco potrebbe essere temporaneo.
Ti consigliamo di attivare aumento automatico dello spazio di archiviazione per evitare problemi di archiviazione imprevisti. Questo il suggerimento si applica solo se per l'istanza è abilitato il PITR e i log sono archiviati su disco.
Puoi disattivare PITR se vuoi eliminare i log e recuperare i dati archiviazione. La riduzione dei log write-ahead utilizzati non riduce le dimensioni del disco di cui è stato eseguito il provisioning per l'istanza.
I log vengono eliminati definitivamente una volta al giorno, non in modo continuo. Imposta la conservazione dei log su due giorni significa che almeno due giorni di log e al massimo tre giorni di log vengono vengono mantenuti. Ti consigliamo di impostare il numero di backup su uno in più rispetto ai giorni di conservazione dei log.
Ad esempio, se specifichi
7
per il valore del parametrotransactionLogRetentionDays
, imposta il numero diretainedBackups
su8
per il parametrobackupRetentionSettings
.
Abilita PITR
Quando crei una nuova istanza nella console Google Cloud, vengono utilizzati entrambi i backup e Abilita il recupero point-in-time vengono in un bucket con il controllo delle versioni attivo.La seguente procedura abilita il PITR su un modello esistente dell'istanza principale.
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Apri il menu Altre azioni per l'istanza attivare il PITR e fare clic su Modifica.
- In Personalizza la tua istanza, espandi la Sezione Protezione dei dati.
- Seleziona la casella di controllo Abilita recupero point-in-time.
- Nel campo Giorni di log, inserisci il numero di giorni in cui conservare i log, compreso tra 1 e 35 per la versione Cloud SQL Enterprise Plus oppure 1-7 per Cloud SQL Enterprise.
- Fai clic su Salva.
gcloud
- Visualizza la panoramica dell'istanza:
gcloud sql instances describe INSTANCE_NAME
- Se vedi
enabled: false
nel SezionebackupConfiguration
, abilita i backup pianificati:gcloud sql instances patch INSTANCE_NAME \ --backup-start-time=HH:MM
Specifica il parametro
backup-start-time
utilizzando l'opzione 24 ore nel fuso orario UTC±00. - Attiva PITR:
gcloud sql instances patch INSTANCE_NAME \ --enable-point-in-time-recovery
Se attivi PITR su una principale, puoi anche configurare il numero di giorni per cui per conservare i log delle transazioni aggiungendo il seguente parametro:
--retained-transaction-log-days=RETAINED_TRANSACTION_LOG_DAYS
- Conferma la modifica:
gcloud sql instances describe INSTANCE_NAME
Nella sezione
backupConfiguration
, puoi vederepointInTimeRecoveryEnabled: true
se la modifica è andata a buon fine.
Terraform
Per abilitare PITR, utilizza una risorsa Terraform.
Applica le modifiche
Per applicare la configurazione Terraform a un progetto Google Cloud, completa i passaggi nella le sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito dove vuoi applicare le configurazioni Terraform.
Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Le variabili di ambiente vengono sostituite se imposti valori espliciti in Terraform di configurazione del deployment.
Prepara la directory
Ogni file di configurazione Terraform deve avere una directory (inoltre chiamato modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
all'interno di quella directory. Il nome del file deve contenere
.tf
, ad esempiomain.tf
. In questo tutorial, il file è denominatomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione nel nuovo oggetto
main.tf
.Facoltativamente, copia il codice da GitHub. Opzione consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
terraform init
Facoltativamente, per utilizzare la versione più recente del provider Google, includi
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform creerà o
che l'aggiornamento soddisfi le tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione Terraform eseguendo questo comando e inserendo
yes
alla richiesta:terraform apply
Attendi finché Terraform non visualizzi il messaggio "Applicazione completata!". .
- Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti create o aggiornate da Terraform.
Elimina le modifiche
Per eliminare le modifiche:
- Per disabilitare la protezione dall'eliminazione, nel file di configurazione Terraform imposta la classe
Argomento
deletion_protection
perfalse
.deletion_protection = "false"
- Applica la configurazione Terraform aggiornata eseguendo il comando seguente
inserendo
yes
alla richiesta:terraform apply
-
Rimuovi le risorse applicate in precedenza con la tua configurazione Terraform eseguendo questo comando e inserendo
yes
al prompt:terraform destroy
REST v1
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza
- INSTANCE_NAME: il nome dell'istanza principale o di replica di lettura che stai configurando per l'alta disponibilità
- START_TIME: l'ora (in ore e minuti)
Metodo HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Corpo JSON della richiesta:
{ "settings": { "backupConfiguration": { "startTime": "START_TIME", "enabled": true, "pointInTimeRecoveryEnabled": true } } }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
REST v1beta4
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza
- INSTANCE_NAME: il nome dell'istanza principale o di replica di lettura che stai configurando per l'alta disponibilità
- START_TIME: l'ora (in ore e minuti)
Metodo HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
Corpo JSON della richiesta:
{ "settings": { "backupConfiguration": { "startTime": "START_TIME", "enabled": true, "pointInTimeRecoveryEnabled": true } } }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Scoprire il tempo di recupero più recente
Per un'istanza disponibile, puoi eseguire il PITR fino all'ora più recente. Se l'istanza non è disponibile e i log dell'istanza sono archiviati in Cloud Storage, puoi recuperare l'ora di recupero più recente ed eseguire il PITR fino a quel momento. In entrambi i casi, puoi ripristinare l'istanza a una zona diversa specificando un valore per la zona preferita.
gcloud
Scopri l'ora più recente in cui puoi ripristinare un'istanza Cloud SQL non disponibile.
Sostituisci INSTANCE_NAME con il nome dell'istanza su cui stai eseguendo la query.
gcloud sql instances get-latest-recovery-time INSTANCE_NAME
REST v1
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: ID progetto
- INSTANCE_NAME: il nome dell'istanza per cui stai eseguendo una query per conoscere l'orario di recupero più recente
Metodo HTTP e URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#getLatestRecoveryTime", "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z" }
REST v1beta4
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: ID progetto
- INSTANCE_NAME: il nome dell'istanza per cui stai eseguendo una query per conoscere l'orario di recupero più recente
Metodo HTTP e URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#getLatestRecoveryTime", "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z" }
Esegui PITR
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Apri il menu Altre azioni per l'istanza da ripristinare e fai clic su Crea clone.
- Se vuoi, nella pagina Crea un clone, aggiorna l'ID del nuovo clone.
- Seleziona Clona da un momento precedente.
- Inserisci un'ora PITR.
- Fai clic su Crea clone.
gcloud
Crea un clone utilizzando PITR.
Sostituisci quanto segue:
- SOURCE_INSTANCE_NAME - Il nome dell'istanza che stai ripristino da.
- NEW_INSTANCE_NAME: nome del clone.
- TIMESTAMP: fuso orario UTC dell'istanza di origine in RFC formato 3339. Ad esempio 2012-11-15T16:19:00.094Z.
gcloud sql instances clone SOURCE_INSTANCE_NAME \ NEW_INSTANCE_NAME \ --point-in-time 'TIMESTAMP'
REST v1
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- project-id: l'ID progetto
- target-instance-id: l'ID istanza di destinazione
- source-instance-id: l'ID dell'istanza di origine
- restore-timestamp Il momento in cui eseguire il ripristino fino a
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone
Corpo JSON della richiesta:
{ "cloneContext": { "kind": "sql#cloneContext", "destinationInstanceName": "target-instance-id", "pointInTime": "restore-timestamp" } }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
REST v1beta4
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- project-id: l'ID progetto
- target-instance-id: l'ID istanza di destinazione
- source-instance-id: l'ID dell'istanza di origine
- restore-timestamp Il momento in cui eseguire il ripristino fino a
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone
Corpo JSON della richiesta:
{ "cloneContext": { "kind": "sql#cloneContext", "destinationInstanceName": "target-instance-id", "pointInTime": "restore-timestamp" } }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Disattiva PITR
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Apri il menu Altre azioni per l'istanza da disattivare e seleziona Modifica.
- In Personalizza la tua istanza, espandi la sezione Protezione dei dati .
- Deseleziona l'opzione Abilita recupero point-in-time.
- Fai clic su Salva.
gcloud
- Disattiva il recupero point-in-time:
gcloud sql instances patch INSTANCE_NAME \ --no-enable-point-in-time-recovery
- Conferma la modifica:
gcloud sql instances describe INSTANCE_NAME
Nella sezione
backupConfiguration
, puoi vederepointInTimeRecoveryEnabled: false
se la modifica è andata a buon fine.
REST v1
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- project-id: l'ID progetto
- instance-id: l'ID istanza
Metodo HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
Corpo JSON della richiesta:
{ "settings": { "backupConfiguration": { "enabled": false, "pointInTimeRecoveryEnabled": false } } }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
REST v1beta4
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- project-id: l'ID progetto
- instance-id: l'ID istanza
Metodo HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
Corpo JSON della richiesta:
{ "settings": { "backupConfiguration": { "enabled": false, "pointInTimeRecoveryEnabled": false } } }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Controlla la posizione di archiviazione dei log delle transazioni utilizzati per il PITR
Puoi verificare dove l'istanza Cloud SQL archivia la transazione log utilizzati per PITR.
gcloud
per determinare se la tua istanza archivia i log per PITR disco o Cloud Storage, utilizza il comando seguente:
gcloud sql instances describe INSTANCE_NAME
Sostituisci INSTANCE_NAME con il nome dell'istanza.
Nell'output del comando, il campo transactionalLogStorageState
fornisce informazioni sul punto in cui viene eseguita la transazione
i log per PITR vengono archiviati per l'istanza.
Il log delle possibili transazioni
sono i seguenti:
DISK
: l'istanza archivia i log delle transazioni utilizzata per il PITR su disco.CLOUD_STORAGE
: l'istanza archivia log delle transazioni utilizzati per il PITR in Cloud Storage.
Imposta la conservazione dei log delle transazioni
Per impostare il numero di giorni in cui conservare i log write-ahead:
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Apri il menu Altre azioni per l'istanza vuoi impostare il log delle transazioni e seleziona Modifica.
- In Personalizza la tua istanza, espandi la sezione Protezione dei dati .
- Nella sezione Abilita recupero point-in-time, espandi Opzioni avanzate.
- Inserisci il numero di giorni in cui conservare i log, compreso tra 1 e 35 per la versione Cloud SQL Enterprise Plus oppure 1-7 per Cloud SQL Enterprise.
- Fai clic su Salva.
gcloud
Modifica l'istanza per impostare il numero di giorni da conservare i log write-ahead.
Sostituisci quanto segue:
- INSTANCE-NAME: il nome dell'istanza che vuoi e impostare il log delle transazioni.
- DAYS-TO-RETAIN: il numero di giorni di log delle transazioni da conservare. Per la versione Cloud SQL Enterprise Plus, l'intervallo valido è compreso tra 1 e 35 giorni, con un valore predefinito di 14 giorni. Per la versione Cloud SQL Enterprise, l'intervallo valido è tra 1 e 7 giorni, con un valore predefinito di 7 giorni. Se non viene specificato alcun valore, viene utilizzato il valore predefinito. Valido solo quando il PITR è abilitato. Conservare un numero maggiore di giorni di log delle transazioni richiede uno spazio di archiviazione maggiore dimensioni.
gcloud sql instances patch INSTANCE-NAME \ --retained-transaction-log-days=DAYS-TO-RETAIN
REST v1
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- days-to-retain: il numero di giorni in cui i log delle transazioni devono essere conservati, compreso tra 1 e 7
- project-id: l'ID progetto
- instance-id: l'ID istanza
Metodo HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
Corpo JSON della richiesta:
{ "settings": { "backupConfiguration": { "transactionLogRetentionDays": "days-to-retain" } } }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
REST v1beta4
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- days-to-retain: il numero di giorni in cui i log delle transazioni devono essere conservati, compreso tra 1 e 7
- project-id: l'ID progetto
- instance-id: l'ID istanza
Metodo HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
Corpo JSON della richiesta:
{ "settings": { "backupConfiguration": { "transactionLogRetentionDays": "days-to-retain" } } }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Passaggi successivi
- Configura flag sul tuo clone