Restaurer une instance

Cette page explique comment restaurer une instance à partir d'une sauvegarde et effectuer une récupération à un moment précis.

Pour en savoir plus sur les opérations de restauration ou de récupération à un moment précis, consultez la section Présentation de la restauration d'une instance.

Restaurer une instance à partir d'une sauvegarde

Vous pouvez utiliser une sauvegarde pour restaurer l'instance à partir de laquelle la sauvegarde a été effectuée ou pour restaurer une autre instance dans le même projet.

Restaurer sur la même instance

Lorsque vous effectuez une restauration à partir d'une sauvegarde sur la même instance, les données de cette instance sont rétablies à l'état existant au moment de la sauvegarde. Pour en savoir plus sur la restauration d'une instance, consultez la section Conseils généraux pour effectuer une restauration.

Console

  1. Accédez à la page "Instances Cloud SQL" de la console Google Cloud Platform.

    Accéder à la page Instances Cloud SQL

  2. Si l'instance cible possède des instances dupliquées en lecture ou une instance dupliquée de basculement, supprimez-les à partir du menu "Autres actions" Icône Autres actions. situé tout à droite de l'écran.
  3. Cliquez sur l'instance à restaurer pour ouvrir la page Détails de l'instance correspondante.
  4. Cliquez sur l'onglet Sauvegardes.
  5. Recherchez la sauvegarde à utiliser, puis sélectionnez Restaurer dans le menu "Autres actions" Icône Autres actions..
  6. Dans la boîte de dialogue Restore instance from backup (Restaurer l'instance à partir d'une sauvegarde), cliquez sur OK pour lancer le processus de restauration.

    L'instance cible par défaut est celle à partir de laquelle la sauvegarde a été créée.

    Boîte de dialogue Restaurer une sauvegarde.

  7. Accédez à la page Opérations de l'instance pour vérifier l'état de l'opération de restauration.
  8. Une fois l'opération de restauration terminée, recréez les instances dupliquées qui ont été supprimées lors de la première étape.

    Après avoir supprimé une instance, vous ne pouvez pas réutiliser son nom pendant un laps de temps maximal d'une semaine.

gcloud

  1. Décrivez l'instance pour vérifier la présence éventuelle d'instances dupliquées :
    gcloud sql instances describe [INSTANCE_NAME]
    

    Notez toutes les instances répertoriées dans replicaNames.

  2. Supprimez toutes les instances dupliquées :
    gcloud sql instances delete [REPLICA_NAME]
    

    Répétez l'opération pour toutes les instances dupliquées.

  3. Répertoriez les sauvegardes de l'instance :
    gcloud sql backups list --instance [INSTANCE_NAME]
    
  4. Recherchez la sauvegarde que vous souhaitez utiliser, puis enregistrez sa valeur ID.
    Veillez à sélectionner une sauvegarde marquée comme "SUCCESSFUL" (Réussie).
  5. Restaurez l'instance à partir de la sauvegarde spécifiée :
    gcloud sql backups restore [BACKUP_ID] --restore-instance=[INSTANCE_NAME]
  6. Une fois l'opération de restauration terminée, recréez les instances dupliquées qui ont été supprimées lors de la première étape.

    Après avoir supprimé une instance, vous ne pouvez pas réutiliser son nom pendant un laps de temps maximal d'une semaine.

