Utilizzare il recupero point-in-time (PITR)

Questa pagina descrive come utilizzare il recupero point-in-time (PITR) per ripristinare l'istanza Cloud SQL principale.

Per scoprire di più sul PITR, consulta Recupero point-in-time (PITR).

Spazio di archiviazione dei log per PITR

Il 31 maggio 2024 abbiamo lanciato l'archiviazione dei log delle transazioni per il PITR in Cloud Storage. Da questo lancio, si applicano le seguenti condizioni:

  • Tutte le istanze Cloud SQL create con il PITR abilitato prima di questa data archiviano su disco i log delle transazioni utilizzati per il PITR.

  • Tutte le istanze Cloud SQL create con il PITR abilitato a partire da questa data archiviano questi log in Cloud Storage.

I log delle transazioni vengono aggiornati regolarmente e utilizzano spazio di archiviazione. Cloud SQL elimina automaticamente i log delle transazioni con i relativi backup automatici associati. Ciò avviene dopo che è stato raggiunto il valore impostato per il parametro transactionLogRetentionDays. Per ulteriori informazioni su questo parametro, vedi Log e utilizzo del disco.

Per le istanze che archiviano i log delle transazioni solo su disco, puoi configurare Cloud SQL in modo che li archivi su Cloud Storage disattivando prima il PITR e riattivandolo poi. Non puoi spostare i log da Cloud Storage sul disco.

Per assicurarti che i log per l'istanza vengano archiviati in Cloud Storage anziché sul disco, completa le seguenti azioni:

Log e utilizzo del disco

Per le istanze con log delle transazioni archiviati in Cloud Storage, i log vengono 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.

Cloud SQL genera regolarmente log delle transazioni che utilizzano spazio di archiviazione. Cloud SQL elimina automaticamente i log delle transazioni con i relativi backup automatici associati. Ciò avviene dopo che è stato raggiunto il valore impostato per il parametro transactionLogRetentionDays. Questo parametro specifica il numero di giorni per cui Cloud SQL conserva i log delle transazioni. Per la versione Cloud SQL Enterprise Plus, puoi impostare il numero di giorni dei log delle transazioni conservati da 1 a 35 e, per la versione Cloud SQL Enterprise, puoi impostare questo valore da 1 a 7.

Per scoprire quanto spazio su disco viene utilizzato dai log delle transazioni, controlla la metrica bytes_used_by_data_type per l'istanza. Il valore per il tipo di dati restituisce le dimensioni dei log delle transazioni sul disco. Per le istanze che archiviano i log delle transazioni utilizzati per il PITR sul disco, Cloud SQL esegue la pulizia dei dati dal disco ogni giorno per soddisfare l'impostazione transactionLogRetentionDays PITR, come descritto in Conservazione dei backup automatici.

Se per l'istanza è abilitato il PITR e le dimensioni dei log delle transazioni su disco stanno causando un problema:

  • Puoi disattivare il PITR e riattivarlo per assicurarti che i log vengano archiviati in Cloud Storage nella stessa regione dell'istanza. Tuttavia, tutti i log esistenti vengono eliminati, pertanto non puoi eseguire un ripristino point-in-time precedente al momento in cui hai riattivato il PITR.
  • Puoi aumentare le dimensioni dello spazio di archiviazione dell'istanza, ma l'aumento delle dimensioni del log delle transazioni nell'utilizzo del disco potrebbe essere temporaneo.
  • Ti consigliamo di attivare gli incrementi automatici dello spazio di archiviazione per evitare problemi di archiviazione imprevisti. Questo consiglio si applica solo se nell'istanza è attivato il PITR e i log sono archiviati su disco.
  • Se vuoi eliminare i log e recuperare spazio di archiviazione, puoi disattivare la copia incrementale a livello di blocco senza riattivarla. Tuttavia, la riduzione dello spazio di archiviazione utilizzato non riduce le dimensioni del disco di cui è stato eseguito il provisioning per l'istanza.
  • I log vengono eliminati una volta al giorno, non continuamente. Se imposti la conservazione dei log su due giorni, vengono conservati almeno due giorni di log e al massimo tre giorni di log. Ti consigliamo di impostare il numero di backup su un valore superiore ai giorni di conservazione dei log.

    Ad esempio, se specifichi 7 per il valore del parametro transactionLogRetentionDays, imposta il numero di retainedBackups su 8 per il parametro backupRetentionSettings.

Per ulteriori informazioni sul PITR, consulta Recupero point-in-time (PITR).

Modello di recupero del database per PITR

Quando attivi il recupero point-in-time (PITR) su un'istanza, Cloud SQL imposta automaticamente il modello di recupero dei database esistenti e successivi sul modello di recupero completo.

Per ulteriori informazioni sui modelli di recupero di SQL Server, consulta la documentazione di Microsoft.

Attivare PITR

Quando crei una nuova istanza nella console Google Cloud, l'impostazione Backup automatici viene attivata automaticamente.

La procedura riportata di seguito consente di attivare il PITR su un'istanza principale esistente.

Console

  1. Nella console Google Cloud, 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 la copia incrementale del piano di recupero 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 per conservare i 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 nella sezione backupConfiguration viene visualizzato enabled: false, attiva i backup pianificati:
    gcloud sql instances patch INSTANCE_NAME \
    --backup-start-time=HH:MM

    Specifica il parametro backup-start-time utilizzando l'ora su 24 ore nel fuso orario UTC±00.

  3. Attiva PITR:
    gcloud sql instances patch INSTANCE_NAME \
    --enable-point-in-time-recovery

    Se attivi la PITR su un'istanza principale, puoi anche configurare il numero di giorni per i quali 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, vedrai pointInTimeRecoveryEnabled: true se la modifica è andata a buon fine.

