Exporter et importer à l'aide de fichiers BAK et de fichiers journaux de transactions

Cette page décrit l'exportation et l'importation de données dans des instances Cloud SQL à l'aide de fichiers BAK, ainsi que l'importation de données dans des instances Cloud SQL à l'aide de fichiers journaux de transactions.

Avant de commencer

Les exportations utilisent des ressources de base de données, mais elles n'interfèrent pas avec les opérations de base de données normales, sauf si l'instance est sous-provisionnée.

Pour obtenir des conseils, consultez la page Bonnes pratiques pour l'importation et l'exportation de données.

Une fois l'opération d'importation terminée, vérifiez les résultats.

Exporter des données depuis Cloud SQL pour SQL Server

Cloud SQL est compatible avec l'exportation de fichiers BAK intégrés.

Si vous cherchez à créer une instance à partir d'un fichier exporté, envisagez de restaurer à partir d'une sauvegarde sur une autre instance ou de cloner l'instance.

Cloud SQL effectue une sauvegarde complète de la base de données sélectionnée lors d'une opération d'exportation.

Rôles et autorisations requis pour l'exportation à partir de Cloud SQL pour SQL Server

Pour exporter des données de Cloud SQL vers Cloud Storage, l'utilisateur qui lance l'exportation doit disposer de l'un des rôles suivants :

De plus, le compte de service de l'instance Cloud SQL doit disposer de l'un des rôles suivants :

  • Le rôle IAM (Identity and Access Management) storage.objectAdmin
  • Un rôle personnalisé comprenant les autorisations suivantes :
    • storage.objects.create
    • storage.objects.list (pour l'exportation par bandes uniquement)
    • storage.objects.delete (pour l'exportation par bandes uniquement)

Pour obtenir de l'aide sur les rôles IAM, consultez la page Identity and Access Management.

Exporter des données vers un fichier BAK à partir de Cloud SQL pour SQL Server

Console

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

    Accéder à la page Instances Cloud SQL

  2. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  3. Cliquez sur Exporter.
  4. Dans la section Format de fichier, cliquez sur BAK.
  5. Dans la section Données à exporter, sélectionnez la base de données à utiliser pour l'exportation dans le menu déroulant.
  6. Dans la section Destination, sélectionnez Parcourir pour rechercher un bucket ou un dossier Cloud Storage pour l'exportation.
  7. Cliquez sur Exporter pour démarrer l'exportation.

gcloud

  1. Créer un bucket Cloud Storage
  2. Recherchez le compte de service pour l'instance Cloud SQL à partir de laquelle vous souhaitez exporter. Pour ce faire, exécutez la commande gcloud sql instances describe. Recherchez le champ serviceAccountEmailAddress dans le résultat.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Utilisez gsutil iam pour accorder le rôle IAM storage.objectAdmin au compte de service. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  4. Exportez la base de données :
    gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/FILENAME \
    --database=DATABASE_NAME
      

    Pour plus d'informations sur l'utilisation de la commande gcloud sql export bak, consultez la page de référence de la commande.

  5. Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, révoquez-le maintenant.

REST v1

  1. Créez un bucket Cloud Storage pour l'exportation.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Bien que cette étape soit facultative, il est fortement recommandé de l'effectuer pour éviter d'ouvrir accès à d'autres données.

  2. Attribuez à votre instance le rôle IAM legacyBucketWriter pour votre bucket. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  3. Exportez votre base de données :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • bucket_name : nom du bucket Cloud Storage
    • path_to_dump_file : chemin d'accès au conteneur de vidage SQL
    • database_name_1 : nom d'une base de données dans l'instance Cloud SQL
    • database_name_2 : nom d'une base de données dans l'instance Cloud SQL
    • offload : active l'exportation sans serveur. Définissez la valeur sur true pour utiliser l'exportation sans serveur.

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "exportContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_dump_file",
          "databases": ["database_name"],
          "offload": true | false
        }
    }
    

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

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

  4. Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, supprimez-le maintenant.
Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:export.

REST v1beta4

  1. Créez un bucket Cloud Storage pour l'exportation.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Bien que cette étape soit facultative, il est fortement recommandé de l'effectuer pour éviter d'ouvrir accès à d'autres données.

  2. Attribuez à votre instance le rôle IAM storage.objectAdmin pour votre bucket. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  3. Exportez votre base de données :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • bucket_name : nom du bucket Cloud Storage
    • path_to_dump_file : chemin d'accès au conteneur de vidage SQL
    • database_name_1 : nom d'une base de données dans l'instance Cloud SQL
    • database_name_2 : nom d'une base de données dans l'instance Cloud SQL
    • offload : active l'exportation sans serveur. Définissez la valeur sur true pour utiliser l'exportation sans serveur.

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "exportContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_dump_file",
          "databases": ["database_name"],
          "offload": true | false
        }
    }
    

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

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

  4. Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, révoquez-le maintenant.
Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:export.

Exporter des sauvegardes différentielles de base de données

