Effectuer une récupération à un moment précis (PITR)

Vous pouvez utiliser la récupération à un moment précis (PITR) pour restaurer vos instances Cloud SQL principales, qu'elles soient actives ou supprimées. La PITR vous permet de restaurer l'instance à un moment précis. Une récupération à un moment précis crée toujours une instance ; vous ne pouvez pas effectuer de récupération PITR sur une instance existante.

Cloud SQL propose les options suivantes pour restaurer votre instance à l'aide de la récupération PITR :

Pour effectuer une récupération PITR sur une instance indisponible ou supprimée, vous devez trouver l'heure de récupération la plus récente et la plus ancienne.

Effectuer une récupération PITR à l'aide d'un code temporel

L'utilisation d'un code temporel est l'approche recommandée pour effectuer une récupération PITR. Cloud SQL utilise l'utilitaire mysqlbinlog pour restaurer les instances à une heure précise. Pour en savoir plus sur l'utilitaire mysqlbinlog, consultez la documentation de référence MySQL.

Pour effectuer la tâche suivante, vous devez disposer des éléments suivants :

  • Journalisation binaire et sauvegardes de l'instance activées, avec journalisation binaire continue depuis la dernière sauvegarde précédant l'événement à partir duquel vous souhaitez effectuer la récupération. Pour en savoir plus, consultez la section Activer la journalisation binaire.
  • Horodatage permettant de définir le point de récupération. Les événements qui se produisent au moment et après cet horodatage ne sont pas reflétés dans la nouvelle instance.

Console

  1. Dans la console Google Cloud , accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Ouvrez le menu "Autres actions" Icône Plus pour l'instance que vous souhaitez récupérer, puis cliquez sur Créer un clone.
  3. Vous pouvez également mettre à jour l'ID du nouveau clone sur la page Créer un clone.
  4. Sélectionnez Cloner à partir d'un moment antérieur.
  5. Saisissez la date et l'heure de la récupération PITR.
  6. Cliquez sur Create clone (Créer un clone).

gcloud

Créez un clone à l'aide de la récupération PITR.

Remplacez les éléments suivants :

  • SOURCE_INSTANCE_NAME : nom de l'instance à partir de laquelle vous effectuez la restauration.
  • NEW_INSTANCE_NAME : nom du clone.
  • TIMESTAMP : fuseau horaire UTC de l'instance source au format RFC 3339. Exemple : 2012-11-15T16:19:00.094Z.
gcloud sql instances clone SOURCE_INSTANCE_NAME \
NEW_INSTANCE_NAME \
--point-in-time 'TIMESTAMP'

REST v1

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • project-id : ID du projet
  • target-instance-id : ID de l'instance cible
  • source-instance-id : ID de l'instance source
  • restore-timestamp : moment jusqu'auquel effectuer la restauration

Méthode HTTP et URL :

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone

Corps JSON de la requête :

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "pointInTime": "restore-timestamp"
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

REST v1beta4

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • project-id : ID du projet
  • target-instance-id : ID de l'instance cible
  • source-instance-id : ID de l'instance source
  • restore-timestamp : moment jusqu'auquel effectuer la restauration

Méthode HTTP et URL :

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone

Corps JSON de la requête :

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "pointInTime": "restore-timestamp"
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

Effectuer une récupération PITR à l'aide du coffre de sauvegarde

Si votre instance Cloud SQL est activée pour utiliser les sauvegardes améliorées, vous pouvez effectuer une récupération à un moment précis pour votre instance à l'aide du coffre de sauvegarde.

Console

  1. Dans la console Google Cloud , accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Ouvrez le menu "Autres actions" Icône Plus pour l'instance que vous souhaitez récupérer, puis cliquez sur Créer un clone.

  3. Sélectionnez Cloner à partir d'un moment antérieur.

  4. Saisissez la date et l'heure de la récupération PITR.

  5. Cliquez sur Create clone (Créer un clone).

gcloud

