Dépanner les problèmes d'ingestion MySQL
Aperçu
Le connecteur MySQL est en préversion publique. Contactez votre équipe de compte Databricks pour demander l'accès.
Cette page contient des références au terme slave , un terme que Databricks n'utilise pas. Lorsque le terme est supprimé de l'outil tiers, nous le supprimons de cette page.
Pour des conseils généraux de dépannage applicables à tous les pipelines d'ingestion gérés, consultez Dépanner les pipelines d'ingestion gérés.
Dépannage spécifique au connecteur
Les étapes de dépannage de cette section sont spécifiques au connecteur MySQL.
Problèmes de connexion
Le bouton Test Connection échoue
**Problème** : Le bouton **Test de connexion** échoue dans l'interface utilisateur, même si les identifiants sont corrects.
Cause : Il s’agit d’une limitation connue pour les utilisateurs MySQL avec les plugins d’authentification sha256_password ou caching_sha2_password.
Solutions : Vous pouvez ignorer cette erreur en toute sécurité et poursuivre la création de la connexion. Pour confirmer que vos informations d'identification fonctionnent, exécutez ce qui suit dans le client de ligne de commande MySQL ou un autre outil client MySQL :
mysql -h your-mysql-host -u lakeflow_connect_user -p
Si vous pouvez vous connecter avec le client MySQL, la connexion fonctionnera pour l'ingestion malgré l'échec de Test de la connexion .
Impossible de se connecter au serveur MySQL
Problème : La connexion échoue avec des erreurs telles que « Impossible de se connecter au serveur MySQL » ou « Connexion refusée ».
**Causes et solutions possibles** :
-
Connectivité réseau :
- Vérifiez que les règles de pare-feu autorisent le trafic depuis les plages IP Databricks sur le port 3306.
- Vérifiez les groupes de sécurité (AWS), les NSG (Azure) ou les règles de pare-feu (GCP).
- Vérifier que le peering Virtual Private Cloud (VPC) ou la connectivité réseau est correctement configurée.
-
MySQL n'écoute pas sur l'interface attendue :
- Vérifiez le paramètre MySQL
bind-address. - Assurez-vous que MySQL est à l'écoute sur
0.0.0.0ou sur l'adresse IP spécifique à laquelle vous vous connectez.
- Vérifiez le paramètre MySQL
-
**Hôte ou port incorrect** :
- Vérifiez que le Hostname ou l'adresse IP est correcte.
- Confirmez que le port (default 3306) est correct.
Accès refusé pour l’utilisateur
Problème : la connexion échoue avec « Accès refusé pour l'utilisateur 'lakeflow_connect_user'@'host' ».
**Causes et solutions possibles** :
-
**Mot de passe incorrect** : Vérifiez que le mot de passe est correct
-
Utilisateur non créé ou hôte incorrect :
SQL-- Check if user exists
SELECT User, Host FROM mysql.user WHERE User = 'lakeflow_connect_user';
-- User might need to be created for specific host or '%'
CREATE USER 'lakeflow_connect_user'@'%' IDENTIFIED BY 'password'; -
Privilèges manquants :
SQL-- Grant required privileges
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'lakeflow_connect_user'@'%';
GRANT SELECT ON your_database.* TO 'lakeflow_connect_user'@'%';
FLUSH PRIVILEGES;
Problèmes de logs binaires
Journalisation binaire non activée
Problème : Le pipeline échoue avec une erreur indiquant que la journalisation binaire n'est pas activée. La même catégorie d’erreur INGESTION_GATEWAY_CDC_NOT_ENABLED est signalée lorsque MySQL répond avec Binary log is not open. Dans ce cas, les tables affectées sont ignorées.
Cause : le journal binaire est désactivé sur la source.
Solution : Activez la journalisation binaire sur votre serveur MySQL :
- RDS/Aurora : configurez le groupe de paramètres et redémarrez.
- « **Azure MySQL** : Configurez les paramètres du serveur et redémarrez. »
- GCP Cloud SQL : Configurez les indicateurs de base de données et redémarrez.
- EC2 : Modifiez
my.cnfet ajoutezlog-bin=mysql-bin, puis redémarrez MySQL.
Vérifier avec :
SHOW VARIABLES LIKE 'log_bin';
-- Should return ON
Une fois le journal binaire activé, effectuez un refresh complet des tables ignorées. Voir refresh complètement les tables cibles.
Mauvais format binlog
Problème : le Pipeline échoue car le format binlog n'est pas ROW.
Solution : définissez le format binlog sur ROW:
- RDS/Aurora : définissez
binlog_format=ROWdans le groupe de paramètres. - **Azure MySQL** : Définissez
binlog_format=ROWdans les paramètres du serveur. - GCP Cloud SQL : définissez
binlog_format=ROWdans les indicateurs de base de données. - EC2 : ajoutez
binlog_format=ROWàmy.cnf.
Redémarrez MySQL et vérifiez :
SHOW VARIABLES LIKE 'binlog_format';
-- Should return ROW
Binlog purgé avant le traitement
Problème : Échec du pipeline avec une erreur concernant des fichiers binlog manquants.
Cause : Les Logs binaires ont été purgés avant que la passerelle d'ingestion puisse les traiter.
Solutions :
-
Augmenter la rétention du journal binaire :
SQL-- RDS/Aurora:
-- Minimum: one day (24 hours), recommended: seven days (168 hours)
CALL mysql.rds_set_configuration('binlog retention hours', 168);
-- EC2 (MySQL 8.0):
-- Minimum: one day (86400 seconds), recommended: seven days (604800 seconds)
SET GLOBAL binlog_expire_logs_seconds = 604800;
-- EC2 (MySQL 5.7):
-- Minimum: one day, recommended: seven days
SET GLOBAL expire_logs_days = 7; -
Effectuer un refresh complet des tables affectées :
- Consultez Refresh complet des tables cibles
-
Assurez-vous que la passerelle d'ingestion fonctionne en continu.
Prévention : Configurez une rétention adéquate du journal binaire (un jour minimum, sept jours recommandés). Définir une valeur inférieure peut entraîner le nettoyage des journaux binaires avant que la passerelle d'ingestion ne les traite.
Position binlog illisible
Problème : La mise à jour du pipeline échoue avec la classe d’erreur INGESTION_GATEWAY_MYSQL_BINLOG_POSITION_UNREADABLE. Le message d'erreur indique le nom et la position du fichier binlog, et inclut l'erreur rapportée par MySQL (erreur MySQL 1236), telle que I/O error reading log event ou binlog truncated in the middle of event.
Cause : le fichier binlog existe, mais MySQL ne peut pas lire l’événement à la position que la passerelle a analysée.
Solution : effectuez un refresh complète de toutes les tables du pipeline. Cela prend un nouvel instantané et reprend la CDC à partir d'une position de binlog actuelle. Voir refresh complètement les tables cibles.
Pour déterminer la cause, connectez-vous au serveur MySQL source et vérifiez les points suivants. Faites-le avant que le fichier binlog ne soit purgé, car le fichier risque d'être supprimé une fois votre période de rétention écoulée.
-
Vérifiez que le fichier binlog indiqué dans l'erreur existe toujours :
SQLSHOW BINARY LOGS; -
Vérifiez si MySQL peut lire les événements à la position indiquée dans l’erreur. Remplacez le nom du fichier et la position par les valeurs du message d’erreur :
SQLSHOW BINLOG EVENTS IN 'mysql-bin-changelog.000123' FROM 12345 LIMIT 5;Si cette query échoue également, le problème se situe sur le serveur source et non dans la passerelle d’ingestion.
-
Vérifiez le paramètre de rétention binlog et l'espace disque disponible sur le serveur source. Consultez Binlog purgé avant traitement pour savoir comment définir la rétention.
Si vous contactez le support Databricks, incluez la sortie des deux premières query ainsi que le message d’erreur complet.
Problèmes de passerelle d'ingestion
Passerelle ne démarrant pas
Problème : La passerelle d'ingestion ne start pas ou échoue immédiatement.
**Causes et solutions possibles** :
-
Problèmes de connexion : Vérifiez que la connexion fonctionne (voir Problèmes de connexion).
-
Ressources compute insuffisantes :
- Vérifiez les autorisations et les politiques de création de clusters.
-
**Problèmes de volume de pré-production** :
- Vérifiez que vous disposez de
CREATE VOLUMEprivilèges sur le schéma de staging. - Vérifiez que le catalogue de préproduction n’est pas un catalogue étranger.
- Vérifiez que vous disposez de
Passerelle en cours d'exécution mais ne capturant pas les changements
Problème : la passerelle est en cours d’exécution, mais les nouvelles modifications ne sont pas capturées.
**Causes et solutions possibles** :
-
Rétention du journal binaire trop courte :
- Augmenter la rétention du binlog.
- Surveillez les fichiers binlog pour vous assurer qu'ils ne sont pas purgés trop rapidement.
-
Interruptions réseau :
- Vérifiez les problèmes de connectivité réseau.
- Passez en revue les Logs de la passerelle pour les erreurs de connexion.
Problèmes de pipeline d’ingestion
Tables non ingérées
Problème : Certaines tables ne sont pas ingérées, même si elles sont sélectionnées.
**Causes et solutions possibles** :
-
Types de données spatiales :
- Les tables avec des colonnes spatiales ne peuvent pas être ingérées.
- Exclure ces tables de l'ingestion.
-
Privilèges manquants :
- Vérifiez que l’utilisateur de la réplication dispose de
SELECTsur toutes les tables sources.
SQLSHOW GRANTS FOR 'lakeflow_connect_user'@'%'; - Vérifiez que l’utilisateur de la réplication dispose de
Vérification des Logs
Pour diagnostiquer les problèmes, vérifiez les Logs suivants :
-
**Logs de passerelle** :
- Accédez au pipeline de la passerelle dans l'interface utilisateur de Databricks.
- Cliquez sur la dernière exécution.
- Vérifier les Logs des clusters et les logs d'événements DLT.
-
Logs du pipeline :
- Accédez au pipeline d'ingestion.
- Cliquez sur la dernière exécution.
- Consultez les Logs d'événements DLT et tous les messages d'erreur.
-
Logs MySQL :
- Vérifiez le journal des erreurs MySQL pour les problèmes de connexion ou de réplication.
- Vérifiez les fichiers binlog si des erreurs de position se produisent.
Obtenir de l'aide
Si vous continuez à rencontrer des problèmes :
-
Recueillir les informations pertinentes :
- Messages d'erreur des logs du pipeline.
- Logs de cluster de passerelle.
- Version et type de déploiement de MySQL.
- Configuration de la source (paramètres binlog, rétention).
-
Veuillez contacter l'assistance Databricks avec les informations recueillies.
-
Pendant la préversion publique, vous pouvez également contacter l'équipe de votre compte Databricks.
Erreurs de certificat de serveur TLS
Pour résoudre les problèmes d'erreurs de validation du certificat de serveur TLS, consultez Dépanner les erreurs de certificat TLS.