Configura il recupero point-in-time (PITR)

Il recupero point-in-time (PITR) consente di ripristinare un'istanza Cloud SQL in un momento specifico. In questo modo, puoi recuperare i dati persi e annullare modifiche o danneggiamenti involontari.

Il PITR richiede backup automatici. Puoi configurare il PITR su un'istanza esistente attivando o disattivando la funzionalità, modificando la conservazione dei log delle transazioni e passando l'archiviazione dei log delle transazioni a Cloud Storage.

Prima di iniziare

Prima di iniziare, esamina quanto segue:

  • Se abiliti il PITR su un'istanza esistente, l'istanza viene riavviata.
  • Il PITR è abilitato per impostazione predefinita quando crei un'istanza Cloud SQL Enterprise nella console Cloud de Confiance . Se utilizzi gcloud CLI, Terraform o l'API Cloud SQL Admin e vuoi attivare la funzionalità, devi farlo manualmente.
  • Il PITR è abilitato per impostazione predefinita quando crei un'istanza Cloud SQL Enterprise Plus, indipendentemente dal metodo utilizzato. Se vuoi disattivare la funzionalità, devi farlo manualmente.
  • I backup automatici sono abilitati per impostazione predefinita quando crei un'istanza nella console Cloud de Confiance . Se utilizzi gcloud CLI, Terraform o l'API Cloud SQL Admin e vuoi attivare la funzionalità, devi farlo manualmente.

Abilita PITR

La seguente procedura attiva il PITR (e il logging binario) su un'istanza principale esistente.

Console

  1. Nella console Cloud de Confiance , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Apri il menu Altre azioni Icona Altre azioni. per l'istanza su cui vuoi attivare il PITR e fai clic su Modifica.
  3. In Personalizza la tua istanza, espandi la sezione Protezione dei dati.
  4. Seleziona la casella di controllo Abilita recupero point-in-time.
  5. Nel campo Giorni di log, inserisci il numero di giorni di conservazione dei log, da 1 a 35 per la versione Cloud SQL Enterprise Plus o da 1 a 7 per la versione Cloud SQL Enterprise.
  6. Fai clic su Salva.

gcloud

  1. Visualizza la panoramica dell'istanza:
    gcloud sql instances describe INSTANCE_NAME
  2. Se vedi enabled: false nella sezione backupConfiguration, attiva i backup pianificati:
    gcloud sql instances patch INSTANCE_NAME \
    --backup-start-time=HH:MM

    Specifica il parametro backup-start-time utilizzando il formato 24 ore nel fuso orario UTC±00.

  3. Abilita PITR:
    gcloud sql instances patch INSTANCE_NAME \
    --enable-bin-log

    Se stai attivando il PITR su un'istanza principale, puoi anche configurare il numero di giorni per cui vuoi conservare i log delle transazioni aggiungendo il seguente parametro:

    --retained-transaction-log-days=RETAINED_TRANSACTION_LOG_DAYS
  4. Conferma la modifica:
    gcloud sql instances describe INSTANCE_NAME

    Nella sezione backupConfiguration, viene visualizzato binaryLogEnabled: true se la modifica è andata a buon fine.

Terraform

Per attivare il PITR, utilizza una risorsa Terraform.

resource "google_sql_database_instance" "default" {
  name             = "mysql-instance-pitr"
  region           = "asia-northeast1"
  database_version = "MYSQL_8_0"
  settings {
    tier = "db-f1-micro"
    backup_configuration {
      enabled                        = true
      binary_log_enabled             = true
      start_time                     = "20:55"
      transaction_log_retention_days = "3"
    }
  }
}

Applica le modifiche

Per applicare la configurazione Terraform in un progetto Cloud de Confiance , completa i passaggi descritti nelle sezioni seguenti.

Prepara Cloud Shell

  1. Avvia Cloud Shell.
  2. Imposta il progetto Cloud de Confiance predefinito in cui 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 nel file di configurazione Terraform.

Prepara la directory

Ogni file di configurazione Terraform deve avere la propria directory (chiamata anche modulo principale).

  1. In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome file deve avere l'estensione .tf, ad esempio main.tf. In questo tutorial, il file è denominato main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.

    Copia il codice campione nel file main.tf appena creato.

    Facoltativamente, copia il codice da GitHub. Questa opzione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.

  3. Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
  4. Salva le modifiche.
  5. Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
    terraform init

    Facoltativamente, per utilizzare l'ultima versione del provider Google, includi l'opzione -upgrade:

    terraform init -upgrade

