Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Migrer vers ClickHouse avec clickhouse-local

Migration de ClickHouse autogéré

Vous pouvez utiliser ClickHouse, ou plus précisément clickhouse-local, comme outil ETL pour migrer des données de votre système de base de données actuel vers ClickHouse Cloud, à condition que ce système dispose soit d’un moteur de table d’intégration ou d’une fonction de table fournis par ClickHouse, soit d’un JDBC driver ou d’un ODBC driver fourni par l’éditeur.

Nous appelons parfois cette méthode de migration une méthode "pivot", car elle utilise un point de passage intermédiaire pour déplacer les données de la base de données source vers la base de données de destination. Par exemple, cette méthode peut être nécessaire si, pour des raisons de sécurité, seules les connexions sortantes sont autorisées depuis un réseau privé ou interne. Dans ce cas, vous devez extraire les données de la base de données source avec clickhouse-local, puis les envoyer vers une base de données ClickHouse de destination, clickhouse-local servant alors de point de pivot.

ClickHouse fournit des moteurs de table d’intégration et des fonctions de table (qui créent des moteurs de table d’intégration à la volée) pour MySQL, PostgreSQL, MongoDB et SQLite. Pour tous les autres systèmes de base de données courants, un JDBC driver ou un ODBC driver est disponible auprès de l’éditeur du système.

Qu’est-ce que clickhouse-local ?

Migration de ClickHouse autogéré

En règle générale, ClickHouse s’exécute sous forme de cluster, où plusieurs instances du moteur de base de données ClickHouse fonctionnent de manière distribuée sur différents serveurs.

Sur un serveur unique, le moteur de base de données ClickHouse s’exécute dans le cadre du programme clickhouse-server. L’accès à la base de données (chemins, utilisateurs, sécurité, …) est configuré à l’aide d’un fichier de configuration du serveur.

L’outil clickhouse-local vous permet d’utiliser le moteur de base de données ClickHouse de manière isolée, sous la forme d’un utilitaire en ligne de commande, pour un traitement SQL ultrarapide des données sur un grand nombre d’entrées et de sorties, sans avoir à configurer ni à démarrer un serveur ClickHouse.

Installation de clickhouse-local

Vous avez besoin d'une machine hôte pour clickhouse-local disposant d'un accès réseau à la fois à votre système de base de données source actuel et à votre service cible ClickHouse Cloud.

Sur cette machine hôte, téléchargez la version appropriée de clickhouse-local en fonction du système d'exploitation de votre ordinateur :

  1. La manière la plus simple de télécharger clickhouse-local localement consiste à exécuter la commande suivante :
curl https://clickhouse.com/ | sh
  1. Exécutez clickhouse-local (cela affichera simplement sa version) :
./clickhouse-local
Gérer votre IP Access List

Dans la liste de vos services ClickHouse Cloud, choisissez le service avec lequel vous allez travailler, puis ouvrez Settings. Si l’IP Access List ne contient pas l’adresse IP ou la plage d’adresses du système distant qui doit se connecter à votre service ClickHouse Cloud, vous pouvez résoudre le problème avec Add IPs :

Vérifiez si le service autorise le trafic provenant de votre adresse IP dans l’IP Access List

Ajoutez l’adresse IP individuelle ou la plage d’adresses devant se connecter à votre service ClickHouse Cloud. Modifiez le formulaire selon vos besoins, puis cliquez sur Save.

Ajoutez votre adresse IP actuelle à l’IP Access List dans ClickHouse Cloud

Exemple : migration de MySQL vers ClickHouse Cloud avec un moteur de table d’intégration

Nous utiliserons le moteur de table d’intégration (créé à la volée par la fonction de table mysql) pour lire les données de la base de données MySQL source, et nous utiliserons la fonction de table remoteSecure pour écrire les données dans une table de destination sur votre service ClickHouse Cloud.

Migration de ClickHouse autogéré

Dans le service ClickHouse Cloud de destination :

Créez la base de données de destination :

  CREATE DATABASE db

Créez une table de destination avec un schéma équivalent à celui de la table MySQL :

  CREATE TABLE db.table ...

Sur la machine hôte de clickhouse-local :

Lancez clickhouse-local avec la requête de migration :

  ./clickhouse-local --query "
INSERT INTO FUNCTION
remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table', 'default', 'PASS')
SELECT * FROM mysql('host:port', 'database', 'table', 'user', 'password');"
Navigation