Programmer un transfert MySQL
Le connecteur MySQL du service de transfert de données BigQuery vous permet d'ingérer les données de votre instance MySQL dans BigQuery. Il est compatible avec les instances MySQL hébergées dans votre environnement sur site, dans Cloud SQL et dans d'autres fournisseurs de services cloud public tels qu'Amazon Web Services (AWS) et Microsoft Azure. Le connecteur MySQL du service de transfert de données BigQuery vous permet également de créer des tâches de transfert de données récurrentes et à la demande pour transférer des données d'une base de données MySQL vers BigQuery.
Avant de commencer
- Créez un utilisateur dans la base de données MySQL.
- Vérifiez que vous avez effectué toutes les actions requises pour activer le service de transfert de données BigQuery.
- Créez un ensemble de données BigQuery pour stocker vos données.
- Assurez-vous de disposer des rôles requis pour effectuer les tâches décrites dans ce document.
Rôles requis
Si vous avez l'intention de configurer des notifications d'exécution de transfert pour Pub/Sub, assurez-vous de disposer de l'autorisation Identity and Access Management (IAM) pubsub.topics.setIamPolicy
. Les autorisations Pub/Sub ne sont pas nécessaires si vous ne configurez que des notifications par e-mail. Pour plus d'informations, consultez la page Notifications d'exécution du service de transfert de données BigQuery.
Pour obtenir les autorisations nécessaires pour créer un transfert de données MySQL, demandez à votre administrateur de vous accorder le rôle IAM Administrateur BigQuery (roles/bigquery.admin
) sur votre projet.
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Ce rôle prédéfini contient les autorisations requises pour créer un transfert de données MySQL. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour créer un transfert de données MySQL:
-
bigquery.transfers.update
-
bigquery.datasets.get
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Connexions réseau
Si aucune adresse IP publique n'est disponible pour la connexion à la base de données MySQL, vous devez configurer un rattachement de réseau.
Pour obtenir des instructions détaillées sur la configuration réseau requise, consultez les documents suivants:
- Si vous effectuez un transfert à partir de Cloud SQL, consultez la section Configurer l'accès à l'instance Cloud SQL.
- Si vous effectuez un transfert depuis AWS, consultez la section Configurer le VPN et l'association réseau AWS-Google Cloud .
- Si vous effectuez un transfert depuis Azure, consultez la section Configurer le VPN et l'association réseau Azure-Google Cloud .
Limites
Les transferts de données MySQL sont soumis aux limitations suivantes:
- Le nombre maximal de connexions simultanées à une base de données MySQL est déterminé par le paramètre de configuration MySQL
max_connections
. Par défaut, ce paramètre est défini sur 151 connexions, mais il peut être configuré sur une limite plus élevée si nécessaire. Par conséquent, le nombre d'exécutions de transfert simultanées vers une seule base de données MySQL est limité à cette quantité maximale. Cette limitation signifie également que le nombre d'opérations de transfert simultanées doit être limité à une valeur inférieure au nombre maximal de connexions simultanées compatibles avec la base de données MySQL. - Dans MySQL, certains types de données sont mappés sur le type de chaîne dans BigQuery pour éviter toute perte de données. Par exemple, les types numériques définis dans MySQL qui n'ont pas de précision et d'échelle définies sont mappés sur le type de chaîne dans BigQuery.
Configurer un transfert de données MySQL
Sélectionnez l'une des options suivantes :
Console
Accédez à la page Transferts de données.
Cliquez sur
Créer un transfert.Dans la section Source type (Type de source), sélectionnez MySQL pour Source.
Dans la section Transfer config name (Nom de la configuration de transfert), sous Display name (Nom à afficher), saisissez le nom du transfert. Ce nom peut correspondre à toute valeur permettant d'identifier le transfert si vous devez le modifier ultérieurement.
Dans la section Options de programmation, procédez comme suit :
- Sélectionnez une fréquence de répétition. Si vous sélectionnez l'option Heures, Jours (par défaut), Semaines ou Mois, vous devez également spécifier une fréquence. Vous pouvez également sélectionner l'option Personnalisé pour créer une fréquence de répétition plus spécifique. Si vous sélectionnez l'option À la demande, ce transfert de données ne s'exécute que lorsque vous déclenchez manuellement le transfert.
- Le cas échéant, sélectionnez l'option Commencer ou Commencer à l'heure définie, puis indiquez une date de début et une heure d'exécution.
Dans la section Paramètres de destination, pour le champ Ensemble de données, sélectionnez l'ensemble de données que vous avez créé pour stocker vos données, ou cliquez sur Créer un ensemble de données et créez-en un à utiliser comme ensemble de données de destination.
Dans la section Data source details (Détails de la source de données), procédez comme suit :
- Sous Rattachement de réseau, sélectionnez un rattachement de réseau existant ou cliquez sur Créer un rattachement de réseau. Pour en savoir plus, consultez la section Connexions réseau de ce document.
- Dans le champ Host (Hôte), saisissez le nom d'hôte ou l'adresse IP du serveur de base de données MySQL.
- Dans Numéro de port, saisissez le numéro de port du serveur de base de données MySQL.
- Dans le champ Nom de la base de données, saisissez le nom de la base de données MySQL.
- Pour Nom d'utilisateur, saisissez le nom d'utilisateur de l'utilisateur MySQL qui lance la connexion à la base de données MySQL.
- Dans le champ Mot de passe, saisissez le mot de passe de l'utilisateur MySQL qui lance la connexion à la base de données MySQL.
- Pour Encryption mode (Mode de chiffrement), sélectionnez Full (Complet) dans le menu pour activer la validation SSL complète lors de la connexion à la base de données MySQL, ou sélectionnez Disable (Désactiver) pour désactiver la validation SSL.
Pour les objets MySQL à transférer, procédez comme suit:
- Cliquez sur Parcourir pour sélectionner les tables MySQL requises pour le transfert, puis cliquez sur Sélectionner.
- Saisissez manuellement les noms des tables dans les objets MySQL à transférer.
Facultatif: Dans le menu Compte de service, spécifiez un compte de service personnalisé pour autoriser le transfert. Assurez-vous que le compte de service utilisé dispose de tous les rôles et autorisations nécessaires. Pour en savoir plus, consultez la section Transférer le propriétaire en tant que compte de service.
Facultatif : dans la section Options de notification, procédez comme suit :
- Pour activer les notifications par e-mail, cliquez sur le bouton bascule Notifications par e-mail pour l'activer. 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 configurer les notifications d'exécution Pub/Sub pour votre transfert, activez l'option Notifications Pub/Sub. Vous pouvez sélectionner le nom de votre sujet ou cliquer sur Créer un sujet pour en créer un.
Cliquez sur Enregistrer.
bq
Saisissez la commande bq mk
, puis spécifiez l'indicateur de création de transfert --transfer_config
:
bq mk \ --transfer_config \ --project_id=PROJECT_ID \ --data_source=DATA_SOURCE \ --display_name=DISPLAY_NAME \ --target_dataset=DATASET \ --params='PARAMETERS'
Remplacez les éléments suivants :
- PROJECT_ID (facultatif): ID de votre projet Google Cloud .
Si l'indicateur
--project_id
n'est pas fourni pour spécifier un projet particulier, le projet par défaut est utilisé. - DATA_SOURCE: source de données, qui est
mysql
. - DISPLAY_NAME : nom à afficher de la configuration de transfert de données. Ce nom peut correspondre à toute valeur permettant d'identifier le transfert si vous devez le modifier ultérieurement.
- DATASET : ensemble de données cible de la configuration de transfert de données.
PARAMETERS correspond aux paramètres de la configuration de transfert créée, au format JSON. Exemple :
--params='{"param":"param_value"}'
. Voici les paramètres d'un transfert MySQL:networkAttachment
(facultatif): nom du rattachement de réseau permettant de se connecter à la base de données MySQL.connector.database
: nom de la base de données MySQL.connector.endpoint.host
: nom d'hôte ou adresse IP de la base de données.connector.endpoint.port
: numéro de port de la base de données.connector.authentication.username
: nom d'utilisateur de l'utilisateur de la base de données.connector.authentication.password
: mot de passe de l'utilisateur de la base de données. connector.connectionTypeconnector.connectionType
(facultatif): type de connexion permettant de déterminer l'URL de connexion. Il peut s'agir deSERVICE
,SID
ouTNS
. Si cette valeur n'est pas spécifiée, la valeur par défaut estSERVICE
.connector.encryptionMode
: mode de chiffrement. Il peut s'agir deFULL
pour une validation SSL complète lors de la connexion à la base de données MySQL, ou deDISABLE
pour aucune validation SSL.assets
: liste des noms des tables MySQL à transférer depuis la base de données MySQL lors du transfert.
Par exemple, la commande suivante crée un transfert MySQL appelé My Transfer
:
bq mk \ --transfer_config \ --target_dataset=mydataset \ --data_source=mysql \ --display_name='My Transfer' \ --params='{"assets":["DB1/DEPARTMENT","DB1/EMPLOYEES"], \ "connector.authentication.username": "User1", \ "connector.authentication.password":"ABC12345", \ "connector.encryptionMode":"FULL", \ "connector.database":"DB1", \ "connector.endpoint.host":"54.74.220.23", \ "connector.endpoint.port":"3306"}'
API
Utilisez la méthode projects.locations.transferConfigs.create
et fournissez une instance de la ressource TransferConfig
.
Mappage des types de données
Le tableau suivant met en correspondance les types de données MySQL et les types de données BigQuery correspondants.
Type de donnée MySQL | Type de données BigQuery |
---|---|
BIT |
BOOLEAN |
TINYINT |
INTEGER |
BOOL , BOOLEAN |
BOOLEAN |
SMALLINT |
INTEGER |
MEDIUMINT |
INTEGER |
INT , INTEGER |
INTEGER |
BIGINT |
BIGNUMERIC |
FLOAT |
FLOAT |
DOUBLE |
FLOAT |
DECIMAL |
BIGNUMERIC |
DATE |
DATE |
DATETIME |
TIMESTAMP |
TIMESTAMP |
TIMESTAMP |
TIME |
TIME |
YEAR |
DATE |
CHAR |
STRING |
VARCHAR |
STRING |
BINARY |
BYTES |
VARBINARY |
BYTES |
TINYBLOB |
BYTES |
TINYTEXT |
STRING |
BLOB |
BYTES |
TEXT |
STRING |
MEDIUMBLOB |
BYTES |
MEDIUMTEXT |
STRING |
LONGBLOB |
BYTES |
LONGTEXT |
STRING |
ENUM |
STRING |
SET |
STRING |
Résoudre les problèmes
Si vous rencontrez des problèmes lors de la configuration de votre transfert de données, consultez la section Problèmes de transfert MySQL.
Étape suivante
- Pour une vue d'ensemble du service de transfert de données BigQuery, consultez la page Qu'est-ce que le service de transfert de données BigQuery ?.
- Pour plus d'informations sur l'utilisation des transferts, y compris l'obtention d'informations sur une configuration de transfert, la liste des configurations de transfert et l'affichage de l'historique d'exécution d'un transfert, consultez la page Gérer les transferts.
- Découvrez comment charger des données avec des opérations multicloud.