Le MySQL Connector pour Snowflake est une solution fiable et performante d’intégration et de réplication de données. Nous allons d’abord découvrir cette méthode d’ingestion de données puis nous verrons sa mise en place pour répliquer les données d’une base MySQL vers la cloud data platform Snowflake.

Présentation du MySQL Connector pour Snowflake

Le connecteur “Snowflake MySQL Connector” est un module natif permettant de répliquer en continu ou en batch une base de données MySQL vers Snowflake.

Il s’appuie sur les binlogs MySQL pour capturer les modifications et alimenter Snowflake en CDC (Change Data Capture) ou batch planifié, selon vos besoins. 

Snowflake MySQL Connector est une solution robuste répondant aux enjeux d’intégration modernes, de synchronisation en temps réel, de migration de bases MySQL vers Snowflake, d’alimentation de data lakes / data warehouses et de création de pipelines d’ingestion automatisés.

Pour ce faire, Snowflake fournit un agent dédié et une intégration sécurisée par clé privée (key-pair authentication). Le tout est configurable quasiment intégralement depuis l’interface low-code de Snowflake, Snowsight.

À noter, ce connecteur n'étant encore qu’en preview, il y a des chances pour qu’il soit bientôt remplacé par Openflow.

Architecture et fonctionnement du MySQL Connector

L’architecture Snowflake repose sur deux éléments principaux :

  • L’agent Snowflake Connector for MySQL, qui s’exécute sous la forme d’un container Docker et assure la connexion sécurisée entre Snowflake et votre base MySQL.
  • Le module Snowflake MySQL, qui permet la configuration et la gestion de la réplication depuis Snowsight.

Snowflake mysql connector

Mettre en place une réplication de base de données avec le MySQL Connector

Nous allons voir ici comment mettre en place une réplication complète d’une base de données MySQL dans Snowflake à l’aide du MySQL Connector, cela ne prendra qu’une dizaine de minutes. Il vous faudra au préalable installer Docker. Voilà la documentation officielle du MySQL Connector, pour son installation, sinon suivez ce tutoriel :

Configuration MySQL

Tout d’abord, pour avoir une réplication en CDC il faut activer les binlogs de votre base de données MySQL. Pour cela il faut mettre ces options dans le fichier de configuration de la base de données MySQL (le fichier s’appelle sûrement my.ini ou my.cnf) :

log_bin = on
binlog_format = row
binlog_row_metadata = full
binlog_row_image = full

Mise en place de l’agent

1/ Pour récupérer l’agent, allez dans Ingestion -> Add Data -> Snowflake Connector for MySQL, puis cliquez sur Get en haut à droite. Cela va vous créer une App Snowflake et vous pourrez maintenant accéder au Wizard du module MySQL.

2/ Depuis le Wizard installez l’agent et le bon driver (Prenez le dernier driver MariaDB en .jar si votre base est à la dernière version de MySQL)

3/ Après cela retournez sur le Wizard (cochez tout en “done”) et téléchargez le fichier snowflake.json après avoir indiqué l’utilisateur, le rôle et le warehouse qui sera utilisé par l’agent.

4/Créer un fichier json pour vos datasources, qui sont vos bases de données MySQL, sous cette forme :

{
"<SOURCENAME>": {
"url": "jdbc:mariadb://<url>/<mysql_database>",
"username": "<mysql_user>",
"password": "<mysql_password>"
}
}

Si votre base de données est sur la même machine que votre agent, vous devez mettre host.docker.internal:3306 comme url et les noms des sources doivent être forcément en majuscule et sans caractères spéciaux ni chiffres.

5/ Créez un dossier .ssh, vous pouvez y mettre vos propres clés ssh si vous voulez, sinon l’agent en créera automatiquement.

6/ Enfin, montez les fichiers / dossiers créés précédemment (driver, config snowflake, les datasources et le dossier .ssh) dans l’agent, dans / home / agent. 

Maintenant lancez l’agent et normalement il devrait se connecter automatiquement à votre Snowflake. Enfin il faut se placer sur la database Snowflake SNOWFLAKE_CONNECTOR_FOR_MYSQL pour lancer les commandes du connector, afin de répliquer les bases de données :

—- Pour répliquer les schema / tables pour la 1re fois
CALL PUBLIC.ADD_DATA_SOURCE('MYSQLSOURCE', 'databaseSnow');
CALL PUBLIC.ADD_TABLES('MYSQLSOURCE', 'databasesMySQL', ARRAY_CONSTRUCT('table_name1', 'table_name2', 'table_name3', 'table_name4'));

—- Pour de la réplication schedul en batch
CALL PUBLIC.ENABLE_SCHEDULED_REPLICATION('MYSQLSOURCE', 'schedule');
CALL PUBLIC.DISABLE_SCHEDULED_REPLICATION('MYSQLSOURCE');

De base la réplication est lancée en mode de chargement continue (streaming) sauf si on active la SCHEDULED_REPLICATION, dans ce cas la réplication sera réalisée par lot (batch). Pour passer de l’un à l’autre, il faudra redémarrer l’agent à chaque fois.

Pourquoi choisir Snowflake MySQL Connector ?

Snowflake Connector for MySQL offre une intégration native, simple et performante entre MySQL et Snowflake. Grâce à la réplication CDC, à un agent léger compatible Docker, à une sécurisation par clé privée (key-pair authentication) et à une supervision complète dans Snowsight, il permet de synchroniser les données en temps réel sans infrastructure ETL supplémentaire.

Ces atouts en font une solution idéale pour automatiser des data pipelines, alimenter des projets BI / Analytics / Big Data et industrialiser l’ingestion de données de manière fiable, scalable et économique.
Le même type de connecteur existe également pour les bases de données PostreSQL, via le Snowflake Connector for PostgreSQL.

Il se peut cependant, comme annoncé dans la documentation associée, que cette solution soit remplacée par Openflow dans un futur proche.

Retour aux éditeurs "Intégration et flux de données"

Vous souhaitez bénéficier d'experts, de développeurs ou d'une formation sur Snowflake ? Rendez vous sur la page Contact

Next Decision est revendeur et intégrateur de Snowflake à Nantes, Paris, Brest, Tours, Saint-Etienne, Bordeaux, Toulouse, La Rochelle, Montpellier, Lyon, Grenoble, Agen, Bayonne, Nîmes, Marseille, Aix-en-provence.

Des consultants Snowflake en Pays de la Loire, Bretagne, région Parisienne, Nouvelle-Aquitaine, Occitanie, île-de-France, Auvergne-Rhône-Alpes et Provence-Alpes-Côte d'Azur, c'est Next Decision !