Migrer le schéma et les données depuis Amazon Redshift
Ce document décrit le processus de migration des données depuis Amazon Redshift vers BigQuery à l'aide d'adresses IP publiques.
Vous pouvez utiliser le service de transfert de données BigQuery pour copier vos données d'un entrepôt de données Amazon Redshift vers BigQuery. Le service engage les agents de migration dans GKE et déclenche une opération de déchargement depuis Amazon Redshift vers une zone de préproduction d'un bucket Amazon S3. Ensuite, le service de transfert de données BigQuery transférera vos données du compartiment Amazon S3 vers BigQuery.
Ce schéma montre la circulation globale des données lors de la migration entre un entrepôt de données Amazon Redshift et un entrepôt BigQuery.
Si vous souhaitez transférer des données de votre instance Amazon Redshift via un cloud privé virtuel (VPC) sur des adresses IP privées, consultez la page Migrer des données Amazon Redshift avec un réseau VPC.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and BigQuery Data Transfer Service APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and BigQuery Data Transfer Service APIs.
Définir les autorisations requises
Avant de créer un transfert Amazon Redshift :
Assurez-vous que le compte principal qui crée le transfert dispose des autorisations suivantes dans le projet contenant la tâche de transfert :
- Autorisations
bigquery.transfers.update
pour créer le transfert - Autorisations
bigquery.datasets.get
etbigquery.datasets.update
sur l'ensemble de données cible
Le rôle IAM (Identity and Access Management) prédéfini
roles/bigquery.admin
inclut les autorisationsbigquery.transfers.update
,bigquery.datasets.update
etbigquery.datasets.get
. Pour en savoir plus sur les rôles IAM associés au service de transfert de données BigQuery, consultez la page Contrôle des accès.- Autorisations
Consultez la documentation d'Amazon S3 pour vous assurer que vous avez configuré toutes les autorisations nécessaires pour activer le transfert. Au minimum, la stratégie AWS gérée
AmazonS3ReadOnlyAccess
doit être appliquée aux données sources Amazon S3.
Créer un ensemble de données
Créez un ensemble de données BigQuery pour stocker vos données. Vous n'avez pas besoin de créer de tables.
Accorder l'accès à votre cluster Amazon Redshift
Suivez les instructions de la page Configurer les règles entrantes pour les clients SQL pour ajouter les adresses IP suivantes à la liste d'autorisation. Vous pouvez autoriser les adresses IP correspondant à l'emplacement de votre ensemble de données ou toutes les adresses IP du tableau ci-dessous. Les adresses IP suivantes, qui appartiennent à Google, sont réservées aux migrations de données Amazon Redshift.
Zones régionales
Description de la région | Nom de la région | Adresses IP | |
---|---|---|---|
Amériques | |||
Columbus, Ohio | us-east5 |
34.162.72.184 34.162.173.185 34.162.205.205 34.162.81.45 34.162.182.149 34.162.59.92 34.162.157.190 34.162.191.145 |
|
Dallas | us-south1 |
34.174.172.89 34.174.40.67 34.174.5.11 34.174.96.109 34.174.148.99 34.174.176.19 34.174.253.135 34.174.129.163 |
|
Iowa | us-central1 |
34.121.70.114 34.71.81.17 34.122.223.84 34.121.145.212 35.232.1.105 35.202.145.227 35.226.82.216 35.225.241.102 |
|
Las Vegas | us-west4 |
34.125.53.201 34.125.69.174 34.125.159.85 34.125.152.1 34.125.195.166 34.125.50.249 34.125.68.55 34.125.91.116 |
|
Los Angeles | us-west2 |
35.236.59.167 34.94.132.139 34.94.207.21 34.94.81.187 34.94.88.122 35.235.101.187 34.94.238.66 34.94.195.77 |
|
Montréal | northamerica-northeast1 |
34.95.20.253 35.203.31.219 34.95.22.233 34.95.27.99 35.203.12.23 35.203.39.46 35.203.116.49 35.203.104.223 |
|
Virginie du Nord | us-east4 |
35.245.95.250 35.245.126.228 35.236.225.172 35.245.86.140 35.199.31.35 35.199.19.115 35.230.167.48 35.245.128.132 35.245.111.126 35.236.209.21 |
|
Oregon | us-west1 |
35.197.117.207 35.199.178.12 35.197.86.233 34.82.155.140 35.247.28.48 35.247.31.246 35.247.106.13 34.105.85.54 |
|
Salt Lake City | us-west3 |
34.106.37.58 34.106.85.113 34.106.28.153 34.106.64.121 34.106.246.131 34.106.56.150 34.106.41.31 34.106.182.92 |
|
São Paulo | southamerica-east1 |
35.199.88.228 34.95.169.140 35.198.53.30 34.95.144.215 35.247.250.120 35.247.255.158 34.95.231.121 35.198.8.157 |
|
Santiago | southamerica-west1 |
34.176.188.48 34.176.38.192 34.176.205.134 34.176.102.161 34.176.197.198 34.176.223.236 34.176.47.188 34.176.14.80 |
|
Caroline du Sud | us-east1 |
35.196.207.183 35.237.231.98 104.196.102.222 35.231.13.201 34.75.129.215 34.75.127.9 35.229.36.137 35.237.91.139 |
|
Toronto | northamerica-northeast2 |
34.124.116.108 34.124.116.107 34.124.116.102 34.124.116.80 34.124.116.72 34.124.116.85 34.124.116.20 34.124.116.68 |
|
Europe | |||
Belgique | europe-west1 |
35.240.36.149 35.205.171.56 34.76.234.4 35.205.38.234 34.77.237.73 35.195.107.238 35.195.52.87 34.76.102.189 |
|
Berlin | europe-west10 |
34.32.28.80 34.32.31.206 34.32.19.49 34.32.33.71 34.32.15.174 34.32.23.7 34.32.1.208 34.32.8.3 |
|
Finlande | europe-north1 |
35.228.35.94 35.228.183.156 35.228.211.18 35.228.146.84 35.228.103.114 35.228.53.184 35.228.203.85 35.228.183.138 |
|
Francfort | europe-west3 |
35.246.153.144 35.198.80.78 35.246.181.106 35.246.211.135 34.89.165.108 35.198.68.187 35.242.223.6 34.89.137.180 |
|
Londres | europe-west2 |
35.189.119.113 35.189.101.107 35.189.69.131 35.197.205.93 35.189.121.178 35.189.121.41 35.189.85.30 35.197.195.192 |
|
Madrid | europe-southwest1 |
34.175.99.115 34.175.186.237 34.175.39.130 34.175.135.49 34.175.1.49 34.175.95.94 34.175.102.118 34.175.166.114 |
|
Milan | europe-west8 |
34.154.183.149 34.154.40.104 34.154.59.51 34.154.86.2 34.154.182.20 34.154.127.144 34.154.201.251 34.154.0.104 |
|
Pays-Bas | europe-west4 |
35.204.237.173 35.204.18.163 34.91.86.224 34.90.184.136 34.91.115.67 34.90.218.6 34.91.147.143 34.91.253.1 |
|
Paris | europe-west9 |
34.163.76.229 34.163.153.68 34.155.181.30 34.155.85.234 34.155.230.192 34.155.175.220 34.163.68.177 34.163.157.151 |
|
Turin | europe-west12 |
34.17.15.186 34.17.44.123 34.17.41.160 34.17.47.82 34.17.43.109 34.17.38.236 34.17.34.223 34.17.16.47 |
|
Varsovie | europe-central2 |
34.118.72.8 34.118.45.245 34.118.69.169 34.116.244.189 34.116.170.150 34.118.97.148 34.116.148.164 34.116.168.127 |
|
Zurich | europe-west6 |
34.65.205.160 34.65.121.140 34.65.196.143 34.65.9.133 34.65.156.193 34.65.216.124 34.65.233.83 34.65.168.250 |
|
Asie-Pacifique | |||
Delhi | asia-south2 |
34.126.212.96 34.126.212.85 34.126.208.224 34.126.212.94 34.126.208.226 34.126.212.232 34.126.212.93 34.126.212.206 |
|
Hong Kong | asia-east2 |
34.92.245.180 35.241.116.105 35.220.240.216 35.220.188.244 34.92.196.78 34.92.165.209 35.220.193.228 34.96.153.178 |
|
Jakarta | asia-southeast2 |
34.101.79.105 34.101.129.32 34.101.244.197 34.101.100.180 34.101.109.205 34.101.185.189 34.101.179.27 34.101.197.251 |
|
Melbourne | australia-southeast2 |
34.126.196.95 34.126.196.106 34.126.196.126 34.126.196.96 34.126.196.112 34.126.196.99 34.126.196.76 34.126.196.68 |
|
Mumbai | asia-south1 |
34.93.67.112 35.244.0.1 35.200.245.13 35.200.203.161 34.93.209.130 34.93.120.224 35.244.10.12 35.200.186.100 |
|
Osaka | asia-northeast2 |
34.97.94.51 34.97.118.176 34.97.63.76 34.97.159.156 34.97.113.218 34.97.4.108 34.97.119.140 34.97.30.191 |
|
Séoul | asia-northeast3 |
34.64.152.215 34.64.140.241 34.64.133.199 34.64.174.192 34.64.145.219 34.64.136.56 34.64.247.158 34.64.135.220 |
|
Singapour | asia-southeast1 |
34.87.12.235 34.87.63.5 34.87.91.51 35.198.197.191 35.240.253.175 35.247.165.193 35.247.181.82 35.247.189.103 |
|
Sydney | australia-southeast1 |
35.189.33.150 35.189.38.5 35.189.29.88 35.189.22.179 35.189.20.163 35.189.29.83 35.189.31.141 35.189.14.219 |
|
Taïwan | asia-east1 |
35.221.201.20 35.194.177.253 34.80.17.79 34.80.178.20 34.80.174.198 35.201.132.11 35.201.223.177 35.229.251.28 35.185.155.147 35.194.232.172 |
|
Tokyo | asia-northeast1 |
34.85.11.246 34.85.30.58 34.85.8.125 34.85.38.59 34.85.31.67 34.85.36.143 34.85.32.222 34.85.18.128 34.85.23.202 34.85.35.192 |
|
Moyen-Orient | |||
Dammam | me-central2 |
34.166.20.177 34.166.10.104 34.166.21.128 34.166.19.184 34.166.20.83 34.166.18.138 34.166.18.48 34.166.23.171 |
|
Doha | me-central1 |
34.18.48.121 34.18.25.208 34.18.38.183 34.18.33.25 34.18.21.203 34.18.21.80 34.18.36.126 34.18.23.252 |
|
Tel Aviv | me-west1 |
34.165.184.115 34.165.110.74 34.165.174.16 34.165.28.235 34.165.170.172 34.165.187.98 34.165.85.64 34.165.245.97 |
|
Afrique | |||
Johannesburg | africa-south1 |
34.35.11.24 34.35.10.66 34.35.8.32 34.35.3.248 34.35.2.113 34.35.5.61 34.35.7.53 34.35.3.17 |
Zones multirégionales
Description de la zone multirégionale | Nom de la zone multirégionale | Adresses IP |
---|---|---|
Centres de données dans les États membres de l'Union européenne1 | EU |
34.76.156.158 34.76.156.172 34.76.136.146 34.76.1.29 34.76.156.232 34.76.156.81 34.76.156.246 34.76.102.206 34.76.129.246 34.76.121.168 |
Centres de données aux États-Unis | US |
35.185.196.212 35.197.102.120 35.185.224.10 35.185.228.170 35.197.5.235 35.185.206.139 35.197.67.234 35.197.38.65 35.185.202.229 35.185.200.120 |
1 Les données situées dans la zone multirégionale EU
ne sont pas stockées dans les centres de données des régions europe-west2
(Londres) ou europe-west6
(Zurich).
Accorder l'accès à votre bucket Amazon S3
Vous devez disposer d'un bucket Amazon S3 à utiliser comme zone intermédiaire pour transférer les données Amazon Redshift vers BigQuery. Pour obtenir des instructions détaillées, consultez la documentation Amazon.
Nous vous recommandons de créer un utilisateur IAM Amazon dédié et de lui octroyer uniquement un accès en lecture à Amazon Redshift ainsi qu'un accès en lecture et en écriture à Amazon S3. Pour réaliser cette étape, vous pouvez appliquer les règles suivantes :
Créez une paire de clés d'accès utilisateur IAM Amazon.
Configurer le contrôle de la charge de travail avec une file d'attente de migration distincte
Vous pouvez définir une file d'attente Amazon Redshift à des fins de migration pour limiter et séparer les ressources utilisées pour la migration. Vous pouvez configurer cette file d'attente de migration avec un nombre maximal de requêtes simultanées. Vous pouvez ensuite associer un groupe d'utilisateurs de migration donné à la file d'attente, et utiliser ces identifiants lorsque vous configurez la migration pour transférer des données vers BigQuery. Le service de transfert a uniquement accès à la file d'attente de migration.
Recueillir les informations de transfert
Recueillez les informations dont vous avez besoin pour configurer la migration avec le service de transfert de données BigQuery :
- Suivez ces instructions pour obtenir l'URL JDBC.
- Obtenez le nom d'utilisateur et le mot de passe d'un utilisateur disposant des autorisations appropriées pour votre base de données Amazon Redshift.
- Suivez les instructions de la section Accorder l'accès à votre bucket Amazon S3 pour obtenir une paire de clé d'accès AWS.
- Obtenez l'URI du bucket Amazon S3 que vous souhaitez utiliser pour le transfert. Nous vous recommandons de définir une règle de Lifecycle pour ce bucket afin d'éviter des frais inutiles. Nous recommandons une durée d'expiration de 24 heures afin de laisser suffisamment de temps pour le transfert de toutes les données vers BigQuery.
Évaluer les données
Dans le cadre du transfert de données, le Service de transfert de données BigQuery écrit les données d'Amazon Redshift dans Cloud Storage sous forme de fichiers CSV. Si ces fichiers contiennent le caractère ASCII 0, ils ne peuvent pas être chargés dans BigQuery. Nous vous suggérons d'évaluer vos données pour déterminer si cela peut poser problème. Si tel est le cas, vous pouvez contourner ce problème en exportant vos données vers Amazon S3 sous forme de fichiers Parquet, puis en les important à l'aide du Service de transfert de données BigQuery. Pour en savoir plus, consultez la page Présentation des transferts Amazon S3.
Configurer un transfert Amazon Redshift
Sélectionnez l'une des options suivantes :
Console
Dans la console Google Cloud, accédez à la page BigQuery.
Cliquez sur Transferts de données.
Cliquez sur Créer un transfert.
Dans la section Source type (Type de source), sélectionnez Migration: Amazon Redshift (Migration : Amazon Redshift) dans la liste Source.
Dans la section Transfer config name (Nom de la configuration de transfert), saisissez un nom pour le transfert, tel que
My migration
, dans le champ Display name (Nom à afficher). Le nom à afficher peut être n'importe quelle valeur permettant d'identifier facilement le transfert si vous devez le modifier par la suite.Dans la section Destination settings (Paramètres de destination), choisissez l'ensemble de données que vous avez créé dans la liste Dataset (Ensemble de données).
Dans la section Data source details (Détails de la source de données), procédez comme suit :
- Pour JDBC connection url for Amazon Redshift, (URL de connexion JDBC pour Amazon Redshift), indiquez l'URL JDBC qui permet d'accéder à votre cluster Amazon Redshift.
- Sous Username of your database (Nom d'utilisateur de votre base de données), saisissez le nom d'utilisateur de la base de données Amazon Redshift que vous souhaitez migrer.
Sous Password of your database (Mot de passe de votre base de données), entrez le mot de passe de la base de données.
Dans les champs Access key ID (ID de clé d'accès) et Secret access key (Clé d'accès secrète), saisissez la paire de clés d'accès obtenue à l'étape Accorder l'accès à votre bucket S3.
Pour Amazon S3 URI (URI Amazon S3), saisissez l'URI du bucket S3 que vous utiliserez comme zone intermédiaire.
Sous Amazon Redshift Schema (Schéma Amazon Redshift), saisissez le schéma Amazon Redshift à partir duquel vous souhaitez migrer des tables.
Sous Table name patterns (Modèles de nom de table), spécifiez un nom ou un modèle pour faire correspondre les noms de table dans le schéma. Vous pouvez utiliser des expressions régulières pour spécifier le modèle au format suivant :
<table1Regex>;<table2Regex>
. Le modèle doit suivre la syntaxe d'expression régulière Java. Exemple :lineitem;ordertb
renvoie les tables nomméeslineitem
etordertb
..*
renvoie toutes les tables.
Laissez ce champ vide pour migrer toutes les tables à partir du schéma spécifié.
Pour VPC et la plage d'adresses IP réservée, laissez le champ vide.
Dans le menu Compte de service, sélectionnez un compte de service parmi ceux associés à votre projet Google Cloud. Vous pouvez associer un compte de service à votre transfert au lieu d'utiliser vos identifiants utilisateur. Pour en savoir plus sur l'utilisation des comptes de service avec des transferts de données, consultez la page Utiliser des comptes de service.
- Si vous vous êtes connecté avec une identité fédérée, vous devez disposer d'un compte de service pour créer un transfert. Si vous vous êtes connecté avec un compte Google, un compte de service pour le transfert est facultatif.
- Le compte de service doit disposer des autorisations requises.
Facultatif : dans la section Options de notification, procédez comme suit :
- Cliquez sur le bouton pour activer les notifications par e-mail. Lorsque vous activez cette option, l'administrateur de transfert reçoit une notification par e-mail en cas d'échec de l'exécution du transfert.
- Pour le champ Select a Pub/Sub topic (Sélectionner un sujet Pub/Sub), choisissez le nom de votre sujet ou cliquez sur Create a topic (Créer un sujet). Cette option configure les notifications d'exécution Cloud Pub/Sub pour votre transfert.
Cliquez sur Enregistrer.
La console Google Cloud affiche tous les détails de configuration du transfert, y compris un nom de ressource pour ce transfert.
bq
Saisissez la commande bq mk
, puis spécifiez l'option de création de transfert --transfer_config
. Les paramètres suivants sont également requis :
--project_id
--data_source
--target_dataset
--display_name
--params
bq mk \ --transfer_config \ --project_id=project_id \ --data_source=data_source \ --target_dataset=dataset \ --display_name=name \ --service_account_name=service_account \ --params='parameters'
Où :
- project_id correspond à votre ID de projet Google Cloud. Si
--project_id
n'est pas spécifié, le projet par défaut est utilisé. - data_source correspond à la source de données :
redshift
. - dataset est l'ensemble de données cible de BigQuery pour la configuration de transfert.
- name est le nom à afficher pour la configuration de transfert. Ce nom peut correspondre à toute valeur permettant d'identifier le transfert si vous devez le modifier ultérieurement.
- service_account : est le nom du compte de service utilisé pour authentifier le transfert. Le compte de service doit appartenir au même
project_id
que celui utilisé pour créer le transfert et doit disposer de toutes les autorisations requises. - parameters contient les paramètres de la configuration de transfert créée au format JSON. Exemple :
--params='{"param":"param_value"}'
.
Les paramètres requis pour une configuration de transfert Amazon Redshift sont les suivants :
jdbc_url
: l'URL de connexion JDBC permet de localiser le cluster Amazon Redshift.database_username
: nom d'utilisateur permettant d'accéder à votre base de données pour décharger les tables spécifiées.database_password
: mot de passe utilisé avec le nom d'utilisateur pour accéder à votre base de données afin de décharger les tables spécifiées.access_key_id
: ID de clé d'accès permettant de signer les requêtes adressées à AWS.secret_access_key
: clé d'accès secrète utilisée avec l'ID de clé d'accès pour signer les requêtes adressées à AWS.s3_bucket
: URI Amazon S3 commençant par "s3://" et spécifiant un préfixe pour les fichiers temporaires à utiliser.redshift_schema
: schéma Amazon Redshift contenant toutes les tables à migrer.table_name_patterns
: modèles de nom de table séparés par un point-virgule (;). Le format de table est une expression régulière pour la/les table(s) à migrer. Si non spécifié, toutes les tables situées sous le schéma de la base de données seront transférées.
Par exemple, la commande suivante crée un transfert Amazon Redshift nommé My Transfer
avec un ensemble de données cible nommé mydataset
et un projet dont l'ID est google.com:myproject
.
bq mk \
--transfer_config \
--project_id=myproject \
--data_source=redshift \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"jdbc_url":"jdbc:postgresql://test-example-instance.sample.us-west-1.redshift.amazonaws.com:5439/dbname","database_username":"my_username","database_password":"1234567890","access_key_id":"A1B2C3D4E5F6G7H8I9J0","secret_access_key":"1234567890123456789012345678901234567890","s3_bucket":"s3://bucket/prefix","redshift_schema":"public","table_name_patterns":"table_name"}'
API
Utilisez la méthode projects.locations.transferConfigs.create
et fournissez une instance de la ressource TransferConfig
.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Quotas et limites
BigQuery a un quota de charge de 15 To par tâche de chargement et par table. En interne, Amazon Redshift compresse les données de la table. La taille de la table exportée sera donc supérieure à celle indiquée par Amazon Redshift. Si vous envisagez de migrer une table de plus de 15 To, contactez d'abord le Cloud Customer Care.
L'utilisation de ce service peut engendrer des coûts hors de Google. Consultez les pages de tarification d'Amazon Redshift et d'Amazon S3 pour en savoir plus.
En raison du modèle de cohérence d'Amazon S3, il est possible que certains fichiers ne soient pas inclus dans le transfert vers BigQuery.
Étape suivante
- Apprenez-en davantage sur la migration d'instances privées Amazon Redshift avec un réseau VPC.
- Obtenez plus d'informations sur le Service de transfert de données BigQuery.
- Migrez du code SQL avec la traduction SQL par lot.