Applica le modifiche

  1. Esamina la configurazione e verifica che le risorse che Terraform creerà o aggiornerà corrispondano alle tue aspettative:
    terraform plan

    Apporta le correzioni necessarie alla configurazione.

  2. Applica la configurazione Terraform eseguendo il comando seguente e inserendo yes al prompt:
    terraform apply

    Attendi che Terraform visualizzi il messaggio "Apply complete!".

  3. Apri il tuo progetto Cloud de Confiance per visualizzare i risultati. Nella console Cloud de Confiance , vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.

Elimina le modifiche

Per eliminare le modifiche:

  1. Per disattivare la protezione dalle eliminazioni, nel file di configurazione Terraform imposta l'argomento deletion_protection su false.
    deletion_protection =  "false"
  2. Applica la configurazione Terraform aggiornata eseguendo il comando seguente e inserendo yes al prompt:
    terraform apply
  1. Rimuovi le risorse applicate in precedenza con la configurazione Terraform eseguendo il seguente comando e inserendo yes al prompt:

    terraform destroy

REST v1

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: l'ID o il numero di progetto del progetto Cloud de Confiance che contiene l'istanza
  • INSTANCE_NAME: il nome dell'istanza principale o di replica di lettura che stai configurando per l'alta affidabilità
  • 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,
      "binaryLogEnabled": true
    }
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

REST v1beta4

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: l'ID o il numero di progetto del progetto Cloud de Confiance che contiene l'istanza
  • INSTANCE_NAME: il nome dell'istanza principale o di replica di lettura che stai configurando per l'alta affidabilità
  • START_TIME: l'ora (in ore e minuti)

Metodo HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

Corpo JSON della richiesta:

{
  "settings":
  {
    "backupConfiguration":
    {
      "startTime": "START_TIME",
      "enabled": true,
      "binaryLogEnabled": true
    }
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Disabilita PITR

Console

  1. Nella console Cloud de Confiance , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Apri il menu Azioni Icona Altre azioni. per l'istanza che vuoi disattivare e seleziona Modifica.
  3. In Personalizza la tua istanza, espandi la sezione Protezione dei dati.
  4. Deseleziona Abilita recupero point-in-time.
  5. Fai clic su Salva.

gcloud

  1. Disattiva il recupero point-in-time:
    gcloud sql instances patch INSTANCE_NAME \
    --no-enable-bin-log
  2. Conferma la modifica:
    gcloud sql instances describe INSTANCE_NAME

    Nella sezione backupConfiguration, viene visualizzato binaryLogEnabled: false se la modifica è andata a buon fine.

REST v1

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • 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,
      "binaryLogEnabled": false
    }
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

REST v1beta4

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • 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,
      "binaryLogEnabled": false
    }
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Imposta la conservazione dei log delle transazioni

Per impostare il numero di giorni di conservazione dei log binari:

Console

  1. Nella console Cloud de Confiance , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Apri il menu Altre azioni Icona Altre azioni. per l'istanza su cui vuoi impostare il log delle transazioni e seleziona Modifica.
  3. In Personalizza la tua istanza, espandi la sezione Protezione dei dati.
  4. Nella sezione Abilita recupero point-in-time, espandi Opzioni avanzate.
  5. Inserisci il numero di giorni per la conservazione dei log, da 1 a 35 per la versione Cloud SQL Enterprise Plus o da 1 a 7 per la versione Cloud SQL Enterprise.
  6. Fai clic su Salva.

gcloud

Modifica l'istanza per impostare il numero di giorni di conservazione dei log binari.

Sostituisci quanto segue:

  • INSTANCE_NAME: il nome dell'istanza per la quale vuoi 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 Cloud SQL Enterprise, l'intervallo valido è compreso tra 1 e 7 giorni, con un valore predefinito di 7 giorni.

    Se non specifichi un valore, Cloud SQL utilizza il valore predefinito. Questo è valido solo quando il PITR è abilitato. La conservazione di più giorni di log delle transazioni richiede uno spazio di archiviazione maggiore.

  gcloud sql instances patch INSTANCE_NAME 
--retained-transaction-log-days=DAYS_TO_RETAIN

REST v1

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: l'ID progetto
  • INSTANCE_ID: l'ID istanza.
  • DAYS_TO_RETAIN: il numero di giorni per cui conservare i log delle transazioni. Per la versione Cloud SQL Enterprise Plus, l'intervallo valido è compreso tra 1 e 35 giorni, con un valore predefinito di 14 giorni. Per Cloud SQL Enterprise, l'intervallo valido è compreso tra 1 e 7 giorni, con un valore predefinito di 7 giorni.

    Se non viene specificato alcun valore, viene utilizzato il valore predefinito. Questo è valido solo quando il PITR è abilitato. La conservazione dei log delle transazioni per un numero maggiore di giorni richiede uno spazio di archiviazione più grande.

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 di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

