Vue d’ensemble
- Utiliser la fonction
remoteSecure(), avec laquelle les données sont directement récupérées ou envoyées. - Utiliser les commandes
BACKUP/RESTOREvia le stockage d’objets dans le cloud
Ce guide de migration se concentre sur l’approchePrérequisBACKUP/RESTOREet 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.
- Docker est installé
- Vous disposez d’un bucket S3 et d’un IAM user
- Vous êtes en mesure de créer un nouveau service ClickHouse Cloud
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
- Clonez le repository d’exemples sur votre machine locale
- Depuis votre terminal, placez-vous dans
examples/docker-compose-recipes/recipes/cluster_2S_2Raveccd - Assurez-vous que Docker est en cours d’exécution, puis démarrez le cluster ClickHouse :
D’une table MergeTree à une table ReplicatedMergeTree
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 :
DETACH sur la table.
ReplicatedMergeTree :
Tables Distributed avec ReplicatedMergeTree
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 :
Distributed par-dessus celle-ci :
Préparation de Cloud
1
Ouvrir Cloud Console
Accédez à https://console.clickhouse.cloud/
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 service4
Créer un rôle d'accès
Ouvrez la SQL ConsoleLa politique inclut les deux ARN :
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.- Suivez les étapes de “Accessing S3 data securely” pour créer un rôle d’accès et obtenir l’ARN du rôle.
- 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.
- 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é)
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 :
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 :
- 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
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 :
Restaurer dans ClickHouse Cloud
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 :
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 :
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 :
ReplicatedMergeTree non distribuées seront restaurées sous forme de SharedMergeTree :