REST v1

Prima di utilizzare i dati della richiesta, apporta 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 della 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 di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

REST v1beta4

Prima di utilizzare i dati della richiesta, apporta 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 della 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 di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Esegui PITR

Console

  1. Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Apri il menu Altre azioni Icona Altre azioni. per l'istanza che vuoi recuperare e fai clic su Crea clone.
  3. (Facoltativo) Nella pagina Crea un clone, aggiorna l'ID del nuovo clone.
  4. Seleziona Clona da un momento specifico precedente.
  5. Inserisci un'ora PITR.
  6. Seleziona Tutti i database o specifica il nome di un database.
    Se specifichi un nome di database, puoi selezionarne uno solo. Per impostazione predefinita, il PITR è per tutti i database.
  7. Fai clic su Crea clone.

gcloud

Crea un clone utilizzando il PITR.

Sostituisci quanto segue:

  • SOURCE_INSTANCE_NAME: il nome dell'istanza da cui eseguire il ripristino.
  • NEW_INSTANCE_NAME: il nome del clone.
  • TIMESTAMP - Fuso orario UTC per l'istanza di origine in formato RFC 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, apporta le seguenti sostituzioni:

  • project-id: l'ID progetto
  • target-instance-id: l'ID istanza di destinazione
  • source-instance-id: l'ID istanza dell'origine
  • restore-timestamp Il punto nel tempo fino al quale eseguire il ripristino

Nella richiesta JSON, facoltativamente puoi specificare fino a un nome di database specifico come segue: "databaseNames": "my-database"

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

Dovresti ricevere una risposta JSON simile alla seguente:

REST v1beta4

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

  • project-id: l'ID progetto
  • target-instance-id: l'ID istanza di destinazione
  • source-instance-id: l'ID istanza dell'origine
  • restore-timestamp Il punto nel tempo fino al quale eseguire il ripristino

Nella richiesta JSON, facoltativamente puoi specificare fino a un nome di database specifico come segue: "databaseNames": "my-database"

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

Dovresti ricevere una risposta JSON simile alla seguente:

Disattivare PITR

Console

  1. Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Apri il menu Altre 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-point-in-time-recovery
  2. Conferma la modifica:
    gcloud sql instances describe INSTANCE_NAME

    Nella sezione backupConfiguration, vedrai pointInTimeRecoveryEnabled: false se la modifica è andata a buon fine.

REST v1

Prima di utilizzare i dati della richiesta, apporta 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 di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

REST v1beta4

Prima di utilizzare i dati della richiesta, apporta 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 di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Controlla la posizione di archiviazione dei log delle transazioni utilizzati per la copia incrementale in tempo reale

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

gcloud

Per determinare se l'istanza memorizza 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.

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

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

Risposta di esempio:

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
...
   

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

  • DISK: l'istanza memorizza i log delle transazioni utilizzati per il PITR sul disco.
  • CLOUD_STORAGE: l'istanza memorizza i log delle transazioni utilizzati per il PITR in Cloud Storage.

Imposta la conservazione dei log delle transazioni

Per impostare il numero di giorni per la conservazione dei log delle transazioni:

Console

  1. Nella console Google Cloud, 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 il recupero point-in-time, espandi Opzioni avanzate.
  5. Inserisci il numero di giorni per conservare i 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 per cui conservare i log delle transazioni.

Sostituisci quanto segue:

  • INSTANCE_NAME: il nome dell'istanza su cui vuoi impostare il log delle transazioni.
  • DAYS_TO_RETAIN: il numero di giorni di log delle transazioni da conservare. Per la versione Enterprise Plus di Cloud SQL, l'intervallo valido è compreso tra 1 e 35 giorni, con un valore predefinito di 14 giorni. Per la versione Enterprise di Cloud SQL, 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. Questo è valido solo se è attivata la copia incrementale differenziale. Conservare più giorni di log delle transazioni richiede una dimensione dello 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 seguenti sostituzioni:

  • PROJECT_ID: l'ID progetto.
  • INSTANCE_ID: l'ID istanza.
  • DAYS_TO_RETAIN: il numero di giorni per conservare i log delle transazioni. Per la versione Enterprise Plus di Cloud SQL, l'intervallo valido è compreso tra 1 e 35 giorni, con un valore predefinito di 14 giorni. Per la versione Enterprise di Cloud SQL, 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 se è attivata la copia incrementale differenziale. Conservare più giorni di log delle transazioni richiede uno spazio di archiviazione maggiore.

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 seguenti sostituzioni:

  • PROJECT_ID: l'ID progetto.
  • INSTANCE_ID: l'ID istanza.
  • DAYS_TO_RETAIN: il numero di giorni per conservare i log delle transazioni. Per la versione Enterprise Plus di Cloud SQL, l'intervallo valido è compreso tra 1 e 35 giorni, con un valore predefinito di 14 giorni. Per la versione Enterprise di Cloud SQL, 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 se è attivata la copia incrementale differenziale. Conservare più giorni di log delle transazioni richiede uno spazio di archiviazione maggiore.

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:

Risoluzione dei problemi

Problema Risoluzione dei problemi

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

OPPURE

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

Il timestamp che hai fornito non è valido.

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

OPPURE

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

Il timestamp che hai fornito si riferisce a un momento in cui non è stato possibile trovare i backup o le coordinate del file binlog.

Passaggi successivi