REST v1beta4

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: l'ID progetto
  • INSTANCE_ID: l'ID istanza.
  • DAYS_TO_RETAIN: il numero di giorni per cui conservare i log delle transazioni. Per la versione Cloud SQL Enterprise Plus, l'intervallo valido è compreso tra 1 e 35 giorni, con un valore predefinito di 14 giorni. Per Cloud SQL Enterprise, l'intervallo valido è compreso tra 1 e 7 giorni, con un valore predefinito di 7 giorni.

    Se non viene specificato alcun valore, viene utilizzato il valore predefinito. Questo è valido solo quando il PITR è abilitato. La conservazione dei log delle transazioni per un numero maggiore di giorni richiede uno spazio di archiviazione più grande.

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 di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Controlla la località di archiviazione dei log delle transazioni utilizzati per il PITR

Puoi controllare dove l'istanza Cloud SQL archivia i log delle transazioni utilizzati per il PITR.

gcloud

Per determinare se l'istanza archivia i log per il PITR su disco o su Cloud Storage, utilizza il seguente comando:

   gcloud sql instances describe INSTANCE_NAME
   

Sostituisci INSTANCE_NAME con il nome dell'istanza.

Per più istanze nello stesso progetto, puoi anche controllare la località di archiviazione dei log delle transazioni. Per determinare la località di più istanze, utilizza il seguente comando:

   gcloud sql instances list --show-transactional-log-storage-state
   

Esempio di risposta:

NAME  DATABASE_VERSION LOCATION       TRANSACTIONAL_LOG_STORAGE_STATE
my_01 MYSQL_8_0        us-central-1     DISK
my_02 MYSQL_8_0        us-central-1     CLOUD_STORAGE
...
   

Nell'output del comando, il campo transactionalLogStorageState o la colonna TRANSACTIONAL_LOG_STORAGE_STATE fornisce informazioni su dove sono archiviati i log delle transazioni per il PITR per l'istanza. Gli stati di archiviazione del log delle transazioni possibili sono i seguenti:

  • DISK: l'istanza archivia i log delle transazioni utilizzati per il PITR sul disco. Se esegui l'upgrade di un'istanza Cloud SQL Enterprise alla versione Cloud SQL Enterprise Plus, il processo di upgrade cambia automaticamente la località di archiviazione dei log in Cloud Storage. Per saperne di più, consulta Esegui l'upgrade di un'istanza alla versione Cloud SQL Enterprise Plus utilizzando l'upgrade sul posto. Puoi anche scegliere di cambiare la località di archiviazione utilizzando gcloud CLI o l'API Cloud SQL Admin senza eseguire l'upgrade della versione dell'istanza e senza tempi di inattività. Per saperne di più, consulta Cambia lo spazio di archiviazione dei log delle transazioni in Cloud Storage.
  • SWITCHING_TO_CLOUD_STORAGE: l'istanza sta cambiando la località di archiviazione dei log delle transazioni PITR in Cloud Storage.
  • SWITCHED_TO_CLOUD_STORAGE: l'istanza ha completato il cambio della località di archiviazione per i log delle transazioni PITR dal disco a Cloud Storage.
  • CLOUD_STORAGE: l'istanza archivia i log delle transazioni utilizzati per il PITR in Cloud Storage.

Cambia lo spazio di archiviazione del log delle transazioni in Cloud Storage

Se l'istanza archivia i log delle transazioni utilizzati per il PITR su disco, puoi cambiare la località di archiviazione in Cloud Storage senza tempi di inattività. Il processo complessivo di modifica della località di archiviazione richiede circa la durata del periodo di conservazione del log delle transazioni (giorni) per essere completato. Non appena avvii il passaggio, i log delle transazioni iniziano ad accumularsi in Cloud Storage. Durante l'operazione, puoi controllare lo stato del processo complessivo utilizzando il comando in Controlla la località di archiviazione dei log delle transazioni utilizzati per il PITR.

Una volta completato il processo complessivo di passaggio a Cloud Storage, Cloud SQL utilizza i log delle transazioni di Cloud Storage per il PITR.

gcloud

Per cambiare la località di archiviazione in Cloud Storage, utilizza il seguente comando:

   gcloud sql instances patch INSTANCE_NAME \
      --switch-transaction-logs-to-cloud-storage
   

