Skip to main content

Vue d’ensemble

Il existe deux méthodes principales pour migrer des données d’un ClickHouse autogéré (OSS) vers ClickHouse Cloud :
  • Utiliser la fonction remoteSecure(), avec laquelle les données sont directement récupérées ou envoyées.
  • Utiliser les commandes BACKUP/RESTORE via le stockage d’objets dans le cloud
Ce guide de migration se concentre sur l’approche BACKUP/RESTORE et propose un exemple pratique de migration d’une base de données ou d’un service complet depuis ClickHouse open source vers Cloud via un bucket S3.
Prérequis Pour rendre les étapes de ce guide faciles à suivre et reproductibles, nous utiliserons l’une des configurations Docker Compose pour un cluster ClickHouse avec deux shards et deux répliques.
Cluster requisCette méthode de sauvegarde nécessite un cluster ClickHouse, car les tables doivent être converties du moteur MergeTree vers ReplicatedMergeTree. Si vous exécutez une instance unique, suivez plutôt les étapes de « Migrer entre un ClickHouse autogéré et ClickHouse Cloud avec remoteSecure ».

Préparation OSS

Nous allons d’abord lancer un cluster ClickHouse à l’aide d’une configuration Docker Compose issue de notre repository d’exemples. Vous pouvez ignorer cette étape si vous disposez déjà d’un cluster ClickHouse en cours d’exécution.
  1. Clonez le repository d’exemples sur votre machine locale
  2. Depuis votre terminal, placez-vous dans examples/docker-compose-recipes/recipes/cluster_2S_2R avec cd
  3. Assurez-vous que Docker est en cours d’exécution, puis démarrez le cluster ClickHouse :
Vous devriez voir :
Depuis une nouvelle fenêtre de terminal, à la racine du dossier, exécutez la commande suivante pour vous connecter au premier nœud du cluster :

D’une table MergeTree à une table ReplicatedMergeTree

ClickHouse Cloud s’appuie sur SharedMergeTree. Lors de la restauration d’une sauvegarde, ClickHouse convertit automatiquement les tables utilisant ReplicatedMergeTree en tables SharedMergeTree. Il est probable que vos tables utilisent déjà le moteur ReplicatedMergeTree si vous utilisez un cluster. Sinon, vous devrez convertir toutes les tables MergeTree en ReplicatedMergeTree avant de les sauvegarder. Pour montrer comment convertir des tables MergeTree en ReplicatedMergeTree, nous allons partir d’une table MergeTree, puis la convertir en ReplicatedMergeTree. Nous allons suivre les deux premières étapes du guide sur les données des taxis new-yorkais pour créer une table d’exemple et y charger des données. Ces étapes sont reprises ci-dessous pour vous faciliter la tâche. Exécutez les commandes suivantes pour créer une nouvelle base de données et insérer des données depuis un bucket S3 dans une nouvelle table :
Exécutez la commande suivante pour exécuter DETACH sur la table.
Ensuite, rattachez-la comme table répliquée :
Enfin, restaurez les métadonnées de la réplique :
Vérifiez qu’elle a bien été convertie en ReplicatedMergeTree :
Vous êtes désormais prêt à configurer votre service Cloud en vue de la restauration ultérieure d’une sauvegarde depuis votre bucket S3.

Tables Distributed avec ReplicatedMergeTree

Si votre configuration utilise des tables Distributed sur plusieurs shards, vous aurez besoin d’une table locale ReplicatedMergeTree sur chaque nœud et d’une table Distributed comme point d’entrée pour les requêtes. Exécutez la commande suivante pour créer la table répliquée locale sur tous les nœuds du cluster :
Créez ensuite la table Distributed par-dessus celle-ci :
Insérez des données dans la table distribuée :

Préparation de Cloud

Vous allez restaurer vos données dans un nouveau service Cloud. Suivez les étapes ci-dessous pour créer un nouveau service Cloud.
1

Ouvrir Cloud Console

2

Créer un nouveau service

3

Configurer et créer un service

Choisissez la région et la configuration souhaitées, puis cliquez sur Create service
4

Créer un rôle d'accès

