Configurez MySQL sur Amazon EC2 pour l'ingestion
Aperçu
Le connecteur MySQL est en préversion publique. Contactez votre équipe de compte Databricks pour demander l'accès.
Apprenez à configurer MySQL exécuté sur Amazon EC2 pour l'ingestion. Vous devez activer la journalisation binaire et configurer la rétention du journal binaire pour prendre en charge la capture des changements de données.
Exigences
- MySQL version 5,7.44 et ultérieure, ou 8,0 et ultérieure installée sur votre serveur.
- Autorisation de modifier les fichiers de configuration MySQL et de redémarrer le service MySQL.
Modifier le fichier de configuration MySQL
La journalisation binaire est configurée dans le fichier de configuration MySQL. L’emplacement de ce fichier varie selon le système d’exploitation :
- Linux (la plupart des distributions) :
/etc/my.cnfou/etc/mysql/my.cnf - Linux (Debian/Ubuntu) :
/etc/mysql/mysql.conf.d/mysqld.cnf
Paramètres de configuration requis
Ajoutez ou modifiez les paramètres suivants dans la section [mysqld] de votre fichier de configuration MySQL :
[mysqld]
# Enable binary logging
log-bin=mysql-bin
# Set a unique server ID (required for replication)
server-id=1
# Set binlog format to ROW for change data capture
binlog_format=ROW
# Log all columns, not just changed columns
binlog_row_image=FULL
# For MySQL 8.0 and later: Set minimum binlog retention to one day (86400 seconds). Recommended: seven days (604800 seconds)
binlog_expire_logs_seconds=604800
# For MySQL 5.7: Use expire_logs_days instead. Minimum: one day. Recommended: seven days.
# expire_logs_days=7
Considérations relatives à l'ID de serveur
Le paramètre server-id doit être un entier unique compris entre 1 et 4294967295. Si vous disposez de plusieurs serveurs MySQL, chacun doit avoir un ID de serveur différent.
Pour un seul serveur, vous pouvez utiliser server-id=1. Pour plusieurs serveurs, vous pourriez utiliser une convention telle que :
- Serveur principal :
server-id=1 - Réplique 1re :
server-id=2 - Réplique 2² :
server-id=3
Redémarrer le service MySQL
Après avoir modifié le fichier de configuration, redémarrez le service MySQL pour appliquer les modifications :
- Linux (systemd)
- Linux (init.d)
sudo systemctl restart mysql
# or
sudo systemctl restart mysqld
sudo service mysql restart
# or
sudo /etc/init.d/mysql restart
Vérifier la configuration du binlog
Après le redémarrage de MySQL, vérifiez que la journalisation binaire est correctement configurée. Connectez-vous à MySQL et exécutez :
-- Check if binary logging is enabled
SHOW VARIABLES LIKE 'log_bin';
-- Should return:
-- +---------------+-------+
-- | Variable_name | Value |
-- +---------------+-------+
-- | log_bin | ON |
-- +---------------+-------+
-- Check server ID
SHOW VARIABLES LIKE 'server_id';
-- Should return a non-zero value:
-- +---------------+-------+
-- | Variable_name | Value |
-- +---------------+-------+
-- | server_id | 1 |
-- +---------------+-------+
-- Check binlog format
SHOW VARIABLES LIKE 'binlog_format';
-- Should return:
-- +---------------+-------+
-- | Variable_name | Value |
-- +---------------+-------+
-- | binlog_format | ROW |
-- +---------------+-------+
-- Check binlog row image
SHOW VARIABLES LIKE 'binlog_row_image';
-- Should return:
-- +------------------+-------+
-- | Variable_name | Value |
-- +------------------+-------+
-- | binlog_row_image | FULL |
-- +------------------+-------+
-- For MySQL 8.0: Check retention in seconds
SHOW VARIABLES LIKE 'binlog_expire_logs_seconds';
-- For MySQL 5.7: Check retention in days
SHOW VARIABLES LIKE 'expire_logs_days';
Considérations relatives à la rétention des journaux binaires
La période de rétention minimale du journal binaire est d'un jour (24 heures ou 86 400 secondes). Databricks recommande une période de rétention du journal binaire de sept jours (168 heures ou 604 800 secondes). Si vous définissez une valeur inférieure, les journaux binaires pourraient être supprimés avant que la passerelle d'ingestion ne les traite, nécessitant un full refresh de toutes les tables.
Une full refresh est également requise si la passerelle ne peut pas traiter les binlogs en continu. Si la passerelle est arrêtée pendant plus de binlog_expire_logs_seconds, les binlogs pourraient être supprimés avant la reprise de l'ingestion.
Surveillez l'utilisation de l'espace disque de votre serveur. Les périodes de rétention plus longues nécessitent plus de stockage pour les Logs binaires.
Prise en charge des réplicas en lecture
Le connecteur MySQL prend en charge l’ingestion à partir de réplicas en lecture sur EC2. Pour configurer un réplica en lecture :
- Configurez la journalisation binaire sur le serveur principal.
- Configurez la réplication MySQL pour créer un réplica en lecture.
- Vérifiez que le réplica en lecture a la journalisation binaire activée.
- Utilisez la chaîne de connexion du réplica en lecture lors de la création de la connexion Databricks.
Il peut y avoir un décalage de réplication entre le serveur primaire et la réplique, ce qui peut affecter la fraîcheur des données.
Configuration réseau
Assurez-vous que votre serveur MySQL est accessible depuis Databricks :
- Configurez des règles de pare-feu pour autoriser le trafic entrant sur le port 3306 (ou votre port MySQL personnalisé).
- Si vous utilisez une infrastructure cloud, configurez les groupes de sécurité ou les ACL réseau.
- Pour les bases de données on-premise, assurez une connectivité réseau appropriée via VPN, Direct Connect ou ExpressRoute.
- Envisagez d'utiliser des connexions SSL/TLS pour la sécurité.
Exemple de règle de groupe de sécurité (EC2)
Ajoutez une règle entrante à votre groupe de sécurité EC2 :
- Type : MySQL
- Protocole : TCP
- Plage de ports : 3306
- Source : plages d’adresses IP Databricks
Ressources supplémentaires
Un administrateur peut maintenant soit :
- Utilisez Catalog Explorer pour créer une connexion afin que les non-administrateurs puissent créer des pipelines
- Utilisez l'interface utilisateur d'ingestion de données pour créer une connexion et un pipeline