Sostituisci INSTANCE_NAME con il nome dell'istanza. L'istanza deve essere un'istanza principale e non un'istanza di replica. La risposta è simile alla seguente:

The following message is used for the patch API method.
{"name": "INSTANCE_NAME", "project": "PROJECT_NAME", "switchTransactionalLogsToCloudStorageEnabled": "true"}

Patching Cloud SQL instance...done.
Updated
[https://sqladmin.prod.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME].
   

Se il comando restituisce un errore, consulta Risolvi i problemi relativi al passaggio a Cloud Storage per i possibili passaggi successivi.

REST v1

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: l'ID progetto
  • INSTANCE_ID: l'ID istanza. L'istanza deve essere un'istanza principale e non un'istanza di replica.

Metodo HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON della richiesta:

{
   "switchTransactionLogsToCloudStorageEnabled": true
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Se la richiesta restituisce un errore, consulta Risolvi i problemi relativi al passaggio a Cloud Storage per i possibili passaggi successivi.

REST v1beta4

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: l'ID progetto
  • INSTANCE_ID: l'ID istanza. L'istanza deve essere un'istanza principale e non un'istanza di replica.

Metodo HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON della richiesta:

{
   "switchTransactionLogsToCloudStorageEnabled": true
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Se la richiesta restituisce un errore, consulta Risolvi i problemi relativi al passaggio a Cloud Storage per i possibili passaggi successivi.

Archiviazione e configurazione del log delle transazioni dopo il passaggio

Ai fini della replica, Cloud SQL conserva comunque copie dei log binari sul disco.

Se vuoi sfogliare i log binari con l'utilità mysqlbinlog, è utile archiviarli su disco.

Se hai configurato i flag expire_logs_days o binlog_expire_logs_seconds nell'istanza prima del passaggio, i valori configurati rimangono invariati.

Dopo il passaggio, poiché i log binari utilizzati per eseguire il PITR sono ora archiviati in Cloud Storage, assicurati che i valori dei flag riflettano la conservazione dei log delle transazioni su disco che ti aspetti. Cloud SQL conserva i log su disco solo per il valore minimo di uno dei seguenti:

  • l'impostazione di configurazione PITR transactionLogRetentionDays prima del passaggio. Il valore predefinito di questa impostazione è 7 giorni.
  • i flag expire_logs_days o binlog_expire_logs_seconds che imposti manualmente sull'istanza.

Se vuoi risparmiare spazio su disco, una volta completato il processo di passaggio, configura il valore dei flag expire_logs_days o binlog_expire_logs_seconds su 1 giorno per ridurre le dimensioni del disco allocate e i costi di archiviazione su disco. Per saperne di più sullo spazio di archiviazione dei log delle transazioni e sul PITR, consulta Spazio di archiviazione dei log per il PITR.

Per saperne di più su come controllare l'utilizzo del disco, consulta Log e utilizzo del disco.

Risolvi i problemi relativi al passaggio a Cloud Storage

La tabella seguente elenca i possibili errori che potrebbero essere restituiti con il codice INVALID REQUEST quando cambi la località di archiviazione dei log delle transazioni da disco a Cloud Storage.

Problema Risoluzione dei problemi
Switching the storage location of the transaction logs used for PITR is not supported for instances with database type %s. Assicurati di eseguire il comando gcloud CLI o di effettuare la richiesta API su un'istanza Cloud SQL per MySQL o Cloud SQL per PostgreSQL. La modifica della località di archiviazione dei log delle transazioni utilizzando gcloud CLI o l'API Cloud SQL Admin non è supportata per Cloud SQL per SQL Server.
MySQL transactional logging is not enabled on this instance. MySQL utilizza il logging binario come log delle transazioni per il recupero point-in-time (PITR). Per supportare il PITR, MySQL richiede l'abilitazione del logging binario nell'istanza. Per saperne di più su come abilitare il logging binario, consulta Abilita PITR.
This command is not supported on replica instances. Run the command on the primary instance instead. Assicurati di specificare un'istanza principale quando esegui il comando o effettui la richiesta API.
This instance is already storing transaction logs used for PITR in Cloud Storage Per verificare la località di archiviazione dei log delle transazioni, esegui il comando in Controlla la località di archiviazione dei log delle transazioni utilizzati per il PITR.
The instance is already switching transaction logs used for PITR from disk to Cloud Storage.

Attendi il completamento dell'operazione di cambio.

Per verificare lo stato dell'operazione e la località di archiviazione dei log delle transazioni, esegui il comando in Controlla la località di archiviazione dei log delle transazioni utilizzati per il PITR.

Passaggi successivi