Pour effectuer une récupération PITR sur une instance à partir du coffre de sauvegarde, vous devez trouver l'élément data-source de la sauvegarde la plus proche de l'heure à laquelle vous souhaitez effectuer la récupération PITR. Pour trouver la sauvegarde, consultez Répertorier toutes les sauvegardes du coffre de sauvegarde d'une instance. Une fois que vous avez identifié la sauvegarde, exécutez la commande suivante pour effectuer la récupération PITR :

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

Remplacez les éléments suivants :

  • DATA_SOURCE : chemin d'accès du data-source de l'instance source le plus proche du code temporel de la récupération à un moment précis que vous souhaitez récupérer.
  • TARGET_INSTANCE_NAME : nom de la nouvelle instance créée par l'opération de récupération PITR.
  • PITR_TIMESTAMP : code temporel UTC du journal PITR de l'instance source vers lequel vous souhaitez restaurer votre instance, au format RFC 3339. Exemple : 2025-11-15T16:19:00.094Z.
  • TARGET_PROJECT : ID du projet pour la nouvelle instance.
  • REGION : région de l'instance cible. Ce champ est obligatoire si la source de données de l'instance source se trouve dans un emplacement multirégional. La région de l'instance cible doit être la même que celle de l'instance source.

REST v1

Pour effectuer une récupération à un moment précis à l'aide d'une source de données du coffre de sauvegarde, utilisez la méthode instances.pointInTimeRestore avec une requête POST.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet dans lequel vous souhaitez créer l'instance.
  • DATASOURCE : source de données Backup and DR que le service doit utiliser pour l'opération de restauration à un moment précis.
  • PITR_TIMESTAMP : code temporel UTC du journal PITR de l'instance source vers lequel vous souhaitez restaurer votre instance, au format RFC 3339. Exemple : 2012-11-15T16:19:00.094Z.
  • TARGET_INSTANCE_NAME : nom de l'instance créée par l'opération de récupération à un moment précis.
  • REGION : région de l'instance cible. Ce champ est obligatoire si la source de données de l'instance source se trouve dans un emplacement multirégional. La région de l'instance cible doit être la même que celle de l'instance source.

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

REST v1beta4

Pour effectuer une récupération à un moment précis à l'aide d'une source de données du coffre de sauvegarde, utilisez la méthode instances.pointInTimeRestore avec une requête POST.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet dans lequel vous souhaitez créer l'instance.
  • DATASOURCE : source de données Backup and DR que le service doit utiliser pour l'opération de restauration à un moment précis.
  • PITR_TIMESTAMP : code temporel UTC du journal PITR de l'instance source vers lequel vous souhaitez restaurer votre instance, au format RFC 3339. Exemple : 2012-11-15T16:19:00.094Z.
  • TARGET_INSTANCE_NAME : nom de l'instance créée par l'opération de récupération à un moment précis.
  • REGION : région de l'instance cible. Ce champ est obligatoire si la source de données de l'instance source se trouve dans un emplacement multirégional. La région de l'instance cible doit être la même que celle de l'instance source.

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

Effectuer une récupération PITR inter-projets

Avec les sauvegardes améliorées, vous pouvez restaurer une instance Cloud SQL dans un projet autre que celui où se trouve l'instance source ou le coffre de sauvegarde.

La récupération à un moment précis interprojets n'est possible qu'avec la gcloud CLI et les API REST.

Pour effectuer une récupération PITR multiprojet, effectuez l'une des opérations suivantes :

  • Si vous utilisez la gcloud CLI, définissez l'option --project sur le projet dans lequel vous souhaitez créer l'instance cible.

  • Si vous utilisez des API REST, définissez le champ PROJECT_ID sur le projet dans lequel vous souhaitez créer l'instance cible.

Effectuer une récupération PITR sur une instance indisponible

Console

Vous pouvez restaurer une instance indisponible dans une autre zone pour l'une des raisons suivantes :

  • La zone actuelle dans laquelle l'instance est configurée n'est pas accessible. L'état de cette instance est FAILED.
  • L'instance est en cours de maintenance. L'état de cette instance est MAINTENANCE.