Ouvrez la SQL Console

Configurer l’accès à S3

Pour restaurer votre sauvegarde depuis S3, vous devez configurer un accès sécurisé entre ClickHouse Cloud et votre bucket S3.
  1. Suivez les étapes de “Accessing S3 data securely” pour créer un rôle d’accès et obtenir l’ARN du rôle.
  2. Mettez à jour la politique du bucket S3 que vous avez créée dans “How to create an S3 bucket and IAM role” en y ajoutant l’ARN du rôle de l’étape précédente.
Votre politique de bucket S3 mise à jour ressemblera à ceci :
La politique inclut les deux ARN :
  • IAM user (docs-s3-user) : permet à votre cluster ClickHouse autogéré d’effectuer des sauvegardes vers S3
  • Rôle ClickHouse Cloud (ClickHouseAccess-001) : permet à votre service Cloud de restaurer les données depuis S3

Effectuer la sauvegarde (sur un déploiement autogéré)

Chaque shard doit être sauvegardé indépendamment. Connectez-vous à un nœud de chaque shard et exécutez la commande de sauvegarde avec un chemin de destination distinct pour chaque shard. Remplacez BUCKET_URL, KEY_ID et SECRET_KEY par vos propres identifiants AWS. Le guide “Comment créer un bucket S3 et un rôle IAM” vous explique comment les obtenir si vous ne les avez pas encore. Shard 1 :
Shard 2 :
Si tout est correctement configuré, vous verrez une réponse similaire à celle ci-dessous contenant un identifiant unique attribué à la sauvegarde et le statut de la sauvegarde.
Déploiements mono-nœudSi vous n’utilisez pas de tables distribuées, vous pouvez sauvegarder l’intégralité de la base de données avec une seule commande :
Si vous examinez votre bucket S3, qui était auparavant vide, vous verrez maintenant que des dossiers sont apparus : Si vous effectuez une migration complète, vous pouvez exécuter la commande suivante pour sauvegarder l’intégralité du serveur :
La commande ci-dessus sauvegarde :
  • Toutes les bases de données et tables utilisateur
  • Les comptes utilisateur et les mots de passe
  • Les rôles et les permissions
  • Les profils de paramètres
  • Les politiques de lignes
  • Les quotas
  • Les fonctions définies par l’utilisateur
Si vous utilisez un autre fournisseur de services Cloud (CSP), vous pouvez utiliser la syntaxe TO S3() (pour AWS comme pour GCP) et TO AzureBlobStorage(). Pour les très grandes bases de données, envisagez d’utiliser ASYNC pour exécuter la sauvegarde en arrière-plan :
L’identifiant de sauvegarde peut ensuite être utilisé pour suivre l’avancement de la sauvegarde :
Il est également possible d’effectuer des sauvegardes incrémentielles. Pour plus d’informations sur les sauvegardes en général, consultez la documentation sur la sauvegarde et la restauration.

Restaurer dans ClickHouse Cloud

Restaurez la sauvegarde de chaque shard, une à la fois, dans votre service Cloud. Définissez ROLE_ARN sur la valeur obtenue dans “Accès sécurisé aux données S3”. Utilisez SETTINGS allow_non_empty_tables=true lors de la deuxième restauration (et de chaque restauration suivante) afin d’ajouter les données du shard aux tables déjà restaurées au lieu d’échouer en cas de conflit : Shard 1 :
Shard 2 :
déploiements non distribuésSi vous n’utilisez pas de tables distribuées, restaurez la base de données à l’aide d’une seule commande :
Vous pouvez également effectuer une restauration complète du service de la même manière :
Une fois la restauration terminée, vous pouvez vérifier que les données sont bien disponibles dans Cloud :
Comme ClickHouse Cloud utilise SharedMergeTree en interne, l’ancienne table distribuée n’est plus nécessaire. Vous pouvez la supprimer et la remplacer par une vue qui conserve le nom de table d’origine pour vos requêtes :
Les tables ReplicatedMergeTree non distribuées seront restaurées sous forme de SharedMergeTree :
Dernière modification le 23 juillet 2026