Avant d'exporter une sauvegarde différentielle de base de données, vous devez exporter une base différentielle.

Si d'autres services ou fonctionnalités, tels que la récupération à un moment précis et les instances dupliquées avec accès en lecture, déclenchent une sauvegarde complète entre l'exportation de la sauvegarde complète et l'exportation de la sauvegarde différentielle, vous devez déclencher à nouveau une exportation de sauvegarde complète.

Pour mieux comprendre cette situation, prenons l'exemple suivant :

  1. Vous envoyez une demande de sauvegarde complète à 7h00.
  2. Vous activez la récupération à un moment précis à 9h00. Cela déclenche une sauvegarde complète sur votre instance.
  3. Vous essayez d'effectuer une sauvegarde différentielle à 17h00. Cette requête d'exportation échoue avec un message d'erreur, car la dernière sauvegarde complète a été déclenchée par la récupération à un moment précis.

Cloud SQL n'autorise pas les requêtes d'exportation de base de données avec --differential-base ou --bak-type=DIFF sur les instances dupliquées.

gcloud

  1. Créer un bucket Cloud Storage
  2. Recherchez le compte de service pour l'instance Cloud SQL à partir de laquelle vous souhaitez exporter. Pour ce faire, exécutez la commande gcloud sql instances describe. Recherchez le champ serviceAccountEmailAddress dans le résultat.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Utilisez gsutil iam pour accorder le rôle IAM storage.objectAdmin au compte de service. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  4. Exportez la base de données en tant que base différentielle.

    gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \
    --database=DATABASE_NAME --differential-base
    

    Pour plus d'informations sur l'utilisation de la commande gcloud sql export bak, consultez la page de référence de la commande.

  5. Exportez une sauvegarde différentielle.

    gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \
    --database=DATABASE_NAME --bak-type=DIFF
      

    Pour plus d'informations sur l'utilisation de la commande gcloud sql export bak, consultez la page de référence de la commande.

  6. Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, révoquez-le maintenant.

REST v1

  1. Créez un bucket Cloud Storage pour l'exportation.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Bien que cette étape soit facultative, il est fortement recommandé de l'effectuer pour éviter d'ouvrir accès à d'autres données.

  2. Attribuez à votre instance le rôle IAM legacyBucketWriter pour votre bucket. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  3. Exportez la sauvegarde complète de votre base de données comme base différentielle.

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • bucket_name : nom du bucket Cloud Storage
    • path_to_dump_file : chemin d'accès au conteneur de vidage SQL
    • database_name_1 : nom d'une base de données dans l'instance Cloud SQL
    • database_name_2 : nom d'une base de données dans l'instance Cloud SQL
    • offload : option à définir sur true pour activer et utiliser l'exportation sans serveur

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "exportContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_dump_file",
          "databases": ["database_name"]
          "offload": true | false
          "bakExportOptions": {
            "differentialBase":true
          }
    
        }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export" | Select-Object -Expand Content

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

  4. Exportez une sauvegarde différentielle.

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • bucket_name : nom du bucket Cloud Storage
    • path_to_dump_file : chemin d'accès au conteneur de vidage SQL
    • database_name_1 : nom d'une base de données dans l'instance Cloud SQL
    • database_name_2 : nom d'une base de données dans l'instance Cloud SQL
    • offload : active l'exportation sans serveur. Définissez la valeur sur true pour utiliser l'exportation sans serveur.

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "exportContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_dump_file",
          "databases": ["database_name"]
          "offload": true | false
          "bakExportOptions": {
            bakType:"DIFF"
          }
    
        }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export" | Select-Object -Expand Content

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

  5. Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, supprimez-le maintenant.
Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:export.

REST v1beta4

  1. Créez un bucket Cloud Storage pour l'exportation.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Bien que cette étape soit facultative, il est fortement recommandé de l'effectuer pour éviter d'ouvrir accès à d'autres données.

  2. Attribuez à votre instance le rôle IAM storage.objectAdmin pour votre bucket. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  3. Exportez la sauvegarde complète de votre base de données comme base différentielle.

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • bucket_name : nom du bucket Cloud Storage
    • path_to_dump_file : chemin d'accès au conteneur de vidage SQL
    • database_name_1 : nom d'une base de données dans l'instance Cloud SQL
    • database_name_2 : nom d'une base de données dans l'instance Cloud SQL
    • offload : option à définir sur true pour activer et utiliser l'exportation sans serveur

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
      "exportContext":
        {
           "fileType": "BAK",
           "uri": "gs://bucket_name/path_to_dump_file",
           "databases": ["database_name"]
           "offload": true | false
           "bakExportOptions": {
             "differentialBase":true
           }
    
         }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export" | Select-Object -Expand Content

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

  4. Exportez une sauvegarde différentielle :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • bucket_name : nom du bucket Cloud Storage
    • path_to_dump_file : chemin d'accès au conteneur de vidage SQL
    • database_name_1 : nom d'une base de données dans l'instance Cloud SQL
    • database_name_2 : nom d'une base de données dans l'instance Cloud SQL
    • offload : option à définir sur true pour activer et utiliser les exportations sans serveur

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
      "exportContext":
        {
           "fileType": "BAK",
           "uri": "gs://bucket_name/path_to_dump_file",
           "databases": ["database_name"]
           "offload": true | false
           "bakExportOptions": {
            bakType:"DIFF"
           }
    
         }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export" | Select-Object -Expand Content

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

  5. Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, révoquez-le maintenant.
Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:export.

