Préparez MySQL pour l'ingestion à l'aide du script d'objets utilitaires
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.
Terminez les tâches de configuration de la base de données MySQL pour ingérer les données dans Databricks à l'aide de Lakeflow Connect.
Exigences
- Version MySQL : 5.7.44 ou 8.0+
- Utilisateur exécutant : Doit être root ou disposer de privilèges d'administration complets (SUPER, ALL PRIVILEGES)
- CDC user : doit déjà exister avec un plugin d'authentification approprié avant d'exécuter les procédures de configuration
- Schémas/tables cibles : Doivent déjà exister avant d'accorder des autorisations
Étape 1 : installer les objets utilitaires
Cette étape installe les procédures stockées utilitaires nécessaires à la configuration de MySQL CDC.
- download la dernière version du script :
-
Ouvrez le script dans MySQL Workbench, DBeaver ou votre client SQL préféré.
-
Connectez-vous à votre instance MySQL en tant que root ou utilisateur administrateur.
-
Assurez-vous que vous êtes connecté à votre schéma souhaité.
-
Exécutez le script.
-
Vérifier l'installation :
SELECT ROUTINE_NAME
FROM information_schema.ROUTINES
WHERE ROUTINE_SCHEMA = '<schema-name>'
AND ROUTINE_TYPE = 'PROCEDURE'
AND ROUTINE_NAME IN ('lakeflow_cdc_setup', 'lakeflow_setup_cdc_user');
Étape 2 : Créer l'utilisateur CDC
Avant d'exécuter les procédures de configuration, créez l'utilisateur CDC avec le plugin d'authentification approprié.
Pour MySQL 8.x :
CREATE USER 'cdc_user'@'%' IDENTIFIED WITH caching_sha2_password BY 'your_secure_password';
Pour MySQL 5.x :
CREATE USER 'cdc_user'@'%' IDENTIFIED WITH sha256_password BY 'your_secure_password';
Le plugin d'authentification doit correspondre à votre version de MySQL. L'utilisation d'un plugin incorrect entraînera l'échec de la procédure de configuration.
Étape 3 : Activer la journalisation binaire (pour MySQL autonome uniquement)
Cette étape configure les paramètres de journalisation binaire requis pour les Opérations CDC. Pour plus de détails, consultez lakeflow_setup_cdc_user dans la référence de procédure ci-dessous.
CALL lakeflow_cdc_setup();
Cette procédure ne fonctionne que sur des instances MySQL autonomes. Pour les services gérés (Amazon RDS, Azure Database pour MySQL, Google Cloud SQL), utilisez les outils de configuration spécifiques au service :
- Amazon RDS : Utilisez les groupes de paramètres pour définir
binlog_format = ROWetbinlog_row_image = FULL - Azure MySQL : Utiliser les parameter serveur
- Google Cloud SQL : utilisez les paramètres de base de données.
Étape 4 : Accorder les autorisations CDC
Cette étape valide l'utilisateur CDC et accorde les autorisations nécessaires pour l'ingestion. Pour plus de détails, consultez lakeflow_setup_cdc_user dans la référence de procédure ci-dessous.
-- Grant permissions on specific tables
CALL lakeflow_setup_cdc_user('cdc_user', '`mydb`.`orders`, `mydb`.`customers`');
Options alternatives :
- Pour toutes les tables dans des schémas spécifiques :
'mydb1.*,mydb2.*' - Pour les éléments mixtes (schémas et tables spécifiques) :
'mydb1.*,mydb2.orders' - Pour les autorisations de réplication uniquement (aucun accès à la table) :
'NULL'
Étape 5 : Vérifier la configuration
Exécutez les queries suivantes pour confirmer que l'utilisateur CDC dispose des autorisations correctes :
-- Check user privileges
SHOW GRANTS FOR 'cdc_user'@'%';
-- Verify binary logging configuration
SHOW VARIABLES LIKE 'binlog_format';
SHOW VARIABLES LIKE 'binlog_row_image';
-- Verify user authentication plugin
SELECT user, host, plugin FROM mysql.user WHERE user = 'cdc_user';
Référence de procédure
lakeflow_setup_cdc_user
Valide qu'un utilisateur CDC existe avec le plugin d'authentification approprié et accorde les privilèges nécessaires pour les opérations CDC.
Syntaxe :
CALL lakeflow_setup_cdc_user(
@User = 'username',
@Tables = 'table_list'
);
Paramètres :
parameter | Type | Description |
|---|---|---|
|
| Le nom d'utilisateur CDC (doit déjà exister) |
|
| Liste de tables/schémas séparés par des virgules |
Format de la liste des tables :
Format | Exemple | Description |
|---|---|---|
Tables spécifiques |
| Accorde SELECT sur des tables spécifiques. |
Toutes les tables dans le schéma |
| Accorde SELECT sur toutes les tables du schéma |
Mixte |
| Combinaison de schémas et de tables spécifiques |
Réplication uniquement |
| Accorde uniquement des privilèges de réplication, pas d'accès à la table. |
Privilèges accordés :
Privilège | Portée | Objectif |
|---|---|---|
| Global ( | Nécessaire pour lire les logs binaires |
| Global ( | Requis pour |
|
| Requis pour lire les informations du plugin d'authentification |
| Tables spécifiées | Requis pour la lecture des données CDC |
Vérifications de validation :
La procédure effectue les validations suivantes avant d'accorder des privilèges :
- La version de MySQL est 5.x ou 8.x
- L'utilisateur existe avec
host = '%' - L'utilisateur dispose du plug-in d'authentification correct pour la version MySQL
- Tous les schémas spécifiés existent
- Toutes les tables spécifiées existent (pour les entrées sans caractères génériques)
lakeflow_cdc_setup
Configure les paramètres de journalisation binaire MySQL requis pour les opérations CDC.
Syntaxe :
CALL lakeflow_cdc_setup();
Paramètres : Aucun
Configuration appliquée :
Paramètre | Valeur | Objectif |
|---|---|---|
|
| Capture toutes les modifications de colonne dans le log binaire |
|
| Logs complets images avant/après |
Comportement par version MySQL :
Version | Comportement |
|---|---|
MySQL 8.x | Utilise |
MySQL 5.x | Utilise |
Scénarios courants
Scénario 1 : Tables spécifiques uniquement
-- Create user
CREATE USER 'lakeflow_user'@'%' IDENTIFIED WITH caching_sha2_password BY 'secure_password';
-- Setup binary logging
CALL lakeflow_cdc_setup();
-- Grant permissions on specific tables
CALL lakeflow_setup_cdc_user('lakeflow_user', '`sales`.`orders`, `sales`.`customers`, `inventory`.`products`');
Scénario 2 : Toutes les tables dans des schémas spécifiques
-- Create user
CREATE USER 'lakeflow_user'@'%' IDENTIFIED WITH caching_sha2_password BY 'secure_password';
-- Setup binary logging
CALL lakeflow_cdc_setup();
-- Grant permissions on all tables in schemas
CALL lakeflow_setup_cdc_user('lakeflow_user', '`sales`.*, `inventory`.*, `hr`.*');
Scénario 3 : Approche hybride (schémas + tables spécifiques)
-- Create user
CREATE USER 'lakeflow_user'@'%' IDENTIFIED WITH caching_sha2_password BY 'secure_password';
-- Setup binary logging
CALL lakeflow_cdc_setup();
-- Grant all tables in sales schema, but only specific tables in other schemas
CALL lakeflow_setup_cdc_user('lakeflow_user', '`sales`.*, `inventory`.`products`, `hr`.`employees`');
Scénario 4 : Amazon RDS MySQL
-- Create user (binary logging configured via Parameter Groups)
CREATE USER 'lakeflow_user'@'%' IDENTIFIED WITH caching_sha2_password BY 'secure_password';
-- Grant permissions (skip lakeflow_cdc_setup for managed services)
CALL lakeflow_setup_cdc_user('lakeflow_user', '`mydb`.*');
Pour Amazon RDS, configurez la journalisation binaire à l'aide d'un groupe de paramètres personnalisé avec binlog_format = ROW et binlog_row_image = FULL.
Persistance MySQL 5.x
Lors de l'utilisation de lakeflow_cdc_setup() sur MySQL 5.x, la configuration n'est pas persistante après les redémarrages. Pour le rendre permanent :
- Ouvrir
/etc/my.cnfavec les privilèges root :
sudo vi /etc/my.cnf
- Ajouter sous la section
[mysqld]:
[mysqld]
binlog_format=ROW
binlog_row_image=FULL
- Redémarrer MySQL :
sudo systemctl restart mysqld
Dépannage
L'utilisateur n'existe pas
Erreur : User 'xxx'@'%' does NOT exist
**Solution :** Créer l'utilisateur avant d'exécuter la procédure de configuration. Voir Étape 2.
Plug-in d'authentification incorrect
Erreur : User exists with wrong plugin type. Expected: caching_sha2_password, Found: mysql_native_password
Solution : Recréez l'utilisateur avec le plug-in d'authentification approprié :
DROP USER 'cdc_user'@'%';
CREATE USER 'cdc_user'@'%' IDENTIFIED WITH caching_sha2_password BY 'your_password';
Le schéma n’existe pas
Erreur : Catalog 'xxx' does NOT exist
Solution : Créez le schéma ou corrigez le nom du schéma dans votre liste de tables.
La table n'existe pas
Erreur : Table 'xxx.yyy' does NOT exist
Solution : Créez la table ou corrigez le nom de la table dans votre liste de tables.
Service géré détecté
Erreur : Cloud/managed service detected. Use parameter/server group tools for binlog setup.
Solution : Ignorez lakeflow_cdc_setup() et configurez la journalisation binaire via la console de gestion de votre fournisseur de cloud.