Esegui il recupero point-in-time (PITR)

Puoi utilizzare il recupero point-in-time (PITR) per ripristinare le istanze Cloud SQL principali, indipendentemente dal fatto che siano attive o eliminate. Il PITR consente di ripristinare l'istanza in un momento specifico. Un recupero point-in-time crea sempre una nuova istanza; non puoi eseguire un PITR su un'istanza esistente.

Cloud SQL offre le seguenti opzioni per ripristinare l'istanza utilizzando il PITR:

Per eseguire un PITR su un'istanza non disponibile o eliminata, devi trovare il tempo di recupero più recente e quello più remoto.

Esegui un PITR utilizzando un timestamp

L'utilizzo di un timestamp è l'approccio consigliato per eseguire un PITR. Cloud SQL utilizza l'utilità mysqlbinlog per ripristinare le istanze fino a un momento specifico. Per ulteriori informazioni sull'utilità mysqlbinlog, consulta la documentazione di riferimento di MySQL.

Per completare la seguente attività, devi disporre di quanto segue:

  • Logging binario e backup abilitati per l'istanza, con log binari continui dall'ultimo backup prima dell'evento da cui vuoi eseguire il recupero. Per saperne di più, consulta Abilita il logging binario.
  • Un timestamp per definire il punto di recupero. Gli eventi che si verificano in corrispondenza e dopo questo timestamp non vengono riflessi nella nuova istanza.

Console

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

    Vai a Istanze Cloud SQL

  2. Apri il menu Azioni Icona Altre azioni. per l'istanza che vuoi recuperare e fai clic su Crea clone.
  3. Facoltativamente, nella pagina Crea un clone, aggiorna l'ID del nuovo clone.
  4. Seleziona Clona da un momento specifico precedente.
  5. Inserisci un'ora per il PITR.
  6. Fai clic su Crea clone.

gcloud

Crea un clone utilizzando il PITR.

Sostituisci quanto segue:

  • SOURCE_INSTANCE_NAME: il nome dell'istanza da cui stai eseguendo il ripristino.
  • NEW_INSTANCE_NAME: il nome del clone.
  • TIMESTAMP: il fuso orario UTC per l'istanza di origine nel 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 sostituzioni seguenti:

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

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

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

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:

Esegui un PITR utilizzando il vault di backup

Se l'istanza Cloud SQL è abilitata per l'utilizzo dei backup avanzati, puoi eseguire il recupero point-in-time per l'istanza utilizzando il vault di backup.

Console

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

    Vai a Istanze Cloud SQL

  2. Apri il menu Azioni Icona Altre azioni. per l'istanza che vuoi recuperare e fai clic su Crea clone.

  3. Seleziona Clona da un momento specifico precedente.

  4. Inserisci un'ora per il PITR.

  5. Fai clic su Crea clone.

gcloud

Per eseguire un PITR su un'istanza dal vault di backup, devi trovare il data-source per il backup più vicino all'ora in cui vuoi eseguire il PITR. Per trovare il backup, consulta Elenca tutti i backup nel vault di backup per un'istanza. Una volta identificato il backup, esegui questo comando per eseguire il PITR:

gcloud sql instances point-in-time-restore DATA_SOURCE \
    TARGET_INSTANCE_NAME \
    'PITR_TIMESTAMP' \
    --project=TARGET_PROJECT \
    --region=REGION

Sostituisci quanto segue:

  • DATA_SOURCE: il percorso di data-source per l'istanza di origine più vicina al timestamp PITR in cui vuoi eseguire il recupero.
  • TARGET_INSTANCE_NAME: il nome della nuova istanza creata dall'operazione PITR.
  • PITR_TIMESTAMP: il timestamp UTC del log PITR dell'istanza di origine in cui vuoi ripristinare l'istanza, in formato RFC 3339. Ad esempio, 2025-11-15T16:19:00.094Z.
  • TARGET_PROJECT: l'ID progetto della nuova istanza.
  • REGION: la regione dell'istanza target. Questo campo è obbligatorio se l'origine dati dell'istanza di origine si trova in una multi-regione. La regione dell'istanza target deve essere la stessa della regione dell'istanza di origine.