Utiliser l'exportation par bandes

Les avantages de l'exportation par bandes sont les suivants:

  • Réductions du temps nécessaire à l'exécution des opérations
  • Les bases de données de plus de 5 To peuvent être exportées

L'un des inconvénients potentiels de l'utilisation de l'exportation par bandes est que la sauvegarde, au lieu d'être constituée d'un fichier, est répartie sur un ensemble de fichiers. Cet ensemble est appelé "ensemble de bandes" ; consultez la section Appareils de sauvegarde dans un ensemble de médias agrégé par bandes (ensemble de bandes). Dans Cloud SQL, vous exportez vers un dossier vide dans Cloud Storage au lieu de générer un seul fichier. Pour en savoir plus, consultez la page Utiliser l'exportation par bandes.

Planifier votre activité

L'exportation par bandes peut améliorer les performances des exportations. Toutefois, si votre cas d'utilisation nécessite un seul fichier de sortie ou si la taille de votre base de données est inférieure à 5 To, et si vous n'avez pas besoin de performances élevées, vous pouvez utiliser une exportation autre que par bandes.

Si vous décidez d'utiliser l'exportation par bandes, tenez compte du nombre de bandes. Vous pouvez spécifier cette valeur dans votre commande gcloud CLI ou votre appel d'API REST. Toutefois, si vous souhaitez obtenir un nombre optimal de mesures de performances ou si vous ne connaissez pas de nombre, omettez-le. Un nombre optimal de bandes est défini automatiquement.

Le nombre maximal de bandes actuellement compatible avec Cloud SQL pour SQL Server est de 64.

Utiliser l'exportation par bandes

gcloud

  1. Créer un bucket Cloud Storage
  2. Recherchez le compte de service pour l'instance Cloud SQL à partir de laquelle vous souhaitez exporter. Pour ce faire, exécutez la commande gcloud sql instances describe. Recherchez le champ serviceAccountEmailAddress dans le résultat.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Utilisez gsutil iam pour accorder le rôle IAM storage.objectAdmin au compte de service. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  4. Pour exporter la base de données, spécifiez le paramètre --striped et/ou une valeur pour --stripe_count. La définition d'une valeur pour --stripe_count implique que le paramètre --striped est intentionnel. Une erreur se produit si vous spécifiez --no-striped, mais spécifiez une valeur pour --stripe_count:
    gcloud beta sql export bak INSTANCE_NAME \
    gs://BUCKET_NAME/STRIPED_EXPORT_FOLDER \
    --database=DATABASE_NAME --striped --stripe_count=NUMBER
      

    Pour plus d'informations sur l'utilisation de la commande gcloud beta sql export bak, consultez la page de référence de la commande.

  5. Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, révoquez-le maintenant.

REST v1

  1. Créez un bucket Cloud Storage pour l'exportation.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Bien que cette étape soit facultative, il est fortement recommandé de l'effectuer pour éviter d'ouvrir accès à d'autres données.

  2. Attribuez à votre instance le rôle IAM legacyBucketWriter pour votre bucket. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  3. Exportez votre base de données :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • bucket_name : nom du bucket Cloud Storage
    • path_to_folder: chemin d'accès au dossier (dans le bucket Cloud Storage) vers lequel exporter l'ensemble par bandes.
    • database_name: nom d'une base de données dans votre instance Cloud SQL
    • true | false: définissez la valeur sur true pour utiliser l'exportation par bandes. Si vous spécifiez true sans spécifier de nombre de bandes, un nombre optimal de bandes est défini automatiquement.
    • number_of_stripes: nombre de bandes à utiliser. Si spécifié, striped est supposé comme étant true.

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "exportContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_folder",
          "databases": ["database_name"],
          "bakExportOptions": {
            "striped": true | false,
            "stripe_count": ["number_of_stripes"]
          }
        }
    }
    

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

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

  4. Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, supprimez-le maintenant.
Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:export.

REST v1beta4

  1. Créez un bucket Cloud Storage pour l'exportation.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Bien que cette étape soit facultative, il est fortement recommandé de l'effectuer pour éviter d'ouvrir accès à d'autres données.

  2. Attribuez à votre instance le rôle IAM legacyBucketWriter pour votre bucket. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  3. Exportez votre base de données :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • bucket_name : nom du bucket Cloud Storage
    • path_to_folder: chemin d'accès au dossier (dans le bucket Cloud Storage) vers lequel exporter l'ensemble par bandes.
    • database_name: nom d'une base de données dans votre instance Cloud SQL
    • true | false: définissez la valeur sur true pour utiliser l'exportation par bandes. Si vous spécifiez true sans spécifier de nombre de bandes, un nombre optimal de bandes est défini automatiquement.
    • number_of_stripes: nombre de bandes à utiliser. Si spécifié, striped est supposé comme étant true.

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "exportContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_folder",
          "databases": ["database_name"],
          "bakExportOptions": {
            "striped": true | false,
            "stripe_count": ["number_of_stripes"]
          }
        }
    }
    

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

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

  4. Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, supprimez-le maintenant.
Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:export.