cURL

  1. Répertoriez toutes les instances dupliquées de l'instance :
    ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         -X GET \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]?fields=replicaNames
    
  2. Supprimez toutes les instances dupliquées :
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         -X DELETE \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[REPLICA_NAME]
    

    Répétez l'opération pour chaque instance dupliquée en lecture ainsi que pour l'instance dupliquée de basculement.

  3. Répertoriez les sauvegardes de l'instance pour obtenir l'identifiant de la sauvegarde que vous souhaitez utiliser :
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         -X GET \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/backupRuns
    
  4. Restaurez l'instance à partir de la sauvegarde :
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{ "restoreBackupContext": {"backupRunId": "[BACKUP_ID]"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/restoreBackup
    
  5. Une fois l'opération de restauration terminée, recréez les instances dupliquées que vous avez supprimées précédemment.

    Après avoir supprimé une instance, vous ne pouvez pas réutiliser son nom pendant un laps de temps maximal d'une semaine.

Restaurer sur une autre instance

Lorsque vous effectuez une restauration à partir d'une sauvegarde sur une autre instance, les données de l'instance cible sont mises à jour selon l'état de l'instance source au moment de la sauvegarde. Pour en savoir plus, consultez les sections Conseils généraux pour effectuer une restauration et Conseils et prérequis pour restaurer sur une autre instance.

Console

  1. Accédez à la page "Instances Cloud SQL" de la console Google Cloud Platform.

    Accéder à la page Instances Cloud SQL

  2. Si l'instance cible possède des instances dupliquées en lecture ou une instance dupliquée de basculement, supprimez-les à partir du menu "Autres actions" Icône Autres actions. situé tout à droite de l'écran.
  3. Cliquez sur l'instance source pour ouvrir la page Détails de l'instance correspondante, puis sélectionnez l'onglet Sauvegardes.
  4. Recherchez la sauvegarde à partir de laquelle vous souhaitez effectuer la restauration, puis sélectionnez Restaurer dans le menu "Autres actions" Icône Autres actions..
  5. Dans le menu Restore instance from backup (Restaurer l'instance à partir d'une sauvegarde), sélectionnez l'option Target Instance (Instance cible), puis cliquez sur OK.

    Boîte de dialogue Restaurer une sauvegarde avec sélection d'une cible différente.

  6. Accédez à l'onglet Opérations de l'instance cible pour vérifier l'état de l'opération de restauration.
  7. Une fois l'opération de restauration terminée, recréez les instances dupliquées que vous avez supprimées précédemment.

    Après avoir supprimé une instance, vous ne pouvez pas réutiliser son nom pendant un laps de temps maximal d'une semaine.

gcloud

  1. Décrivez l'instance cible pour vérifier la présence éventuelle d'instances dupliquées :
    gcloud sql instances describe [TARGET_INSTANCE_NAME]
    

    Notez toutes les instances répertoriées dans replicaNames.

  2. Supprimez toutes les instances dupliquées :
    gcloud sql instances delete [REPLICA_NAME]
    

    Répétez l'opération pour chaque instance dupliquée.

  3. Répertoriez les sauvegardes de l'instance source :
    gcloud sql backups list --instance [SOURCE_INSTANCE_NAME]
    
  4. Recherchez la sauvegarde que vous souhaitez utiliser, puis enregistrez sa valeur ID.
    Veillez à sélectionner une sauvegarde marquée comme "SUCCESSFUL" (Réussie).
  5. Restaurez à partir de la sauvegarde spécifiée sur l'instance cible :
    gcloud sql backups restore [BACKUP_ID] --restore-instance=[TARGET_INSTANCE_NAME] \
                                              --backup-instance=[SOURCE_INSTANCE_NAME]
        
  6. Une fois l'opération de restauration terminée, recréez les instances dupliquées que vous avez supprimées précédemment.

    Après avoir supprimé une instance, vous ne pouvez pas réutiliser son nom pendant un laps de temps maximal d'une semaine.

cURL

  1. Répertoriez toutes les instances dupliquées de l'instance cible :
    ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         -X GET \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[TARGET_INSTANCE_NAME]?fields=replicaNames
    
  2. Supprimez toutes les instances dupliquées :
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         -X DELETE \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[REPLICA_NAME]
    

    Répétez l'opération pour chaque instance dupliquée.

  3. Répertoriez les sauvegardes de l'instance source pour obtenir l'identifiant de la sauvegarde que vous souhaitez utiliser :
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         -X GET \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[SOURCE_INSTANCE_NAME]/backupRuns
    
  4. Restaurez l'instance cible à partir de la sauvegarde :
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{ "restoreBackupContext": {"backupRunId": "[BACKUP_ID]", "instanceId": "[SOURCE_INSTANCE_NAME]"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[TARGET_INSTANCE_NAME]/restoreBackup
    
  5. Une fois l'opération de restauration terminée, recréez les instances dupliquées que vous avez supprimées précédemment.

    Après avoir supprimé une instance, vous ne pouvez pas réutiliser son nom pendant un laps de temps maximal d'une semaine.

Effectuer une récupération à un moment précis

La récupération à un moment précis vous permet de récupérer l'état précédent d'une instance à un moment spécifique. Une récupération à un moment précis d'une instance existante n'est pas possible, car une nouvelle instance est créée lors de l'opération.

Avant de commencer

Avant d'effectuer cette tâche, 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.

  • Nom du fichier journal binaire et position de l'événement à partir duquel vous souhaitez effectuer la récupération (cet événement et les suivants qui ont eu lieu après ne seront pas répercutés sur la nouvelle instance)

    Pour en savoir plus, consultez la section Identifier la position dans le journal binaire.

Effectuer la récupération à un moment précis

Console

  1. Accédez à la page "Instances Cloud SQL" de la console Google Cloud Platform.

    Accéder à la page Instances Cloud SQL

  2. Ouvrez le menu "plus d'actions" Icône Autres actions. pour l'instance que vous souhaitez récupérer et sélectionnez Cloner.
  3. Dans la fenêtre Créer un clone, mettez à jour le nom de la nouvelle instance si nécessaire.
  4. Sous "Avancé", sélectionnez Cloner l'instance à partir d'une position antérieure.
  5. Saisissez le nom du journal binaire que vous avez identifié précédemment dans Nom du fichier journal binaire.
  6. Saisissez la position de l'événement à partir duquel vous souhaitez effectuer la récupération dans Position de récupération.
  7. Cliquez sur Créer un clone.

gcloud

  1. 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 :
    gcloud sql instances clone [SOURCE_INSTANCE_NAME] [NEW_INSTANCE_NAME] \
           --bin-log-file-name=[BINLOG_FILE_NAME] --bin-log-position=[POSITION]
    

    La commande de restauration ressemblera à celle-ci :

    gcloud sql instances clone instance1 instance1-clone \
           --bin-log-file-name=mysql-bin.0000031 --bin-log-position=107
    
  2. Vérifiez l'état de l'opération de restauration à l'aide de l'identifiant d'opération renvoyé par la commande clone :
    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é.

Pour en savoir plus sur la récupération à un moment précis, consultez la section Récupération à un moment précis à l'aide du journal binaire du manuel de référence MySQL.

cURL

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 :

ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"cloneContext": {"kind": "sql#cloneContext",
              "destinationInstanceName": "[TARGET_INSTANCE_NAME]",
              "binLogCoordinates": {"kind": "sql#binLogCoordinates",
                                    "binLogFileName": "[BINLOG_FILE_NAME]",
                                    "binLogPosition": "[POSITION]" }}}' \
     https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[SOURCE_INSTANCE_NAME]/clone \
     -X POST

Identifier la position de récupération

Avant de pouvoir effectuer une récupération à un moment précis, vous devez avoir identifié le nom du fichier journal binaire ainsi que la position correspondant au moment auquel vous souhaitez restaurer l'instance.

Vous allez utiliser le client MySQL pour effectuer cette tâche.

  1. Connectez-vous à l'instance que vous souhaitez restaurer à l'aide du client MySQL.

    Pour ce faire, ouvrez Cloud Shell ou utilisez 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 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'apparaît pas, affichez la série d'événements suivante à partir de la dernière position affichée :

    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 auquel vous souhaitez restaurer, enregistrez la position (affichée dans la colonne Pos) et le nom du fichier journal.

    Le nom du fichier journal et la position vont vous permettre d'effectuer la récupération à un moment précis.

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)

Dans cet exemple, vous utiliseriez la position "865" et le nom "mysql-bin.000011" comme position de récupération afin d'effectuer une restauration jusqu'à l'instruction DROP TABLE, en gras ci-dessus. L'instruction DROP TABLE et toutes les opérations après celle-ci ne seraient alors pas répercutées dans la nouvelle instance.

Activer la journalisation binaire

Console

  1. Accédez à la page "Instances Cloud SQL" de la console Google Cloud Platform.

    Accéder à la page Instances Cloud SQL

  2. Sélectionnez l'instance pour laquelle vous souhaitez activer la journalisation binaire.
  3. Cliquez sur Modifier.
  4. Dans la section Activer les sauvegardes automatiques, sélectionnez Automatiser les sauvegardes si nécessaire, puis Activer la journalisation binaire.

    L'option Automatiser les sauvegardes doit être activée avant de pouvoir activer la journalisation binaire.

  5. Cliquez sur Save.
  6. Dans la page Détails de l'instance de l'instance concernée, le journal binaire doit s'afficher comme étant activé.

gcloud

  1. Affichez les détails de l'instance :
    gcloud sql instances describe [INSTANCE_NAME]
    
  2. Si la mention enabled: false s'affiche dans backupConfiguration, activez les sauvegardes planifiées :
    gcloud sql instances patch [INSTANCE_NAME] --backup-start-time [HH:MM]
    

    Le paramètre "backup-start-time" est indiqué au format 24 heures, dans le fuseau horaire UTC ± 00.

  3. Activez la journalisation binaire :
    gcloud sql instances patch [INSTANCE_NAME] --enable-bin-log
    
  4. Confirmez la modification :
    gcloud sql instances describe [INSTANCE_NAME]
    

    Dans backupConfiguration, recherchez binaryLogEnabled: true.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Cloud SQL pour MySQL