Pour restaurer une instance indisponible, procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Recherchez la ligne de l'instance à cloner.
  3. Dans la colonne Actions, cliquez sur le menu Autres actions.
  4. Cliquez sur Create clone (Créer un clone).
  5. Sur la page Créer un clone, procédez comme suit :
    1. Dans le champ ID d'instance, mettez à jour l'ID d'instance si nécessaire.
    2. Cliquez sur Cloner l'instance à un moment antérieur.
    3. Dans le champ Moment précis, sélectionnez la date et l'heure à partir desquelles vous souhaitez cloner les données. Il est ainsi possible de récupérer l'état de l'instance à ce moment précis.
    4. Cliquez sur Créer un clone.
  6. Pendant l'initialisation du clone, vous êtes redirigé vers la page contenant la liste des instances.

gcloud

Vous pouvez restaurer une instance indisponible dans une autre zone, car la zone dans laquelle l'instance est configurée n'est pas accessible.

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'utilisateur ou le compte de service qui exécute la commande gcloud sql instances clone doit disposer des autorisations cloudsql.instances.clone et cloudsql.instances.create. Pour en savoir plus sur les autorisations requises pour exécuter des commandes gcloud CLI, consultez la page Autorisations Cloud SQL.

REST v1

Vous pouvez restaurer une instance indisponible dans une autre zone, car la zone dans laquelle l'instance est configurée n'est pas accessible.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet
  • SOURCE_INSTANCE_ID : ID de l'instance source
  • TARGET_INSTANCE_ID : ID de l'instance cible

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

L'utilisateur ou le compte de service qui utilise la méthode API instances.clone doit disposer des autorisations cloudsql.instances.clone et cloudsql.instances.create. Pour en savoir plus sur les autorisations requises pour utiliser des méthodes d'API, consultez Autorisations Cloud SQL.

REST v1beta4

Vous pouvez restaurer une instance indisponible dans une autre zone, car la zone dans laquelle l'instance est configurée n'est pas accessible.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet
  • SOURCE_INSTANCE_ID : ID de l'instance source
  • TARGET_INSTANCE_ID : ID de l'instance cible

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

L'utilisateur ou le compte de service qui utilise la méthode API instances.clone doit disposer des autorisations cloudsql.instances.clone et cloudsql.instances.create. Pour en savoir plus sur les autorisations requises pour utiliser des méthodes d'API, consultez Autorisations Cloud SQL.

Si vous essayez de créer un clone PITR à un moment postérieur à la dernière heure récupérable, le message d'erreur suivant s'affiche :

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.

Effectuer une récupération PITR sur une instance supprimée

Pour utiliser la récupération PITR afin de restaurer une instance supprimée, vous aurez besoin des éléments suivants :

  • Le code temporel PITR (timestamp) auquel vous souhaitez restaurer votre instance
  • le nom de l'instance cible ;
  • Heure de suppression de l'instance source (source-instance-deletion-time)

Vous ne pouvez utiliser la récupération PITR sur une instance supprimée qu'à l'aide de la gcloud CLI ou de l'API Cloud SQL. Pour en savoir plus, consultez Restaurer une instance supprimée à l'aide de la récupération à un moment précis (PITR).

gcloud

Sauvegarde standard

Trouver votre fenêtre de récupération PITR

Pour trouver la fenêtre de récupération PITR de votre instance supprimée, obtenez les heures de récupération la plus ancienne et la plus récente pour votre instance. Vous pouvez sélectionner n'importe quel code temporel dans cette fenêtre pour effectuer une récupération PITR.

Rechercher la suppression de l'instance source

Les valeurs source-instance-deletion-time et log-retention-days de l'instance supprimée sont stockées avec les sauvegardes conservées pour votre instance après la suppression. Pour obtenir la liste de toutes les sauvegardes disponibles pour votre instance supprimée, consultez Lister les sauvegardes conservées.

Une fois que vous avez identifié la sauvegarde que vous souhaitez utiliser, exécutez la commande gcloud sql backups describe pour obtenir l'source-instance-deletion-time.

Restaurer à l'aide d'une récupération PITR

Pour restaurer votre instance supprimée à l'aide d'une récupération à un moment précis (PITR), exécutez la commande suivante :

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