Importer dans Cloud SQL pour SQL Server

Rôles et autorisations requis pour l'importation dans Cloud SQL pour SQL Server

Pour importer des données de Cloud Storage dans Cloud SQL, l'utilisateur qui lance l'importation doit disposer de l'un des rôles suivants :

De plus, le compte de service de l'instance Cloud SQL doit disposer de l'un des rôles suivants :

  • Le rôle IAM storage.objectAdmin
  • Un rôle personnalisé comprenant les autorisations suivantes :
    • storage.objects.get
    • storage.objects.list (pour l'importation par bandes uniquement)

Pour obtenir de l'aide sur les rôles IAM, consultez la page Identity and Access Management.

Importer des données à partir d'un fichier BAK vers Cloud SQL pour SQL Server

Pour utiliser l'importation par bandes, consultez la page Utiliser l'importation par bandes.

Différents frameworks d'importation sont disponibles. Par exemple, Cloud SQL pour SQL Server est compatible avec la capture de données modifiées (CDC, Change Data Capture) pour les versions de base de données suivantes :

  • SQL Server 2017 Standard
  • SQL Server 2017 Enterprise
  • SQL Server 2019 Standard
  • SQL Server 2019 Enterprise

Lors de l'importation d'une base de données compatible CDC, l'option KEEP_CDC est conservée.

Si la version de votre instance est une version Microsoft SQL Server Enterprise Edition, vous pouvez importer des fichiers BAK chiffrés.

Les instances Microsoft SQL Server Standard Edition importent également les fichiers BAK chiffrés, mais uniquement via gcloud CLI.

Les seules extensions BAK acceptées sont .bak et .bak.gz. Les sauvegardes chiffrées avec GPG ne sont actuellement pas acceptées.

Dans le cadre des instructions ci-dessous, vous devez préparer la spécification d'une nouvelle base de données. Ne créez pas de base de données avant de lancer l'importation de votre fichier BAK.

Pour importer des données vers une instance Cloud SQL à l'aide d'un fichier BAK, procédez comme suit :

Console

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

    Accéder à la page Instances Cloud SQL

  2. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  3. Cliquez sur Import (Importer).
  4. Dans le champ Sélectionnez le fichier à partir duquel vous souhaitez importer des données, saisissez le chemin d'accès au bucket et au fichier BAK à utiliser pour l'importation.

    Vous pouvez importer un fichier compressé (.gz) ou un fichier non compressé.

  5. Dans la section Format, sélectionnez BAK.
  6. Spécifiez la base de données de l'instance Cloud SQL dans laquelle vous souhaitez importer le fichier BAK.
  7. Cliquez sur Importer pour démarrer l'importation.

gcloud

  1. Créez un bucket Cloud Storage pour l'importation.

    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Bien que cette étape soit facultative, il est fortement recommandé de l'effectuer pour éviter d'ouvrir accès à d'autres données.

  2. Assurez-vous d'avoir configuré les rôles et autorisations requis.
  3. Importez les données du fichier BAK dans le bucket.
  4. Décrivez l'instance dans laquelle vous réalisez l'importation :
    gcloud sql instances describe INSTANCE_NAME
    
  5. Copiez le champ serviceAccountEmailAddress.
  6. Utilisez gsutil iam pour accorder au compte de service le rôle IAM storage.objectViewer sur le bucket. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  7. Importez les données du fichier :
    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \
    --database=DATABASE_NAME
    
    Pour les importations chiffrées, exécutez la commande suivante :
    
    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME
    --database=DATABASE_NAME --cert-path=gs://BUCKET_NAME/CERTIFICATE_NAME
     --pvk-path=gs://BUCKET_NAME/KEY_NAME --prompt-for-pvk-password
    
  8. Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les à l'aide de gsutil iam.

REST v1

  1. Créer un bucket Cloud Storage
  2. Importez le fichier dans le bucket.

    Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets.

  3. Attribuez à votre instance le rôle IAM storage.objectAdmin pour votre bucket. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  4. Importez les données du fichier :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • bucket_name : nom du bucket Cloud Storage
    • path_to_bak_file : chemin d'accès au fichier BAK
    • database_name : nom d'une base de données dans l'instance Cloud SQL

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_bak_file",
          "database": "database_name"
        }
    }
    
    

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

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

    Pour définir un autre utilisateur pour l'importation, spécifiez la propriété importContext.importUser.

    Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:import.
  5. Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les.

