Aller au contenu principal

Préparez MySQL pour l'ingestion à l'aide du script d'objets utilitaires

info

Aperçu

Le connecteur MySQL est en préversion publique. Contactez votre équipe de compte Databricks pour demander l'accès.

info

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.

  1. download la dernière version du script :
  1. Ouvrez le script dans MySQL Workbench, DBeaver ou votre client SQL préféré.

  2. Connectez-vous à votre instance MySQL en tant que root ou utilisateur administrateur.

  3. Assurez-vous que vous êtes connecté à votre schéma souhaité.

  4. Exécutez le script.

  5. Vérifier l'installation :

SQL
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 :

SQL
CREATE USER 'cdc_user'@'%' IDENTIFIED WITH caching_sha2_password BY 'your_secure_password';

Pour MySQL 5.x :

SQL
CREATE USER 'cdc_user'@'%' IDENTIFIED WITH sha256_password BY 'your_secure_password';
remarque

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.

SQL
CALL lakeflow_cdc_setup();
remarque

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 = ROW et binlog_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.

SQL
-- 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 :

SQL
-- 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 :

SQL
CALL lakeflow_setup_cdc_user(
@User = 'username',
@Tables = 'table_list'
);

Paramètres :

parameter

Type

Description

@User

VARCHAR(255)

Le nom d'utilisateur CDC (doit déjà exister)

@Tables

MEDIUMTEXT

Liste de tables/schémas séparés par des virgules

parameter

Type

Description

@User

VARCHAR(255)

Le nom d'utilisateur CDC (doit déjà exister)

@Tables

MEDIUMTEXT

Liste de tables/schémas séparés par des virgules

Format de la liste des tables :

Format

Exemple

Description

Tables spécifiques

`schema`.`table1`, `schema`.`table2`

Accorde SELECT sur des tables spécifiques.

Toutes les tables dans le schéma

`schema`.*

Accorde SELECT sur toutes les tables du schéma

Mixte

`schema1`.*, `schema2`.`table1`

Combinaison de schémas et de tables spécifiques

Réplication uniquement

'NULL'

Accorde uniquement des privilèges de réplication, pas d'accès à la table.

Format

Exemple

Description

Tables spécifiques

`schema`.`table1`, `schema`.`table2`

Accorde SELECT sur des tables spécifiques.

Toutes les tables dans le schéma

`schema`.*

Accorde SELECT sur toutes les tables du schéma

Mixte

`schema1`.*, `schema2`.`table1`

Combinaison de schémas et de tables spécifiques

Réplication uniquement

'NULL'

Accorde uniquement des privilèges de réplication, pas d'accès à la table.

Privilèges accordés :

Privilège

Portée

Objectif

REPLICATION SLAVE

Global (*.*)

Nécessaire pour lire les logs binaires

REPLICATION CLIENT

Global (*.*)

Requis pour SHOW MASTER STATUS

SELECT (plugin, user)

mysql.user

Requis pour lire les informations du plugin d'authentification

SELECT

Tables spécifiées

Requis pour la lecture des données CDC

Privilège

Portée

Objectif

REPLICATION SLAVE

Global (*.*)

Nécessaire pour lire les logs binaires

REPLICATION CLIENT

Global (*.*)

Requis pour SHOW MASTER STATUS

SELECT (plugin, user)

mysql.user

Requis pour lire les informations du plugin d'authentification

SELECT

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 :

  1. La version de MySQL est 5.x ou 8.x
  2. L'utilisateur existe avec host = '%'
  3. L'utilisateur dispose du plug-in d'authentification correct pour la version MySQL
  4. Tous les schémas spécifiés existent
  5. 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 :

SQL
CALL lakeflow_cdc_setup();

Paramètres : Aucun

Configuration appliquée :

Paramètre

Valeur

Objectif

binlog_format

ROW

Capture toutes les modifications de colonne dans le log binaire

binlog_row_image

FULL

Logs complets images avant/après

Paramètre

Valeur

Objectif

binlog_format

ROW

Capture toutes les modifications de colonne dans le log binaire

binlog_row_image

FULL

Logs complets images avant/après

Comportement par version MySQL :

Version

Comportement

MySQL 8.x

Utilise SET PERSIST (survit aux redémarrages)

MySQL 5.x

Utilise SET GLOBAL (nécessite une persistance manuelle)

Version

Comportement

MySQL 8.x

Utilise SET PERSIST (survit aux redémarrages)

MySQL 5.x

Utilise SET GLOBAL (nécessite une persistance manuelle)

Scénarios courants

Scénario 1 : Tables spécifiques uniquement

SQL
-- 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

SQL
-- 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)

SQL
-- 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

SQL
-- 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`.*');
astuce

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 :

  1. Ouvrir /etc/my.cnf avec les privilèges root :
Bash
sudo vi /etc/my.cnf
  1. Ajouter sous la section [mysqld] :
ini
[mysqld]
binlog_format=ROW
binlog_row_image=FULL
  1. Redémarrer MySQL :
Bash
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é :

SQL
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.

Ressources supplémentaires