Remplacez les éléments suivants :

  • SOURCE_INSTANCE_NAME : nom de l'instance source que vous souhaitez restaurer.
  • NEW_INSTANCE_NAME : le nom de la nouvelle instance
  • PITR_TIMESTAMP : code temporel UTC du journal PITR de l'instance source vers lequel vous souhaitez restaurer votre instance, au format RFC 3339. Exemple : 2012-11-15T16:19:00.094Z.
  • SOURCE_INSTANCE_DELETION_TIMESTAMP : code temporel UTC de la suppression de l'instance source, au format RFC 3339. Exemple : 2012-11-15T16:19:00.094Z.

Sauvegarde améliorée

Trouver votre fenêtre de récupération PITR

Pour trouver la fenêtre de récupération PITR de votre instance supprimée, obtenez les heures de récupération la plus ancienne et la plus récente pour votre instance. Vous pouvez sélectionner n'importe quel code temporel dans cette fenêtre pour effectuer une récupération à un moment précis.

Trouver la source de données

La source de données de l'instance supprimée est stockée avec les sauvegardes conservées pour votre instance après la suppression. Pour trouver ces valeurs pour votre instance supprimée, consultez Répertorier toutes les sauvegardes du coffre de sauvegarde de votre instance.

Restaurer à l'aide d'une récupération PITR

Pour restaurer votre instance supprimée à l'aide d'une récupération à un moment précis (PITR), exécutez la commande suivante :

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

Remplacez les éléments suivants :

  • DATA_SOURCE : chemin d'accès de data-source pour la sauvegarde la plus proche du code temporel PITR vers lequel vous souhaitez effectuer la récupération.
  • TARGET_INSTANCE_NAME : nom de la nouvelle instance créée par l'opération de récupération PITR.
  • PITR_TIMESTAMP : code temporel UTC du journal PITR de l'instance source vers lequel vous souhaitez restaurer votre instance, au format RFC 3339. Exemple : 2025-11-15T16:19:00.094Z.
  • TARGET_PROJECT : ID du projet pour la nouvelle instance.
  • REGION : région de l'instance cible. Ce champ est obligatoire si la source de données de l'instance source se trouve dans un emplacement multirégional. La région de l'instance cible doit être la même que celle de l'instance source.

REST v1

Trouver votre fenêtre de récupération PITR

Pour trouver la fenêtre de récupération PITR de votre instance supprimée, obtenez les heures de récupération la plus ancienne et la plus récente pour votre instance. Vous pouvez sélectionner n'importe quel code temporel dans cette fenêtre pour effectuer une récupération à un moment précis.

Trouver l'heure de suppression de l'instance source et le nombre de jours de conservation des journaux

Les valeurs source-instance-deletion-time et log-retention-days de l'instance supprimée sont stockées avec les sauvegardes conservées pour votre instance après la suppression. Pour trouver ces valeurs pour votre instance supprimée, consultez Lister les sauvegardes conservées.

Restaurer à l'aide d'une récupération PITR

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • project-id : ID du projet
  • target-instance-id : ID de l'instance cible
  • source-instance-id : ID de l'instance source
  • source-instance-deletion-time : heure de suppression de l'instance source
  • restore-timestamp : moment auquel vous souhaitez restaurer l'instance

Méthode HTTP et URL :

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone

Corps JSON de la requête :

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "sourceInstanceDeletionTime: "source-instance-deletion-time",
    "pointInTime": "restore-timestamp"
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

REST v1beta4

Trouver votre fenêtre de récupération PITR

Pour trouver la fenêtre de récupération PITR de votre instance supprimée, obtenez les heures de récupération la plus ancienne et la plus récente pour votre instance. Vous pouvez sélectionner n'importe quel code temporel dans cette fenêtre pour effectuer une récupération PITR.

Trouver l'heure de suppression de l'instance source et le nombre de jours de conservation des journaux

Les valeurs source-instance-deletion-time et log-retention-days de l'instance supprimée sont stockées avec les sauvegardes conservées pour votre instance après la suppression. Pour trouver ces valeurs pour votre instance supprimée, consultez Lister les sauvegardes conservées.

Restaurer à l'aide de la récupération PITR

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • project-id : ID du projet
  • target-instance-id : ID de l'instance cible
  • source-instance-id : ID de l'instance source
  • source-instance-deletion-time : heure de suppression de l'instance source
  • restore-timestamp : moment auquel vous souhaitez restaurer l'instance