REST v1beta4

  1. Créer un bucket Cloud Storage
  2. Importez le fichier dans le bucket.

    Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets.

  3. Attribuez à votre instance le rôle IAM storage.objectAdmin pour votre bucket. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  4. Importez les données du fichier :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • bucket_name : nom du bucket Cloud Storage
    • path_to_bak_file : chemin d'accès au fichier BAK
    • database_name : nom d'une base de données dans l'instance Cloud SQL

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_bak_file",
          "database": "database_name"
        }
    }
    
    

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

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

    Pour définir un autre utilisateur pour l'importation, spécifiez la propriété importContext.importUser.

    Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:import.
  5. Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les.

Si vous obtenez une erreur telle que ERROR_RDBMS, assurez-vous que le fichier BAK existe dans le bucket et que vous disposez des autorisations appropriées sur le bucket. Pour vous aider à configurer le contrôle des accès dans Cloud Storage, consultez la page Créer et gérer des listes de contrôle d'accès.

Importer des sauvegardes différentielles de base de données

Avant d'importer une sauvegarde différentielle de base de données, vous devez disposer d'une importation de sauvegarde complète, et votre base de données doit se trouver dans l'état RESTORING après l'importation de la sauvegarde complète.

Cloud SQL ne permet pas d'importer des sauvegardes différentielles de base de données sur des instances où la récupération à un moment précis est activée. En effet, l'importation d'une sauvegarde de base de données avec --no-recovery est une condition préalable à l'importation de sauvegardes différentielles de base de données. En outre, vous ne pouvez pas activer la récupération à un moment précis sur une instance si la base de données se trouve dans l'état RESTORING. En cas d'échec de l'importation, effectuez l'une des opérations suivantes pour activer la récupération à un moment précis :

  • Mettez en ligne la base de données à l'état RESTORING à l'aide de l'option --recovery-only .

  • Supprimez la base de données.

Pour importer des données dans une instance Cloud SQL à l'aide d'une sauvegarde différentielle de base de données, procédez comme suit :

gcloud

  1. Créez un bucket Cloud Storage pour l'importation.

    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Bien que cette étape soit facultative, il est fortement recommandé de l'effectuer pour éviter d'ouvrir accès à d'autres données.

  2. Assurez-vous d'avoir configuré les rôles et autorisations requis.
  3. Importez les données du fichier BAK dans le bucket.
  4. Décrivez l'instance dans laquelle vous réalisez l'importation :
    gcloud sql instances describe INSTANCE_NAME
    
  5. Copiez le champ serviceAccountEmailAddress.
  6. Utilisez gsutil iam pour accorder au compte de service le rôle IAM storage.objectViewer sur le bucket. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  7. Importez une sauvegarde complète avec --no-recovery.

    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \
    --database=DATABASE_NAME --bak-type=FULL --no-recovery
    
  8. Importez une sauvegarde différentielle de la base de données.

    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \
    --database=DATABASE_NAME --bak-type=DIFF --no-recovery
    
  9. Utilisez l'option --recovery-only pour mettre en ligne la base de données importée. Cette étape est facultative et vous ne devez l'effectuer que si votre base de données se trouve dans l'état RESTORING.

    gcloud sql import bak INSTANCE_NAME \
    --database=DATABASE_NAME --recovery-only
    
  10. Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les à l'aide de gsutil iam.

REST v1

  1. Créer un bucket Cloud Storage
  2. Importez le fichier dans le bucket.

    Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets.

  3. Attribuez à votre instance le rôle IAM storage.objectAdmin pour votre bucket. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  4. Importez une sauvegarde complète avec noRecovery.

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

    • PROJECT_ID : ID du projet.
    • INSTANCE_ID : ID de l'instance.
    • BUCKET_NAME : nom du bucket Cloud Storage.
    • PATH_TO_BAK_FILE : chemin d'accès au fichier BAK.
    • DATABASE_NAME : nom d'une base de données dans l'instance Cloud SQL.

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "noRecovery": true,
            "bakType": "FULL",
          }
    
        }
    }
    
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

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

  5. Importez une sauvegarde différentielle de la base de données.

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • bucket_name : nom du bucket Cloud Storage
    • path_to_bak_file : chemin d'accès au fichier BAK
    • database_name : nom d'une base de données dans l'instance Cloud SQL

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_bak_file",
          "database": "database_name"
          "bakImportOptions": {
            "bakType": "DIFF",
            "noRecovery": true,
          }
    
        }
    }
    
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import" | Select-Object -Expand Content

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

  6. Utilisez recoveryOnly pour mettre en ligne la base de données importée. Cette étape est facultative et vous ne devez l'effectuer que si votre base de données se trouve dans l'état RESTORING.

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

    • PROJECT_ID : ID du projet
    • INSTANCE_ID : ID de l'instance
    • BUCKET_NAME : nom du bucket Cloud Storage
    • PATH_TO_BAK_FILE : chemin d'accès au fichier BAK
    • DATABASE_NAME : nom d'une base de données dans l'instance Cloud SQL

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "recoveryOnly": true,
          }
    
        }
    }
    
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

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

  7. Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les.

