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

Cette page décrit comment exporter et importer des données dans des instances Cloud SQL à l'aide de fichiers BAK, et comment importer des données dans des instances Cloud SQL à l'aide de fichiers journaux des 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)
    • storage.buckets.getIamPolicy (pour l'exportation des journaux de transactions uniquement)
    • storage.buckets.setIamPolicy (pour l'exportation des journaux de transactions 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 la console Google Cloud, 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 gcloud storage buckets add-iam-policy-binding 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.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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 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 fichier 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

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    
    

    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.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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 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 fichier 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

    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 :

    
    

    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 gcloud storage buckets add-iam-policy-binding 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.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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_BAK_FILE: chemin d'accès au fichier BAK SQL
    • DATABASE_NAME: nom de la 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_BAK_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.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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.

Exporter des journaux de transactions

Vous pouvez exporter les journaux de transactions des instances Cloud SQL Enterprise Plus pour lesquelles la récupération à un moment précis (PITR) est activée et dont les journaux sont stockés dans Cloud Storage.

gcloud

  1. Créez un bucket Cloud Storage pour l'exportation.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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. 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 gcloud storage buckets add-iam-policy-binding pour accorder le rôle IAM storage.Admin au compte de service. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Définir et gérer des stratégies IAM sur des buckets.
  4. Exportez les journaux des transactions.

    gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/FOLDER_PATH
    --export-log-start-time=START_DATE_AND_TIME /
    --export-log-end-time=END_DATE_AND_TIME /
    --database=DATABASE_NAME --bak-type=TLOG
      

    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

  1. Créer un bucket Cloud Storage

    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.Admin pour votre bucket. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Définir et gérer des stratégies IAM sur des buckets.
  3. Exportez les journaux 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.
    • FOLDER_PATH: chemin d'accès au dossier dans le bucket Cloud Storage. Cloud SQL exporte les journaux des transactions vers ce dossier.
    • DATABASE_NAME: nom de la base de données dans l'instance Cloud SQL.
    • exportLogStartTime: date et heure de début des journaux de transactions à exporter.
    • exportLogEndTime: date et heure de fin des journaux de transactions à exporter.

    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/FOLDER_PATH",
          "databases": ["DATABASE_NAME"]
          "bakExportOptions": {
            bakType:"TLOG"
            exportLogStartTime: START_DATE_AND_TIME
            exportLogEndTime: END_DATE_AND_TIME
          }
       }
    }
    

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

Utiliser l'exportation par bandes

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

  • Réduction du temps nécessaire aux 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 gcloud storage buckets add-iam-policy-binding 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 prévu. 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.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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 indiquer le nombre de bandes, le nombre de bandes optimal 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.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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 indiquer le nombre de bandes, le nombre de bandes optimal 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.

Plusieurs 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 la console Google Cloud, 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 Importer.
  4. Dans le champ Choisir un fichier à partir duquel importer, 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 de fichier, sélectionnez BAK.

  6. Dans la section Destination, spécifiez la base de données de votre instance Cloud SQL dans laquelle vous souhaitez importer le fichier BAK.
  7. Pour démarrer l'importation, cliquez sur Importer.

gcloud

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

    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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 gcloud storage buckets add-iam-policy-binding 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.
  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 gcloud storage buckets remove-iam-policy-binding.

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.

    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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 gcloud storage buckets add-iam-policy-binding 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.
  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 gcloud storage buckets remove-iam-policy-binding.

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

    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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 gcloud storage buckets add-iam-policy-binding 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.
  6. Importez une sauvegarde complète à l'aide du paramètre --no-recovery. Assurez-vous que votre base de données se trouve dans 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. Importez 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 les éléments suivants :
    • 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. Il s'agit d'un champ facultatif et la valeur doit s'afficher au format RFC 3339.
    • STOP_AT_MARK_NAME : transaction marquée à laquelle l'importation du journal des transactions doit s'arrêter. Il s'agit d'un champ facultatif qui 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 gcloud storage buckets remove-iam-policy-binding.

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. Assurez-vous que votre base de données se trouve dans 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. Il s'agit d'un champ facultatif et la valeur doit s'afficher au format RFC 3339.
    • STOP_AT_MARK_NAME : transaction marquée à laquelle l'importation du journal des transactions doit s'arrêter. Il s'agit d'un champ facultatif qui 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. Assurez-vous que votre base de données se trouve dans 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. Il s'agit d'un champ facultatif et la valeur doit s'afficher au format RFC 3339.
    • STOP_AT_MARK_NAME : transaction marquée à laquelle l'importation du journal des transactions doit s'arrêter. Il s'agit d'un champ facultatif qui 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 de journaux de 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éduction du temps nécessaire aux 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.

    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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 votre 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 le dossier 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 gcloud storage buckets add-iam-policy-binding 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 gcloud storage buckets remove-iam-policy-binding.

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