Charger des données MySQL dans BigQuery
Pour planifier des transferts de données récurrents de MySQL vers BigQuery, vous pouvez créer une configuration de transfert afin de spécifier les objets de données à transférer et la fréquence de planification du transfert de données. Une fois la configuration de transfert configurée, le service de transfert de données BigQuery transfère les dernières données dans une table BigQuery selon la planification spécifiée.
Pour savoir comment fonctionne un transfert MySQL, consultez la page Présentation des transferts de données MySQL.
Limites
Les transferts de données MySQL sont soumis aux limites 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, il 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 limite signifie également que le nombre de tâches de transfert simultanées doit être limité à une valeur inférieure au nombre maximal de connexions simultanées prises en charge par la base de données MySQL. - Une seule configuration de transfert ne peut prendre en charge qu'une seule exécution de transfert de données à un moment donné. Si un deuxième transfert de données est planifié avant la fin du premier, seul le premier transfert de données s'effectue, tandis que tous les autres transferts de données qui se chevauchent avec le premier sont ignorés.
- Pour éviter les transferts ignorés dans une seule configuration de transfert, nous vous recommandons d'augmenter la durée entre les transferts de données volumineux en configurant l'option Fréquence de répétition.
- Lors d'un transfert de données, le connecteur MySQL identifie les colonnes de clé indexées et partitionnées pour transférer vos données par lots parallèles. Pour cette raison, nous vous recommandons de spécifier des colonnes de clé primaire ou d'utiliser des colonnes indexées dans votre table afin d'améliorer les performances et de réduire le taux d'erreur dans vos transferts de données.
- Si vous avez des contraintes de clé primaire ou indexées, seuls les types de colonnes suivants sont compatibles avec la création de lots parallèles :
INTEGERTINYINTSMALLINTFLOATREALDOUBLENUMERICBIGINTDECIMALDATE
- Les transferts de données MySQL qui n'utilisent pas de clé primaire ni de colonnes indexées ne peuvent pas prendre en charge plus de 2 000 000 d'enregistrements par table.
- Si vous avez des contraintes de clé primaire ou indexées, seuls les types de colonnes suivants sont compatibles avec la création de lots parallèles :
Limites des transferts incrémentiels
Les transferts MySQL incrémentiels sont soumis aux limites suivantes :- Vous ne pouvez choisir que des colonnes
TIMESTAMPcomme colonnes de filigrane. - L'ingestion incrémentielle n'est compatible qu'avec les éléments comportant des colonnes de filigrane valides.
- Les valeurs d'une colonne de filigrane doivent augmenter de manière monotone.
- Les transferts incrémentiels ne peuvent pas synchroniser les opérations de suppression dans la table source.
- Une seule configuration de transfert ne peut prendre en charge qu'une ingestion incrémentielle ou complète.
- Vous ne pouvez pas mettre à jour les objets dans la liste
assetaprès la première exécution d'ingestion incrémentielle. - Vous ne pouvez pas modifier le mode d'écriture dans une configuration de transfert après la première exécution d'ingestion incrémentielle.
- Vous ne pouvez pas modifier la colonne de filigrane ni la clé primaire après la première exécution d'ingestion incrémentielle.
- La table BigQuery de destination est groupée à l'aide de la clé primaire fournie et est soumise aux limites des tables groupées.
Lorsque vous mettez à jour une configuration de transfert existante vers le mode d'ingestion incrémentielle pour la première fois, le premier transfert de données après cette mise à jour transfère toutes les données disponibles à partir de votre source de données. Tous les transferts de données incrémentiels ultérieurs ne transféreront que les lignes nouvelles et mises à jour de votre source de données.
Nous vous recommandons de créer des index sur la colonne de filigrane. Ce connecteur utilise des colonnes de filigrane pour les filtres dans les transferts incrémentiels. L'indexation de ces colonnes peut donc améliorer les performances.
Lorsque vous effectuez un transfert incrémentiel, vous devez utiliser le mappage de type de données mis à jour.
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.
- Vérifiez que vous disposez des rôles requis pour effectuer les tâches décrites dans ce document.
Rôles requis
Pour obtenir les autorisations nécessaires pour créer un transfert de données du service de transfert de données BigQuery, 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 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 du service de transfert de données BigQuery. 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 du service de transfert de données BigQuery :
-
Autorisations du service de transfert de données BigQuery :
-
bigquery.transfers.update -
bigquery.transfers.get
-
-
Autorisations BigQuery :
-
bigquery.datasets.get -
bigquery.datasets.getIamPolicy -
bigquery.datasets.update -
bigquery.datasets.setIamPolicy -
bigquery.jobs.create
-
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Pour en savoir plus, consultez la section Accorder l'accès bigquery.admin.
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.
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 Configurer l'accès à une instance Cloud SQL.
- Si vous effectuez un transfert à partir d'AWS, consultez Configurer le VPN AWSGoogle Cloud et le rattachement de réseau.
- Si vous effectuez un transfert à partir d'Azure, consultez Configurer le VPNGoogle Cloud Azure et le rattachement de réseau.
Charger des données MySQL dans BigQuery
Ajoutez des données MySQL dans BigQuery en configurant une configuration de transfert à l'aide de l'une des options suivantes :
Console
Accédez à la page Transferts de données.
Cliquez sur Créer un transfert.
Dans la section Type de source, accédez à la liste déroulante Source, puis sélectionnez MySQL.
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.
- Pour le champ Hôte, saisissez le nom d'hôte ou l'adresse IP du serveur de base de données MySQL.
- Pour le champ 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.
- Dans le champ Nom d'utilisateur, saisissez le nom d'utilisateur MySQL utilisateur qui établit la connexion à la base de données MySQL.
- Dans le champ Mot de passe, saisissez le mot de passe de l'utilisateur MySQL qui établit la connexion à la base de données MySQL.
- Dans le champ Mode TLS, sélectionnez une option dans le menu. Pour en savoir plus sur les modes TLS, consultez Configuration TLS.
- Dans le champ Certificat PEM approuvé, saisissez le certificat public de l'autorité de certification qui a émis le certificat TLS du serveur de base de données. Pour en savoir plus, consultez Certificat de serveur approuvé (PEM).
- Pour Activer le mappage hérité, sélectionnez true (vrai, par défaut) afin d'utiliser le mappage de type de données hérité. Sélectionnez false (faux) pour utiliser le nouveau mappage des types de données. Si vous effectuez un transfert incrémentiel, cette valeur doit être false. Pour en savoir plus sur les mises à jour du mappage des types de données , consultez la section 16 mars 2027.
- Pour Type d'ingestion, sélectionnez Complet ou Incrémentiel.
- Si vous sélectionnez Incrémentiel (Aperçu), pour Mode d'écriture, sélectionnez Ajouter ou Faire un upsert. Pour en savoir plus sur les différents modes d'écriture, consultez Transferts complets ou incrémentiels.
Pour Objets MySQL à transférer, cliquez sur Parcourir.
Sélectionnez les objets à transférer vers l'ensemble de données de destination BigQuery. Vous pouvez également saisir manuellement les objets à inclure dans le transfert de données dans ce champ.
- Si vous avez sélectionné Ajouter comme mode d'écriture incrémentielle, vous devez sélectionner une colonne comme colonne de filigrane.
- Si vous avez sélectionné Faire un upsert comme mode d'écriture incrémentielle, vous devez sélectionner une colonne comme colonne de filigrane, puis sélectionner une ou plusieurs colonnes comme clé primaire.
Dans la section Nom de la configuration de transfert, sous 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 s'exécute uniquement lorsque vous le déclenchez manuellement.
- Le cas échéant, sélectionnez l'option Démarrer maintenant ou Démarrer à une 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.
Facultatif : dans la section Options de notification, procédez comme suit :
- Pour activer les notifications par e-mail, cliquez sur le bouton Notifications par e-mail pour le mettre en position "Activé". Lorsque vous activez cette option, l'administrateur de transfert reçoit une notification par e-mail si l'exécution du transfert échoue.
- Pour configurer les notifications d'exécution Pub/Sub pour votre transfert, cliquez sur le bouton Notifications Pub/Sub pour le mettre en position "Activé". 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 Google Cloud projet.
Si vous ne fournissez pas d'indicateur
--project_idafin de 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 : 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 :connector.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 de l'utilisateur de base de données.connector.authentication.password: mot de passe de l'utilisateur de base de données. connector.connectionTypeconnector.connectionType(facultatif) : type de connexion permettant de déterminer l'URL de connexion. Il peut s'agir deSERVICE,SIDouTNS. Si aucune valeur n'est fournie, la valeur par défaut estSERVICE.connector.legacyMapping: défini surtrue(par défaut) pour utiliser le mappage de type de données hérité. Défini surfalse(faux) pour utiliser le nouveau mappage des types de données. Si vous effectuez un transfert incrémentiel, cette valeur doit êtrefalse. Pour en savoir plus sur les mises à jour du mappage des types de données , consultez la section 16 mars 2027.connector.tls.mode: spécifiez une configuration TLS à utiliser avec ce transfert :ENCRYPT_VERIFY_CA_AND_HOSTpour chiffrer les données, et valider la CA et le nom d'hôteENCRYPT_VERIFY_CApour chiffrer les données, et valider uniquement la CAENCRYPT_VERIFY_NONEpour le chiffrement des données uniquementDISABLEpour aucune encryption ni validation
connector.tls.trustedServerCertificate: (facultatif) fournissez un ou plusieurs certificats encodés au format PEM. Obligatoire uniquement siconnector.tls.modeestENCRYPT_VERIFY_CA_AND_HOSTouENCRYPT_VERIFY_CA.ingestionType: spécifiezfullouincremental. Les transferts incrémentiels sont compatibles avec la version preview. Pour en savoir plus, consultez Transferts complets ou incrémentiels.writeMode: spécifiezWRITE_MODE_APPENDouWRITE_MODE_UPSERT.watermarkColumns: spécifiez des colonnes dans votre table comme colonnes de filigrane. Ce champ est obligatoire pour les transferts incrémentiels.primaryKeys: spécifiez des colonnes dans votre table comme clés primaires. Ce champ est obligatoire pour les transferts incrémentiels.assets: liste des noms des tables MySQL à transférer depuis la base de données MySQL dans le cadre 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 "ingestionType":"incremental", "writeMode":"WRITE_MODE_APPEND", "watermarkColumns":["createdAt","createdAt"], "primaryKeys":[['dep_id'], ['report_by','report_title']], "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST", "connector.tls.trustedServerCertificate": "PEM-encoded certificate"}'
Lorsque vous spécifiez plusieurs éléments lors d'un transfert incrémentiel, les valeurs des champs watermarkColumns et primaryKeys correspondent à la position des valeurs dans le champ assets. Dans l'exemple suivant, dep_id correspond à la table DB1/USER1/DEPARTMENT, tandis que report_by et report_title correspondent à la table DB1/USER1/EMPLOYEES.
"primaryKeys":[['dep_id'], ['report_by','report_title']], "assets":["DB1/USER1/DEPARTMENT","DB1/USER1/EMPLOYEES"],
API
Utilisez la
projects.locations.transferConfigs.create méthode
et fournissez une instance de la
TransferConfig ressource.
Pour exécuter manuellement un transfert de données en dehors de votre planification régulière, vous pouvez démarrer une exécution de remplissage.
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.
Transférer des métadonnées
Vous pouvez également utiliser le connecteur MySQL pour transférer des métadonnées vers Knowledge Catalog. Pour en savoir plus, consultez la section Charger des métadonnées MySQL dans Knowledge Catalog.Étape suivante
- Consultez une présentation du service de transfert de données BigQuery.
- Découvrez comment gérer les transferts, y compris obtenir des informations sur une configuration de transfert, répertorier les configurations de transfert et afficher l'historique d'exécution d'un transfert.
- Découvrez comment charger des données avec les opérations BigQuery Omni.