
Ce guide explique comment migrer d’un serveur ClickHouse autogéré vers ClickHouse Cloud, ainsi que comment migrer entre des services ClickHouse Cloud.
La fonction remoteSecure est utilisée dans les requêtes SELECT et INSERT afin d’accéder à des serveurs ClickHouse distants, ce qui rend la migration des tables aussi simple que de rédiger une requête INSERT INTO avec un SELECT imbriqué.
Migration de ClickHouse autogéré vers ClickHouse Cloud

Que votre table source soit partitionnée et/ou répliquée, dans ClickHouse Cloud il vous suffit de créer une table de destination (vous pouvez omettre le paramètre Engine pour cette table, SharedMergeTree sera automatiquement sélectionné comme moteur de table),
et ClickHouse Cloud gérera automatiquement la mise à l’échelle verticale et horizontale.
Vous n’avez pas à vous préoccuper du partitionnement ni de la réplication de la table.
Dans cet exemple, le serveur ClickHouse autogéré est la source et le service ClickHouse Cloud est la destination.
Vue d’ensemble
Le processus est le suivant :
- Ajouter un utilisateur en lecture seule au service source
- Dupliquer la structure de la table source sur le service de destination
- Récupérer les données de la source vers la destination, ou les envoyer depuis la source, selon la disponibilité réseau de la source
- Retirer le serveur source de la liste d’accès IP de la destination (le cas échéant)
- Supprimer l’utilisateur en lecture seule du service source
Migration de tables d’un système à un autre :
Cet exemple montre comment migrer une table d’un serveur ClickHouse autogéré vers ClickHouse Cloud.
Sur le système ClickHouse source (celui qui héberge actuellement les données)
- Ajoutez un utilisateur en lecture seule autorisé à lire la table source (
db.tabledans cet exemple)
CREATE USER exporter
IDENTIFIED WITH SHA256_PASSWORD BY 'password-here'
SETTINGS readonly = 1;GRANT SELECT ON db.table TO exporter;- Copiez la définition de la table
SELECT create_table_query
FROM system.tables
WHERE database = 'db' AND table = 'table'Sur le système de destination ClickHouse Cloud :
- Créez la base de données de destination :
CREATE DATABASE db- En utilisant l’instruction CREATE TABLE de la source, créez la destination.
CREATE TABLE db.table ...- Utilisez la fonction
remoteSecurepour récupérer les données depuis la source auto-gérée

INSERT INTO db.table SELECT * FROM
remoteSecure('source-hostname', db, table, 'exporter', 'password-here')- Utilisez la fonction
remoteSecurepour pousser les données vers le service ClickHouse Cloud

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 :

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.

INSERT INTO FUNCTION
remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table',
'default', 'PASS') SELECT * FROM db.tableMigration entre services ClickHouse Cloud

Voici quelques cas d’usage de migration de données entre services ClickHouse Cloud :
- Migrer des données depuis une sauvegarde restaurée
- Copier des données d’un service de développement vers un service de staging (ou d’un service de staging vers la production)
Dans cet exemple, il y a deux services ClickHouse Cloud, désignés par source et destination. Les données seront récupérées depuis la source vers la destination. Même s’il est également possible d’utiliser un envoi direct, la récupération est présentée ici, car elle repose sur un utilisateur en lecture seule.

La migration se déroule en quelques étapes :
- Identifier un service ClickHouse Cloud comme source et l’autre comme destination
- Ajouter un utilisateur en lecture seule au service source
- Dupliquer la structure de la table source sur le service de destination
- Autoriser temporairement l’accès IP au service source
- Copier les données de la source vers la destination
- Rétablir la liste d’accès IP sur la destination
- Supprimer l’utilisateur en lecture seule du service source
Ajouter un utilisateur en lecture seule au service source
-
Ajoutez un utilisateur en lecture seule autorisé à lire la table source (
db.tabledans cet exemple)CREATE USER exporter IDENTIFIED WITH SHA256_PASSWORD BY 'password-here' SETTINGS readonly = 1;GRANT SELECT ON db.table TO exporter; -
Copiez la définition de la table
select create_table_query from system.tables where database = 'db' and table = 'table'
Dupliquez la structure de la table sur le service de destination
Sur le service de destination, créez la base de données si elle n'existe pas déjà :
-
Créez la base de données de destination :
CREATE DATABASE db -
À l'aide de l'instruction CREATE TABLE de la source, créez la table de destination.
Sur le service de destination, créez la table à partir de la sortie de
select create_table_query...sur la source :CREATE TABLE db.table ...
Autoriser l’accès à distance au service source
Pour extraire les données de la source vers la destination, le service source doit autoriser les connexions. Désactivez temporairement la fonctionnalité « liste d’accès IP » sur le service source.
Modifiez la liste d’autorisation et autorisez temporairement l’accès depuis Anywhere. Consultez la documentation liste d’accès IP pour plus de détails.
Copiez les données de la source vers la destination
-
Utilisez la fonction
remoteSecurepour extraire les données du service ClickHouse Cloud source. Connectez-vous à la destination. Exécutez cette commande sur le service ClickHouse Cloud de destination :INSERT INTO db.table SELECT * FROM remoteSecure('source-hostname', db, table, 'exporter', 'password-here') -
Vérifiez les données sur le service de destination
Rétablir la liste d’accès IP sur la source
Si vous avez exporté la liste d’accès précédemment, vous pouvez la réimporter à l’aide de Share ; sinon, rajoutez vos adresses à la liste d’accès.
Supprimer l’utilisateur exporter en lecture seule
DROP USER exporter- Modifiez la liste d’accès IP du service afin d’en limiter l’accès