REST v1beta4

  1. Créer un bucket Cloud Storage
  2. Importez le fichier dans le bucket.

    Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets.

  3. Attribuez à votre instance le rôle IAM storage.objectAdmin pour votre bucket. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  4. Importez une sauvegarde complète avec noRecovery.

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

    • PROJECT-ID : ID du projet.
    • INSTANCE_ID : ID de l'instance.
    • BUCKET_NAME : nom du bucket Cloud Storage.
    • PATH_TO_BAK_FILE : chemin d'accès au fichier BAK.
    • DATABASE_NAME : nom d'une base de données dans l'instance Cloud SQL.

    Méthode HTTP et URL :

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import

    Corps JSON de la requête :

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "noRecovery": true,
            "bakType": "FULL",
          }
        }
    }
    
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

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

  5. Importez une sauvegarde différentielle de la base de données.

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • bucket_name : nom du bucket Cloud Storage
    • path_to_bak_file : chemin d'accès au fichier BAK
    • database_name : nom d'une base de données dans l'instance Cloud SQL

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_bak_file",
          "database": "database_name"
          "bakImportOptions": {
            "bakType": "DIFF",
            "noRecovery": true,
          }
        }
    }
    
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import" | Select-Object -Expand Content

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

  6. Utilisez recoveryOnly pour mettre en ligne la base de données importée. Cette étape est facultative et vous ne devez l'effectuer que si votre base de données se trouve dans l'état RESTORING.

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

    • PROJECT_ID : ID du projet
    • INSTANCE_ID : ID de l'instance
    • BUCKET_NAME : nom du bucket Cloud Storage
    • PATH_TO_BAK_FILE : chemin d'accès au fichier BAK
    • DATABASE_NAME : nom d'une base de données dans l'instance Cloud SQL

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "recoveryOnly": true,
          }
        }
    }
    
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

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

  7. Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les.

Si vous obtenez une erreur telle que ERROR_RDBMS, vérifiez que le fichier BAK existe bien dans le bucket et que vous disposez des autorisations appropriées sur le bucket. Pour vous aider à configurer le contrôle des accès dans Cloud Storage, consultez la page Créer et gérer des listes de contrôle d'accès.

Importer des sauvegardes de journaux de transactions

Un journal des transactions est un enregistrement des transactions de votre base de données et des modifications apportées par chaque transaction. Vous pouvez l'utiliser pour rétablir la cohérence de la base de données en cas de défaillance du système.

Pour importer des données vers une instance Cloud SQL à l'aide d'une sauvegarde de journal de transactions, procédez comme suit :

gcloud

  1. Créez un bucket Cloud Storage pour l'importation.

    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
  2. Importez les fichiers de sauvegarde dans le bucket.
  3. Décrivez l'instance dans laquelle vous réalisez l'importation :
    gcloud sql instances describe INSTANCE_NAME
    
  4. Copiez le champ serviceAccountEmailAddress.
  5. Utilisez gsutil iam pour accorder au compte de service le rôle IAM storage.objectViewer sur le bucket. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  6. Importez une sauvegarde complète à l'aide du paramètre --no-recovery. Vérifiez que votre base de données est à l'état RESTORING après l'importation de la sauvegarde complète.

    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/BACKUP_FILENAME \
    --database=DATABASE_NAME --bak-type=FULL --no-recovery
    
  7. Facultatif : Importer une sauvegarde différentielle.
  8. Importer une sauvegarde du journal des transactions

    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/BACKUP_FILENAME \
    --database=DATABASE_NAME --bak-type=TLOG
    --stop-at=STOP_AT_TIMESTAMP --stop-at-mark=STOP_AT_MARK_NAME
    --no-recovery
    
    Remplacez l'élément suivant :
    • INSTANCE_NAME : nom de l'instance.
    • BUCKET_NAME : nom du bucket Cloud Storage.
    • BACKUP_FILENAME : nom de votre fichier de sauvegarde.
    • DATABASE_NAME : nom d'une base de données dans l'instance Cloud SQL.
    • STOP_AT_TIMESTAMP : horodatage auquel l'importation des journaux de transactions doit s'arrêter. Ce champ est facultatif. La valeur doit respecter le format RFC 3339.
    • STOP_AT_MARK_NAME : transaction marquée à laquelle l'importation du journal des transactions doit s'arrêter. Ce champ est facultatif et peut utiliser n'importe quelle chaîne comme valeur. Si la valeur est au format lsn:log-sequence-number, l'importation du journal des transactions s'arrête au numéro de séquence de journal donné.
    Répétez cette étape jusqu'à ce que toutes les sauvegardes du journal des transactions soient importées.
  9. Facultatif : Utilisez l'option --recovery-only pour mettre en ligne la base de données importée. N'effectuez cette étape que si votre base de données est à l'état RESTORING.

    gcloud sql import bak INSTANCE_NAME \
    --database=DATABASE_NAME --recovery-only
    
  10. Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les à l'aide de gsutil iam.