REST v1

Per eseguire il recupero point-in-time utilizzando un'origine dati dal vault di backup, utilizza il metodo instances.pointInTimeRestore con una richiesta POST.

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

  • PROJECT_ID: l'ID del progetto in cui vuoi creare la nuova istanza.
  • DATASOURCE: l'origine dati di Backup e RE che vuoi che il servizio utilizzi per l'operazione di ripristino point-in-time.
  • PITR_TIMESTAMP: il timestamp UTC del log PITR dell'istanza di origine in cui vuoi ripristinare l'istanza, in formato RFC 3339. Ad esempio, 2012-11-15T16:19:00.094Z.
  • TARGET_INSTANCE_NAME: il nome dell'istanza creata dall'operazione PITR.
  • REGION: la regione dell'istanza target. Questo campo è obbligatorio se l'origine dati dell'istanza di origine si trova in una multiregione. La regione dell'istanza target deve essere la stessa della regione dell'istanza di origine.

Metodo HTTP e URL:

POST https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID:pointInTimeRestore

Corpo JSON della richiesta:

{
  "datasource": "DATASOURCE",
  "pointInTime": "PITR_TIMESTAMP",
  "targetInstanceName": "TARGET_INSTANCE_NAME",
  "region": "REGION"
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

REST v1beta4

Per eseguire il recupero point-in-time utilizzando un'origine dati dal vault di backup, utilizza il metodo instances.pointInTimeRestore con una richiesta POST.

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

  • PROJECT_ID: l'ID del progetto in cui vuoi creare la nuova istanza.
  • DATASOURCE: l'origine dati di Backup e RE che vuoi che il servizio utilizzi per l'operazione di ripristino point-in-time.
  • PITR_TIMESTAMP: il timestamp UTC del log PITR dell'istanza di origine in cui vuoi ripristinare l'istanza, in formato RFC 3339. Ad esempio, 2012-11-15T16:19:00.094Z.
  • TARGET_INSTANCE_NAME: il nome dell'istanza creata dall'operazione PITR.
  • REGION: la regione dell'istanza target. Questo campo è obbligatorio se l'origine dati dell'istanza di origine si trova in una multiregione. La regione dell'istanza target deve essere la stessa della regione dell'istanza di origine.

Metodo HTTP e URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID:pointInTimeRestore

Corpo JSON della richiesta:

{
  "datasource": "DATASOURCE",
  "pointInTime": "PITR_TIMESTAMP",
  "targetInstanceName": "TARGET_INSTANCE_NAME",
  "region": "REGION"
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Esegui un PITR tra progetti

Con i backup avanzati, puoi ripristinare un'istanza Cloud SQL in un progetto diverso da quello in cui si trova l'istanza di origine o il vault di backup.

Il PITR tra progetti è supportato solo tramite l'interfaccia a riga di comando gcloud e le API REST.

Per eseguire un PITR tra progetti, esegui una delle seguenti operazioni:

  • Se utilizzi gcloud CLI, imposta il flag --project sul progetto in cui vuoi creare l'istanza target.

  • Se utilizzi le API REST, imposta il campo PROJECT_ID sul progetto in cui vuoi creare l'istanza target.

Esegui il PITR su un'istanza non disponibile

Console

Potresti voler recuperare un'istanza non disponibile in un'altra zona per i seguenti motivi:

  • La zona in cui è configurata l'istanza non è accessibile. Questa istanza ha uno stato FAILED.
  • L'istanza è in fase di manutenzione. Questa istanza ha uno stato MAINTENANCE.

Per recuperare un'istanza non disponibile, completa i seguenti passaggi:

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

    Vai a Istanze Cloud SQL

  2. Individua la riga dell'istanza da clonare.
  3. Nella colonna Azioni, fai clic sul menu Altre azioni.
  4. Fai clic su Crea clone.
  5. Nella pagina Crea un clone, completa le seguenti azioni:
    1. Nel campo ID istanza, aggiorna l'ID istanza, se necessario.
    2. Fai clic su Clona da un momento specifico precedente.
    3. Nel campo Momento, seleziona una data e un'ora da cui vuoi clonare i dati. In questo modo viene recuperato lo stato dell'istanza da quel momento.
    4. Fai clic su Crea clone.
  6. Durante l'inizializzazione del clone, tornerai alla pagina dell'elenco delle istanze.

gcloud

Potresti voler recuperare un'istanza non disponibile in una zona diversa perché la zona in cui è configurata l'istanza non è accessibile.

gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \
--point-in-time DATE_AND_TIME_STAMP \
--preferred-zone ZONE_NAME \
--preferred-secondary-zone SECONDARY_ZONE_NAME

L'utente o il account di servizio che esegue il comando gcloud sql instances clone deve disporre delle autorizzazioni cloudsql.instances.clone e cloudsql.instances.create. Per saperne di più sulle autorizzazioni richieste per eseguire i comandi di gcloud CLI, consulta Autorizzazioni di Cloud SQL.

REST v1

Potresti voler recuperare un'istanza non disponibile in una zona diversa perché la zona in cui è configurata l'istanza non è accessibile.

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

  • PROJECT_ID: l'ID progetto
  • SOURCE_INSTANCE_ID: l'ID dell'istanza di origine
  • TARGET_INSTANCE_ID: l'ID dell'istanza target

Metodo HTTP e URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone

Corpo JSON della richiesta:

{
  "cloneContext":
  {
    "destinationInstanceName": "TARGET_INSTANCE_ID"
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

L'utente o il account di servizio che utilizza il metodo API instances.clone deve disporre delle autorizzazioni cloudsql.instances.clone e cloudsql.instances.create. Per saperne di più sulle autorizzazioni necessarie per utilizzare i metodi API, consulta Autorizzazioni di Cloud SQL.

REST v1beta4

Potresti voler recuperare un'istanza non disponibile in una zona diversa perché la zona in cui è configurata l'istanza non è accessibile.

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

  • PROJECT_ID: l'ID progetto
  • SOURCE_INSTANCE_ID: l'ID dell'istanza di origine
  • TARGET_INSTANCE_ID: l'ID dell'istanza target

Metodo HTTP e URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone

Corpo JSON della richiesta:

{
  "cloneContext":
  {
    "destinationInstanceName": "TARGET_INSTANCE_ID"
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

L'utente o il account di servizio che utilizza il metodo API instances.clone deve disporre delle autorizzazioni cloudsql.instances.clone e cloudsql.instances.create. Per saperne di più sulle autorizzazioni necessarie per utilizzare i metodi API, consulta Autorizzazioni di Cloud SQL.

Se provi a creare un clone PITR in un momento successivo all'ultimo momento recuperabile, viene visualizzato il seguente messaggio di errore:

The timestamp for point-in-time recovery is after the latest recovery time of
Timestamp of latest recovery time. Clone the instance with a time
that's earlier than this recovery time.

Esegui il PITR su un'istanza eliminata

Per utilizzare il PITR per ripristinare un'istanza eliminata, devi:

  • il timestamp PITR (timestamp) in cui vuoi ripristinare l'istanza
  • il nome dell'istanza target
  • l'ora in cui l'istanza di origine è stata eliminata (source-instance-deletion-time)

Puoi utilizzare il PITR su un'istanza eliminata solo utilizzando gcloud CLI o l'API Cloud SQL. Per saperne di più, consulta Ripristina un'istanza eliminata utilizzando un PITR.

gcloud

Backup standard

Trova la finestra PITR

Per trovare la finestra PITR dell'istanza eliminata, recupera il tempo di recupero più recente e meno recente per l'istanza. Puoi selezionare qualsiasi timestamp in questa finestra per eseguire un PITR.

Trova l'eliminazione dell'istanza di origine

source-instance-deletion-time e log-retention-days dell'istanza eliminata vengono archiviati con i backup conservati per l'istanza dopo l'eliminazione. Per trovare un elenco di tutti i backup disponibili per l'istanza eliminata, consulta Elenca i backup conservati.

Una volta identificato il backup che vuoi utilizzare, usa il comando gcloud sql backups describe per ottenere il source-instance-deletion-time.

Ripristina utilizzando un PITR

Per ripristinare l'istanza eliminata utilizzando un PITR, esegui questo comando:

gcloud sql instances clone SOURCE_INSTANCE_NAME \
NEW_INSTANCE_NAME \
--point-in-time='PITR_TIMESTAMP' \
--source-instance-deletion-time=SOURCE_INSTANCE_DELETION_TIMESTAMP

Sostituisci quanto segue:

  • SOURCE_INSTANCE_NAME: il nome dell'istanza di origine che vuoi ripristinare.
  • NEW_INSTANCE_NAME: il nome della nuova istanza.
  • PITR_TIMESTAMP: il timestamp UTC del log PITR dell'istanza di origine in cui vuoi ripristinare l'istanza, in formato RFC 3339. Ad esempio, 2012-11-15T16:19:00.094Z.
  • SOURCE_INSTANCE_DELETION_TIMESTAMP: il timestamp UTC dell'ora in cui è stata eliminata l'istanza di origine, in formato RFC 3339. Ad esempio, 2012-11-15T16:19:00.094Z.

Backup avanzato

Trova la finestra PITR

Per trovare la finestra PITR dell'istanza eliminata, recupera il tempo di recupero più recente e meno recente per l'istanza. Puoi selezionare qualsiasi timestamp in questa finestra per eseguire un PITR.

Trova l'origine dati

L'origine dati dell'istanza eliminata viene archiviata con i backup conservati per l'istanza dopo l'eliminazione. Per trovare questi valori per l'istanza eliminata, consulta Elenca tutti i backup nel vault di backup per l'istanza.

Ripristina utilizzando un PITR

Per ripristinare l'istanza eliminata utilizzando un PITR, esegui questo comando:

gcloud sql instances point-in-time-restore DATA_SOURCE \
    TARGET_INSTANCE_NAME \
    'PITR_TIMESTAMP' \
    --project=TARGET_PROJECT \
    --region=REGION

Sostituisci quanto segue:

  • DATA_SOURCE: il percorso di data-source per il backup più vicino al timestamp PITR in cui vuoi eseguire il recupero.
  • TARGET_INSTANCE_NAME: il nome della nuova istanza creata dall'operazione PITR.
  • PITR_TIMESTAMP: il timestamp UTC del log PITR dell'istanza di origine in cui vuoi ripristinare l'istanza, in formato RFC 3339. Ad esempio, 2025-11-15T16:19:00.094Z.
  • TARGET_PROJECT: l'ID progetto della nuova istanza.
  • REGION: la regione dell'istanza target. Questo campo è obbligatorio se l'origine dati dell'istanza di origine si trova in una multi-regione. La regione dell'istanza target deve essere la stessa dell'istanza di origine.

REST v1

Trova la finestra PITR

Per trovare la finestra PITR dell'istanza eliminata, recupera il tempo di recupero più recente e meno recente per l'istanza. Puoi selezionare qualsiasi timestamp in questa finestra per eseguire un PITR.

Trova l'ora di eliminazione dell'istanza di origine e i giorni di conservazione dei log

source-instance-deletion-time e log-retention-days dell'istanza eliminata vengono archiviati con i backup conservati per l'istanza dopo l'eliminazione. Per trovare questi valori per l'istanza eliminata, consulta Elenca i backup conservati.

Ripristina utilizzando un PITR

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

  • project-id: l'ID progetto
  • target-instance-id: l'ID dell'istanza target
  • source-instance-id: l'ID dell'istanza di origine
  • source-instance-deletion-time: l'ora di eliminazione dell'istanza di origine
  • restore-timestamp il momento in cui vuoi ripristinare l'istanza

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",
    "sourceInstanceDeletionTime: "source-instance-deletion-time",
    "pointInTime": "restore-timestamp"
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

REST v1beta4

Trova la finestra PITR

Per trovare la finestra PITR dell'istanza eliminata, recupera il tempo di recupero più recente e meno recente per l'istanza. Puoi selezionare qualsiasi timestamp in questa finestra per eseguire il PITR.

Trova l'ora di eliminazione dell'istanza di origine e i giorni di conservazione dei log

source-instance-deletion-time e log-retention-days dell'istanza eliminata vengono archiviati con i backup conservati per l'istanza dopo l'eliminazione. Per trovare questi valori per l'istanza eliminata, consulta Elenca i backup conservati.

Ripristina utilizzando il PITR

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

  • project-id: l'ID progetto
  • target-instance-id: l'ID dell'istanza target
  • source-instance-id: l'ID dell'istanza di origine
  • source-instance-deletion-time: l'ora di eliminazione dell'istanza di origine
  • restore-timestamp il momento in cui vuoi ripristinare l'istanza

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",
    "sourceInstanceDeletionTime: "source-instance-deletion-time",
    "pointInTime": "restore-timestamp"
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Esegui un PITR utilizzando le posizioni dei log binari

Sebbene sia consigliabile eseguire il PITR utilizzando i timestamp, come descritto in Esegui il PITR utilizzando un timestamp, puoi anche eseguire il PITR fornendo una posizione specifica del log binario o dell'evento in un file di log binario.

Per saperne di più sul PITR che utilizza le posizioni dei log binari, consulta PITR utilizzando il log binario.

Prima di iniziare

Prima di completare questa attività, devi avere:

Identifica la posizione di sicurezza

  1. Utilizza il client MySQL per connetterti all'istanza in cui vuoi eseguire il ripristino.

    Per farlo, utilizza Cloud Shell o la tua macchina client locale. Per saperne di più, consulta Opzioni di connessione per le applicazioni esterne.

  2. Mostra i file di log binari per l'istanza:

    SHOW BINARY LOGS;
    
  3. Visualizza i primi 100 eventi nel file di log binario più recente:

    SHOW BINLOG EVENTS IN '<BINARY_LOG_FILE>' LIMIT 100;
    

    Puoi modificare il numero di righe da mostrare, ma non mostrare tutti gli eventi nel file finché non sai quanto è grande. La visualizzazione di un numero elevato di eventi può influire sulle prestazioni del sistema.

  4. Se l'evento che stai cercando non viene visualizzato, utilizza l'ultima posizione visualizzata come punto di partenza per cercare l'insieme di eventi successivo:

    SHOW BINLOG EVENTS IN '<BINARY_LOG_FILE>' FROM <POSITION> LIMIT 100;
    
  5. Quando trovi l'evento che contrassegna il momento fino al quale vuoi eseguire il ripristino, registra la posizione (mostrata come Pos) e il nome del file di log binario.

    Il nome file del log binario e la posizione sono i valori che utilizzi per il PITR.

Di seguito è riportato un output di esempio del comando SHOW BINLOG EVENTS:

+------------------+-----+-------------+-----------+-------------+-----------------------------------------------------+
| Log_name         | Pos | Event_type  | Server_id | End_log_pos | Info                                                |
+------------------+-----+-------------+-----------+-------------+-----------------------------------------------------+
| mysql-bin.000011 |   4 | Format_desc |  88955285 |         120 | Server ver: 5.6.30-log, Binlog ver: 4               |
| mysql-bin.000011 | 120 | Query       |  88955285 |         211 | create database db1                                 |
| mysql-bin.000011 | 211 | Query       |  88955285 |         310 | use `db1`; CREATE TABLE t (c CHAR(20))              |
| mysql-bin.000011 | 310 | Query       |  88955285 |         381 | BEGIN                                               |
| mysql-bin.000011 | 381 | Table_map   |  88955285 |         426 | table_id: 18 (db1.t)                                |
| mysql-bin.000011 | 310 | Query       |  88955285 |         381 | BEGIN                                               |

| mysql-bin.000011 | 426 | Write_rows  |  88955285 |         464 | table_id: 18 flags: STMT_END_F                      |
| mysql-bin.000011 | 464 | Xid         |  88955285 |         495 | COMMIT /* xid=56 */                                 |
| mysql-bin.000011 | 495 | Query       |  88955285 |         566 | BEGIN                                               |
| mysql-bin.000011 | 566 | Table_map   |  88955285 |         611 | table_id: 18 (db1.t)                                |
| mysql-bin.000011 | 611 | Write_rows  |  88955285 |         649 | table_id: 18 flags: STMT_END_F                      |
| mysql-bin.000011 | 649 | Xid         |  88955285 |         680 | COMMIT /* xid=57 */                                 |
| mysql-bin.000011 | 680 | Query       |  88955285 |         751 | BEGIN                                               |
| mysql-bin.000011 | 751 | Table_map   |  88955285 |         796 | table_id: 18 (db1.t)                                |
| mysql-bin.000011 | 796 | Write_rows  |  88955285 |         834 | table_id: 18 flags: STMT_END_F                      |
| mysql-bin.000011 | 834 | Xid         |  88955285 |         865 | COMMIT /* xid=58 */                                 |
| mysql-bin.000011 | 865 | Query       |  88955285 |         977 | use `db1`; DROP TABLE `t` /* generated by server */ |
+------------------+-----+-------------+-----------+-------------+-----------------------------------------------------+
16 rows in set (0.04 sec)

Per eseguire il ripristino fino all'istruzione DROP TABLE, in grassetto nell'esempio precedente, devi utilizzare 865 in mysql-bin.000011 come posizione di recupero. L'istruzione DROP TABLE e tutte le operazioni successive non vengono applicate alla nuova istanza.

Esegui il PITR utilizzando le posizioni degli eventi del log binario

gcloud

Utilizza il comando gcloud sql instances clone con i flag --bin-log-file-name e --bin-log-position.

  1. Crea la nuova istanza utilizzando il nome file del log binario e la posizione di recupero.

    Sostituisci quanto segue:

    • SOURCE_INSTANCE_NAME: il nome dell'istanza da cui stai eseguendo il ripristino.
    • NEW_INSTANCE_NAME: il nome del clone.
    • BINLOG_FILE_NAME: il nome del log binario, ad esempio mysql-bin.187288.
    • POSITION: la posizione nel log binario fino alla quale eseguire il ripristino, ad esempio 50001356.
    gcloud sql instances clone SOURCE_INSTANCE_NAME \
    NEW_INSTANCE_NAME \
    --bin-log-file-name="BINLOG_FILE_NAME" \
    --bin-log-position=POSITION

    Ad esempio, un comando gcloud sql instances clone potrebbe essere simile al seguente:

    gcloud sql instances clone instance1 \
    instance1-clone \
    --bin-log-file-name=mysql-bin.0000031 \
    --bin-log-position=107
  2. Utilizza l'ID operazione restituito dal comando clone per controllare lo stato dell'operazione di ripristino.
    gcloud sql operations describe OPERATION_ID

    Quando l'operazione è in corso, viene restituito lo stato RUNNING. Al termine dell'operazione, viene restituito lo stato DONE.

REST v1

Crea la nuova istanza utilizzando il nome file del log binario e la posizione di recupero che hai identificato:

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

  • project-id: l'ID progetto
  • target-instance-id: l'ID dell'istanza target
  • source-instance-id: l'ID dell'istanza di origine
  • binary-log-file-name Il nome del file di log binario
  • binary-log-position La posizione all'interno del file di log binario

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",
    "binLogCoordinates":
    {
      "kind": "sql#binLogCoordinates",
      "binLogFileName": "binary-log-file-name",
      "binLogPosition": "binary-log-position"
    }
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

REST v1beta4

Crea la nuova istanza utilizzando il nome file del log binario e la posizione di recupero che hai identificato:

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

  • project-id: l'ID progetto
  • target-instance-id: l'ID dell'istanza target
  • source-instance-id: l'ID dell'istanza di origine
  • binary-log-file-name Il nome del file di log binario
  • binary-log-position La posizione all'interno del file di log binario

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",
    "binLogCoordinates":
    {
      "kind": "sql#binLogCoordinates",
      "binLogFileName": "binary-log-file-name",
      "binLogPosition": "binary-log-position"
    }
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Ottenere il tempo di recupero più breve e più lungo

Per un'istanza disponibile, puoi eseguire un PITR su qualsiasi timestamp nella finestra PITR dell'istanza. La finestra PITR inizia al momento del recupero più recente e termina al momento del recupero più recente. Se l'istanza non è disponibile e i log dell'istanza sono archiviati in Cloud Storage o se l'istanza è stata eliminata e aveva la conservazione PITR abilitata, puoi recuperare l'ora di recupero più recente e quella più remota ed eseguire il PITR su qualsiasi timestamp in quella finestra. In tutti i casi, puoi ripristinare l'istanza in una zona principale o secondaria diversa fornendo i valori per le zone preferite.

gcloud

Istanza non disponibile

Per ottenere l'ora meno recente e più recente in cui puoi recuperare un'istanza Cloud SQL non disponibile, esegui questo comando:

gcloud sql instances get-latest-recovery-time INSTANCE_NAME

Sostituisci quanto segue:

  • INSTANCE_NAME: il nome dell'istanza per cui vuoi trovare l'ultimo tempo di recupero.

Istanza eliminata

Per ottenere l'ora più recente e quella più remota in cui puoi recuperare un'istanza Cloud SQL eliminata, esegui questo comando:

gcloud sql instances get-latest-recovery-time INSTANCE_NAME \
    --source-instance-deletion-time='SOURCE_INSTANCE_DELETION_TIMESTAMP'

Sostituisci quanto segue:

  • INSTANCE_NAME: il nome dell'istanza per cui vuoi trovare l'ultimo tempo di recupero.
  • SOURCE_INSTANCE_DELETION_TIMESTAMP: il timestamp UTC dell'ora in cui è stata eliminata l'istanza di origine, in formato RFC 3339. Ad esempio, 2012-11-15T16:19:00.094Z.

REST v1

Istanza non disponibile

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

  • PROJECT_ID: l'ID progetto
  • INSTANCE_NAME: il nome dell'istanza per cui stai eseguendo una query per l'ultimo tempo di recupero

Metodo HTTP e URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#getLatestRecoveryTime",
  "earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
  "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}

Istanza eliminata

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

  • PROJECT_ID: l'ID progetto
  • INSTANCE_NAME: il nome dell'istanza di origine per cui stai eseguendo una query per l'ultimo recovery time
  • SOURCE_INSTANCE_DELETION_TIME: l'ora in cui è stata eliminata l'istanza di origine

Metodo HTTP e URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#getLatestRecoveryTime",
  "earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
  "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}

REST v1beta4

Istanza non disponibile

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

  • PROJECT_ID: l'ID progetto
  • INSTANCE_NAME: il nome dell'istanza per cui stai eseguendo una query per l'ultimo tempo di recupero

Metodo HTTP e URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#getLatestRecoveryTime",
  "earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
  "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}

Istanza eliminata

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

  • PROJECT_ID: l'ID progetto
  • INSTANCE_NAME: il nome dell'istanza di origine per cui stai eseguendo una query per l'ultimo recovery time
  • SOURCE_INSTANCE_DELETION_TIME: l'ora in cui è stata eliminata l'istanza di origine

Metodo HTTP e URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#getLatestRecoveryTime",
  "earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
  "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}

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 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 fornito si riferisce a un momento in cui non è stato possibile trovare i backup o le coordinate del binlog.

Passaggi successivi