Méthode HTTP et URL :

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone

Corps JSON de la requête :

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "sourceInstanceDeletionTime: "source-instance-deletion-time",
    "pointInTime": "restore-timestamp"
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

Effectuer une récupération PITR à l'aide des positions dans les journaux binaires

Bien que nous vous recommandions d'effectuer la récupération PITR à l'aide des codes temporels, comme décrit dans la section Effectuer une récupération PITR à l'aide d'un code temporel, vous pouvez également procéder en indiquant une position spécifique dans un journal binaire ou une position d'événement dans un fichier journal binaire.

Pour en savoir plus sur la récupération PITR à l'aide des positions dans les journaux binaires, consultez la section Récupération PITR à l'aide du journal binaire.

Avant de commencer

Avant d'effectuer cette tâche, vous devez disposer des éléments suivants :

Identifier la position de récupération

  1. Utilisez le client MySQL pour vous connecter à l'instance que vous souhaitez restaurer.

    Pour ce faire, utilisez Cloud Shell ou votre ordinateur client local. Pour en savoir plus, consultez la page Options de connexion pour les applications externes.

  2. Affichez les fichiers journaux binaires de l'instance :

    SHOW BINARY LOGS;
    
  3. Affichez les 100 premiers événements dans le fichier journal binaire le plus récent :

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

    Vous pouvez ajuster le nombre de lignes à afficher, mais vous ne devez pas afficher tous les événements du fichier tant que vous ne connaissez pas la taille du fichier. L'affichage d'un grand nombre d'événements peut affecter les performances du système.

  4. Si l'événement que vous recherchez n'est pas affiché, utilisez la dernière position affichée comme point de départ pour rechercher la série d'événements suivante :

    SHOW BINLOG EVENTS IN '<BINARY_LOG_FILE>' FROM <POSITION> LIMIT 100;
    
  5. Une fois que vous avez trouvé l'événement qui marque le moment jusqu'auquel vous souhaitez restaurer, enregistrez la position (affichée dans la colonne Pos) et le nom du fichier journal binaire.

    Le nom du fichier journal binaire et la position vont vous permettre d'effectuer la récupération PITR.

Voici un exemple de résultat de la commande 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)

Pour restaurer jusqu'à l'instruction DROP TABLE, en gras dans l'exemple précédent, vous devez utiliser 865 dans mysql-bin.000011 comme position de récupération. L'instruction DROP TABLE et toutes les opérations qui la suivent ne sont pas reflétées dans la nouvelle instance.

Effectuer une récupération PITR à l'aide des positions d'événements dans les journaux binaires

gcloud

Exécutez la commande gcloud sql instances clone avec les options --bin-log-file-name et --bin-log-position.

  1. Créez la nouvelle instance en utilisant le nom du fichier journal binaire et la position de récupération.

    Remplacez les éléments suivants :

    • SOURCE_INSTANCE_NAME : nom de l'instance à partir de laquelle vous effectuez la restauration.
    • NEW_INSTANCE_NAME : nom du clone.
    • BINLOG_FILE_NAME : nom du journal binaire, par exemple mysql-bin.187288.
    • POSITION : position dans le journal binaire jusqu'à laquelle restaurer, par exemple 50001356.
    gcloud sql instances clone SOURCE_INSTANCE_NAME \
    NEW_INSTANCE_NAME \
    --bin-log-file-name="BINLOG_FILE_NAME" \
    --bin-log-position=POSITION

    Par exemple, une commande gcloud sql instances clone peut ressembler à ce qui suit :

    gcloud sql instances clone instance1 \
    instance1-clone \
    --bin-log-file-name=mysql-bin.0000031 \
    --bin-log-position=107
  2. Utilisez l'ID d'opération renvoyé par la commande clone pour vérifier l'état de l'opération de restauration.
    gcloud sql operations describe OPERATION_ID

    Pendant l'opération en cours, un état RUNNING est renvoyé. Une fois l'opération terminée, un état DONE est renvoyé.

REST v1