REST v1

  1. Créer un bucket Cloud Storage
  2. Importez le fichier dans le bucket.

    Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets.

  3. Attribuez à votre instance le rôle IAM storage.objectAdmin pour votre bucket. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  4. Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:import.
  5. Importez une sauvegarde complète avec noRecovery. Vérifiez que votre base de données est à l'état RESTORING après l'importation de la sauvegarde complète.

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

    • PROJECT_ID : ID du projet.
    • INSTANCE_ID : ID de l'instance.
    • BUCKET_NAME : nom du bucket Cloud Storage.
    • PATH_TO_BAK_FILE : chemin d'accès au fichier BAK.
    • DATABASE_NAME : nom d'une base de données dans l'instance Cloud SQL.

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "noRecovery": true,
            "bakType": "FULL",
          }
    
        }
    }
    
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

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

  6. Facultatif : Importer une sauvegarde différentielle.
  7. Importez une sauvegarde du journal des transactions.

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

    • PROJECT_ID : ID du projet.
    • INSTANCE_ID : ID de l'instance.
    • BUCKET_NAME : nom du bucket Cloud Storage.
    • PATH_TO_TLOG_FILE : chemin d'accès au fichier journal des transactions.
    • DATABASE_NAME : nom d'une base de données dans l'instance Cloud SQL.
    • STOP_AT_TIMESTAMP : horodatage auquel l'importation des journaux de transactions doit s'arrêter. Ce champ est facultatif. La valeur doit respecter le format RFC 3339.
    • STOP_AT_MARK_NAME : transaction marquée à laquelle l'importation du journal des transactions doit s'arrêter. Ce champ est facultatif et peut utiliser n'importe quelle chaîne comme valeur. Si la valeur est au format lsn:log-sequence-number, l'importation du journal des transactions s'arrête au numéro de séquence de journal donné.

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_TLOG_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "bakType": "TLOG",
            "stopAt": STOP_AT_TIMESTAMP,
            "stopAtMark": STOP_AT_MARK_NAME,
            "noRecovery": true,
          }
    
        }
    }
    
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

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

    Répétez cette étape jusqu'à ce que toutes les sauvegardes du journal des transactions soient importées.
  8. Facultatif : Utilisez recoveryOnly pour mettre en ligne la base de données importée. N'effectuez cette étape que si votre base de données est à l'état RESTORING.

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

    • PROJECT_ID : ID du projet
    • INSTANCE_ID : ID de l'instance
    • BUCKET_NAME : nom du bucket Cloud Storage
    • PATH_TO_BAK_FILE : chemin d'accès au fichier BAK
    • DATABASE_NAME : nom d'une base de données dans l'instance Cloud SQL

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "recoveryOnly": true,
          }
    
        }
    }
    
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

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

  9. Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les.

REST v1beta4

  1. Créer un bucket Cloud Storage
  2. Importez le fichier dans le bucket.

    Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets.

  3. Attribuez à votre instance le rôle IAM storage.objectAdmin pour votre bucket. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  4. Importez une sauvegarde complète avec noRecovery. Vérifiez que votre base de données est à l'état RESTORING après l'importation de la sauvegarde complète.

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

    • PROJECT-ID : ID du projet.
    • INSTANCE_ID : ID de l'instance.
    • BUCKET_NAME : nom du bucket Cloud Storage.
    • PATH_TO_BAK_FILE : chemin d'accès au fichier BAK.
    • DATABASE_NAME : nom d'une base de données dans l'instance Cloud SQL.

    Méthode HTTP et URL :

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import

    Corps JSON de la requête :

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "noRecovery": true,
            "bakType": "FULL",
          }
        }
    }
    
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

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

  5. Facultatif : Importer une sauvegarde différentielle.
  6. Importez une sauvegarde du journal des transactions. Ici, stopAt et stopAtMark sont des champs facultatifs.

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

    • PROJECT_ID : ID du projet.
    • INSTANCE_ID : ID de l'instance.
    • BUCKET_NAME : nom du bucket Cloud Storage.
    • PATH_TO_BAK_FILE : chemin d'accès au fichier BAK.
    • DATABASE_NAME : nom d'une base de données dans l'instance Cloud SQL.
    • STOP_AT_TIMESTAMP : horodatage auquel l'importation des journaux de transactions doit s'arrêter. Ce champ est facultatif. La valeur doit respecter le format RFC 3339.
    • STOP_AT_MARK_NAME : transaction marquée à laquelle l'importation du journal des transactions doit s'arrêter. Ce champ est facultatif et peut utiliser n'importe quelle chaîne comme valeur. Si la valeur est au format lsn:log-sequence-number, l'importation du journal des transactions s'arrête au numéro de séquence de journal donné.

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "bakType": "TLOG",
            "stopAt": STOP_AT_TIMESTAMP,
            "stopAtMark":STOP_AT_MARK_NAME,
            "noRecovery": true,
          }
    
        }
    }
    
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

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

    Répétez cette étape jusqu'à ce que toutes les sauvegardes du journal des transactions soient importées.
  7. Facultatif : Utilisez recoveryOnly pour mettre en ligne la base de données importée. N'effectuez cette étape que si votre base de données est à l'état RESTORING.

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

    • PROJECT_ID : ID du projet
    • INSTANCE_ID : ID de l'instance
    • BUCKET_NAME : nom du bucket Cloud Storage
    • PATH_TO_BAK_FILE : chemin d'accès au fichier BAK
    • DATABASE_NAME : nom d'une base de données dans l'instance Cloud SQL

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "recoveryOnly": true,
          }
        }
    }
    
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

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

  8. Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les.

