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 :
- Le rôle Éditeur Cloud SQL
- Un rôle personnalisé comprenant les autorisations suivantes :
cloudsql.instances.get
cloudsql.instances.export
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
-
Dans Google Cloud Console, accédez à la page Instances Cloud SQL.
- Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
- Cliquez sur Exporter.
- Dans la section Format de fichier, cliquez sur BAK.
- Dans la section Données à exporter, sélectionnez la base de données à utiliser pour l'exportation dans le menu déroulant.
- Dans la section Destination, sélectionnez Parcourir pour rechercher un bucket ou un dossier Cloud Storage pour l'exportation.
- Cliquez sur Exporter pour démarrer l'exportation.
gcloud
- Créer un bucket Cloud Storage
- 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 champserviceAccountEmailAddress
dans le résultat.gcloud sql instances describe INSTANCE_NAME
- Utilisez
gcloud storage buckets add-iam-policy-binding
pour accorder le rôle IAMstorage.objectAdmin
au compte de service. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM. - 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. - 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
- 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.
- 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. - 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 :
- Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, supprimez-le maintenant.
REST v1beta4
- 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.
- 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. - 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 :
- Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, révoquez-le maintenant.
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 :
- Vous envoyez une demande de sauvegarde complète à 7h00.
- Vous activez la récupération à un moment précis à 9h00. Cela déclenche une sauvegarde complète sur votre instance.
- 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
- Créer un bucket Cloud Storage
- 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 champserviceAccountEmailAddress
dans le résultat.gcloud sql instances describe INSTANCE_NAME
- Utilisez
gcloud storage buckets add-iam-policy-binding
pour accorder le rôle IAMstorage.objectAdmin
au compte de service. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM. 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.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.- 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
- 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.
- 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. - 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 ContentVous devriez recevoir une réponse JSON de ce type :
- 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 ContentVous devriez recevoir une réponse JSON de ce type :
- Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, supprimez-le maintenant.
REST v1beta4
- 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.
- 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. - 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 ContentVous devriez recevoir une réponse JSON de ce type :
- 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 ContentVous devriez recevoir une réponse JSON de ce type :
- Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, révoquez-le maintenant.
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. Le 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
- Créer un bucket Cloud Storage
- 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 champserviceAccountEmailAddress
dans le résultat.gcloud sql instances describe INSTANCE_NAME
- Utilisez
gcloud storage buckets add-iam-policy-binding
pour accorder le rôle IAMstorage.objectAdmin
au compte de service. Pour en savoir plus sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM. - 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. - 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
- 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.
- 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. - 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écifieztrue
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 étanttrue
.
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 :
- Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, supprimez-le maintenant.
REST v1beta4
- 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.
- 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. - 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écifieztrue
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 étanttrue
.
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 :
- Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, supprimez-le maintenant.
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 :
- Le rôle Administrateur Cloud SQL
- Un rôle personnalisé comprenant les autorisations suivantes :
cloudsql.instances.get
cloudsql.instances.import
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
KEEP_CDCKEEP_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
-
Dans Google Cloud Console, accédez à la page Instances Cloud SQL.
- Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
- Cliquez sur Importer.
- 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é. - Dans la section Format, sélectionnez BAK.
- Spécifiez la base de données de l'instance Cloud SQL dans laquelle vous souhaitez importer le fichier BAK.
- Cliquez sur Importer pour démarrer l'importation.
gcloud
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.
- Assurez-vous d'avoir configuré les rôles et autorisations requis.
- Importez les données du fichier BAK dans le bucket.
- Décrivez l'instance dans laquelle vous réalisez l'importation :
gcloud sql instances describe INSTANCE_NAME
- Copiez le champ
serviceAccountEmailAddress
. - Utilisez
gcloud storage buckets add-iam-policy-binding
pour accorder le rôle IAMstorage.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. - Importez les données du fichier :
Pour les importations chiffrées, exécutez la commande suivante :gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME
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
- 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
- Créer un bucket Cloud Storage
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.
- 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. - 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é
Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:import.importContext.importUser
. - Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les.
REST v1beta4
- Créer un bucket Cloud Storage
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.
- 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. - 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é
Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:import.importContext.importUser
. - 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
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.
- Assurez-vous d'avoir configuré les rôles et autorisations requis.
- Importez les données du fichier BAK dans le bucket.
- Décrivez l'instance dans laquelle vous réalisez l'importation :
gcloud sql instances describe INSTANCE_NAME
- Copiez le champ
serviceAccountEmailAddress
. - Utilisez
gcloud storage buckets add-iam-policy-binding
pour accorder le rôle IAMstorage.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. 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
-
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
-
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'étatRESTORING
.gcloud sql import bak INSTANCE_NAME \ --database=DATABASE_NAME --recovery-only
- 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
- Créer un bucket Cloud Storage
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.
- 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. -
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 ContentVous devriez recevoir une réponse JSON de ce type :
- 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 ContentVous devriez recevoir une réponse JSON de ce type :
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'étatRESTORING
.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 ContentVous devriez recevoir une réponse JSON de ce type :
- Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les.
REST v1beta4
- Créer un bucket Cloud Storage
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.
- 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. -
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 ContentVous devriez recevoir une réponse JSON de ce type :
- 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 ContentVous devriez recevoir une réponse JSON de ce type :
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'étatRESTORING
.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 ContentVous devriez recevoir une réponse JSON de ce type :
- 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
Créez un bucket Cloud Storage pour l'importation.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
- Importez les fichiers de sauvegarde dans le bucket.
- Décrivez l'instance dans laquelle vous réalisez l'importation :
gcloud sql instances describe INSTANCE_NAME
- Copiez le champ
serviceAccountEmailAddress
. - Utilisez
gcloud storage buckets add-iam-policy-binding
pour accorder le rôle IAMstorage.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. Importez une sauvegarde complète à l'aide du paramètre
--no-recovery
. Assurez-vous que votre base de données se trouve dans l'étatRESTORING
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
- Facultatif : Importer une sauvegarde différentielle.
-
Importez une sauvegarde du journal des transactions.
Remplacez les éléments suivants :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
- 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é.
-
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'étatRESTORING
.gcloud sql import bak INSTANCE_NAME \ --database=DATABASE_NAME --recovery-only
- 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
- Créer un bucket Cloud Storage
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.
- 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.
Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:import.
-
Importez une sauvegarde complète avec
noRecovery
. Assurez-vous que votre base de données se trouve dans l'étatRESTORING
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 ContentVous devriez recevoir une réponse JSON de ce type :
- Facultatif : Importer une sauvegarde différentielle.
- 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 ContentVous 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. 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'étatRESTORING
.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 ContentVous devriez recevoir une réponse JSON de ce type :
- Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les.
REST v1beta4
- Créer un bucket Cloud Storage
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.
- 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. -
Importez une sauvegarde complète avec
noRecovery
. Assurez-vous que votre base de données se trouve dans l'étatRESTORING
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 ContentVous devriez recevoir une réponse JSON de ce type :
- Facultatif : Importer une sauvegarde différentielle.
- Importez une sauvegarde du journal des transactions. Ici,
stopAt
etstopAtMark
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 ContentVous 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. 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'étatRESTORING
.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 ContentVous devriez recevoir une réponse JSON de ce type :
- 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
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.
- Assurez-vous d'avoir configuré les rôles IAM et autorisations requis.
- Créez un dossier dans votre bucket.
- 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.
- Décrivez l'instance à partir de laquelle vous souhaitez exporter :
gcloud sql instances describe INSTANCE_NAME
- Copiez le champ
serviceAccountEmailAddress
. - Utilisez
gcloud storage buckets add-iam-policy-binding
pour accorder le rôle IAMstorage.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. - 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
- 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
- Créer un bucket Cloud Storage
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.
- 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. - 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é
Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:import.importContext.importUser
. - Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les.
REST v1beta4
- Créer un bucket Cloud Storage
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.
- 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. - 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é
Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:import.importContext.importUser
. - 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
- Apprenez à vérifier l'état des opérations d'importation et d'exportation.
- Découvrez les bonnes pratiques pour l'importation et l'exportation de données.
- Problèmes connus concernant les importations et les exportations