Créez la nouvelle instance en utilisant le nom du fichier journal binaire et la position de récupération que vous avez identifiés :

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • project-id : ID du projet
  • target-instance-id : ID de l'instance cible
  • source-instance-id : ID de l'instance source
  • binary-log-file-name : nom du fichier journal binaire
  • binary-log-position : position dans le fichier journal binaire

Méthode HTTP et URL :

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone

Corps JSON de la requête :

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "binLogCoordinates":
    {
      "kind": "sql#binLogCoordinates",
      "binLogFileName": "binary-log-file-name",
      "binLogPosition": "binary-log-position"
    }
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

REST v1beta4

Créez la nouvelle instance en utilisant le nom du fichier journal binaire et la position de récupération que vous avez identifiés :

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • project-id : ID du projet
  • target-instance-id : ID de l'instance cible
  • source-instance-id : ID de l'instance source
  • binary-log-file-name : nom du fichier journal binaire
  • binary-log-position : position dans le fichier journal binaire

Méthode HTTP et URL :

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone

Corps JSON de la requête :

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "binLogCoordinates":
    {
      "kind": "sql#binLogCoordinates",
      "binLogFileName": "binary-log-file-name",
      "binLogPosition": "binary-log-position"
    }
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

Obtenir la première et la dernière heure de récupération

Pour une instance disponible, vous pouvez effectuer une récupération PITR à n'importe quel code temporel de la fenêtre de récupération PITR de l'instance. La fenêtre de récupération PITR commence à l'heure de récupération la plus ancienne et se termine à l'heure de récupération la plus récente. Si l'instance n'est pas disponible et que les journaux d'instance sont stockés dans Cloud Storage, ou si l'instance a été supprimée et que la conservation PITR était activée, vous pouvez récupérer l'heure de récupération la plus ancienne et la plus récente, et effectuer la récupération PITR à n'importe quel code temporel de cette période. Dans tous les cas, vous pouvez restaurer l'instance dans une autre zone principale ou secondaire en indiquant des valeurs pour les zones de votre choix.

gcloud

Instance indisponible

Pour obtenir l'heure la plus ancienne et la plus récente à laquelle vous pouvez récupérer une instance Cloud SQL indisponible, exécutez la commande suivante :

gcloud sql instances get-latest-recovery-time INSTANCE_NAME

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom de l'instance pour laquelle vous souhaitez trouver l'heure de la dernière récupération.

Instance supprimée

Pour obtenir l'heure la plus ancienne et la plus récente à laquelle vous pouvez récupérer une instance Cloud SQL supprimée, exécutez la commande suivante :

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

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom de l'instance pour laquelle vous souhaitez trouver l'heure de la dernière récupération.
  • SOURCE_INSTANCE_DELETION_TIMESTAMP : code temporel UTC de la suppression de l'instance source, au format RFC 3339. Exemple : 2012-11-15T16:19:00.094Z.

REST v1

Instance indisponible

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet
  • INSTANCE_NAME : nom de l'instance pour laquelle vous interrogez l'heure de la dernière récupération

Méthode HTTP et URL :

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

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

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

Instance supprimée

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet
  • INSTANCE_NAME : nom de l'instance source pour laquelle vous interrogez l'heure de la dernière récupération
  • SOURCE_INSTANCE_DELETION_TIME : heure de suppression de l'instance source

Méthode HTTP et URL :

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

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

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

REST v1beta4

Instance indisponible

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet
  • INSTANCE_NAME : nom de l'instance pour laquelle vous interrogez l'heure de la dernière récupération

Méthode HTTP et URL :

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

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

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

Instance supprimée

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet
  • INSTANCE_NAME : nom de l'instance source pour laquelle vous interrogez l'heure de la dernière récupération
  • SOURCE_INSTANCE_DELETION_TIME : heure de suppression de l'instance source

Méthode HTTP et URL :

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

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

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

Résoudre les problèmes

Problème Dépannage

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

OU

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

Le code temporel que vous avez fourni n'est pas valide.

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

OU

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

L'horodatage que vous avez fourni correspond à un moment où les sauvegardes ou les coordonnées du journal binaire sont introuvables.

Étapes suivantes