Utiliser l'importation par bandes

Les avantages de l'importation par bandes sont les suivants:

  • Réductions du temps nécessaire à l'exécution des opérations
  • Les bases de données de plus de 5 To peuvent être importées

Un inconvénient potentiel de l'utilisation de l'importation par bandes est que tous les fichiers de l'ensemble par bandes (et non un seul fichier) doivent être importés dans le même dossier de votre bucket Cloud Storage avant d'effectuer l'importation.

Planifier votre activité

Dans la plupart des cas, l'importation par bandes permet de meilleures performances sans inconvénient. Toutefois, si vous ne pouvez pas effectuer de sauvegarde sur un ensemble par bandes à partir d'une instance donnée, ou si la taille de votre base de données est inférieure à 5 To, et si vous n'avez pas besoin de performances élevées, vous pouvez utiliser une importation autre que par bandes.

Utiliser l'importation par bandes

gcloud

  1. Créez un bucket Cloud Storage pour l'importation.

    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Bien que cette étape soit facultative, il est fortement recommandé de l'effectuer pour éviter d'ouvrir accès à d'autres données.

  2. Assurez-vous d'avoir configuré les rôles IAM et autorisations requis.
  3. Créez un dossier dans le bucket.
  4. Pour importer la base de données, importez les fichiers de l'ensemble par bandes (de la base de données) dans le nouveau dossier. Assurez-vous que tous les fichiers sont importés dans le dossier, et que celui-ci ne contient aucun fichier supplémentaire.
  5. Décrivez l'instance à partir de laquelle vous souhaitez exporter :
    gcloud sql instances describe INSTANCE_NAME
    
  6. Copiez le champ serviceAccountEmailAddress.
  7. Utilisez gsutil iam pour accorder le rôle IAM storage.objectViewer au compte de service du bucket. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  8. Importez les données du dossier. La différence par rapport à une importation non supprimée est la suivante: l'URI renvoie au nom du dossier dans lequel l'ensemble de bandes a été importé, plutôt que vers un seul fichier, et vous spécifiez le paramètre --striped:
    gcloud beta sql import bak INSTANCE_NAME gs://BUCKET_NAME/FOLDER_NAME \
    --database=DATABASE_NAME --striped
    
  9. Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les à l'aide de gsutil iam.

REST v1

  1. Créer un bucket Cloud Storage
  2. Importez le fichier dans le bucket.

    Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets.

  3. Attribuez à votre instance le rôle IAM storage.objectAdmin pour votre bucket. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  4. Importez les données du fichier :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • bucket_name : nom du bucket Cloud Storage
    • path_to_folder: chemin d'accès au dossier (dans le bucket Cloud Storage) où se trouve l'ensemble par bandes.
    • database_name: nom d'une base de données à créer dans votre instance Cloud SQL.
    • true | false: défini sur true pour utiliser l'importation par bandes

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_folder",
          "database": "database_name",
          "bakImportOptions": {
            "striped": true | false
          }
        }
    }
    

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

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

    Pour définir un autre utilisateur pour l'importation, spécifiez la propriété importContext.importUser.

    Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:import.
  5. Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les.

REST v1beta4

  1. Créer un bucket Cloud Storage
  2. Importez le fichier dans le bucket.

    Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets.

  3. Attribuez à votre instance le rôle IAM storage.objectAdmin pour votre bucket. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  4. Importez les données du fichier :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • bucket_name : nom du bucket Cloud Storage
    • path_to_folder: chemin d'accès au dossier (dans le bucket Cloud Storage) où se trouve l'ensemble par bandes.
    • database_name: nom d'une base de données à créer dans votre instance Cloud SQL.
    • true | false: défini sur true pour utiliser l'importation par bandes

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_folder",
          "database": "database_name",
          "bakImportOptions": {
            "striped": true | false
          }
        }
    }
    

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

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

    Pour définir un autre utilisateur pour l'importation, spécifiez la propriété importContext.importUser.

    Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:import.
  5. Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les.

Si vous obtenez une erreur telle que ERROR_RDBMS, vérifiez que la table existe bien. Si tel est le cas, confirmez que vous disposez des autorisations appropriées sur le bucket. Pour vous aider à configurer le contrôle des accès dans Cloud Storage, consultez la page Créer et gérer des listes de contrôle d'accès.

Étapes suivantes