Cette rubrique explique comment migrer un cluster ClickHouse autogéré vers ApsaraDB for ClickHouse Enterprise Edition via la console ou manuellement.
Prérequis
Cluster autogéré : Vous avez créé un compte de base de données et un mot de passe. Le compte doit disposer des autorisations de lecture sur les bases de données et les tables ainsi que des privilèges d'exécution des commandes SYSTEM. Si vous devez migrer des tables externes incluant des identifiants de compte, le compte doit également posséder le privilège
displaySecretsInShowAndSelect.Cluster cible : Vous avez créé un compte de base de données et un mot de passe et vous êtes assuré que ce compte dispose des privilèges les plus élevés.
-
Connectivité réseau
-
Si le cluster autogéré et le cluster cible se trouvent dans le même VPC, ajoutez les adresses IP de tous les nœuds du cluster cible et les blocs CIDR IPv4 des commutateurs des nœuds à la liste d'autorisation du cluster autogéré.
Pour savoir comment configurer une liste d'autorisation pour un cluster ApsaraDB for ClickHouse, consultez Configurer une liste d'autorisation.
Pour configurer la liste d'autorisation du cluster autogéré, reportez-vous à la documentation du produit concerné.
Exécutez la
SELECT * FROM system.clusters WHERE internal_replication = 1;afin d'interroger les adresses IP de tous les nœuds du cluster ApsaraDB for ClickHouse.
-
Si le cluster autogéré et le cluster cible se trouvent dans des VPC différents, ou si le cluster autogéré réside dans un centre de données local (IDC) ou est hébergé par un autre fournisseur cloud, résolvez d'abord les problèmes de connectivité réseau. Pour plus d'informations, consultez Établir la connectivité réseau entre le cluster cible et la source de données.
RemarqueDans ce scénario, vous pouvez utiliser le mappage d'adresses IP pour éviter les conflits de blocs CIDR entre différents VPC. Si vous utilisez le mappage d'adresses IP, vous devez également ajouter les adresses IP mappées aux listes d'autorisation des deux clusters.
-
Validation de la migration
Avant de commencer la migration des données, nous vous recommandons vivement de créer un environnement de test pour valider la compatibilité, les performances et la faisabilité de la migration. N'effectuez la migration des données dans votre environnement de production qu'une fois cette validation terminée. Cette étape est cruciale, car elle vous permet d'identifier et de résoudre les problèmes potentiels en amont, garantissant ainsi une migration fluide et protégeant votre environnement de production.
Créez une tâche de migration pour effectuer la migration des données.
Analysez les goulots d'étranglement liés aux performances et vérifiez la faisabilité de la migration.
-
Pour valider la compatibilité avec le cloud, utilisez l'une des méthodes suivantes :
Validation manuelle : consultez Analyse et résolution de la compatibilité.
Validation via la console : consultez (Facultatif) Vérifier la compatibilité SQL.
Méthodes de migration
Méthode de migration | Avantages | Inconvénients | Cas d'utilisation |
migration via la console | Propose un flux de travail visuel qui automatise la migration des métadonnées. | Limitée à la migration complète et incrémentielle d'un cluster entier ; ne prend pas en charge la migration de bases de données et de tables spécifiques ou d'un sous-ensemble de données historiques. | Migration d'un cluster entier. |
migration manuelle | Offre un contrôle granulaire sur les bases de données et les tables à migrer. | Implique une procédure complexe et nécessite une migration manuelle des métadonnées. |
|
Procédure
Migration via la console
Considérations
Pendant la migration
-
Le processus de fusion est suspendu sur le cluster de destination pour les bases de données et les tables en cours de migration, mais il se poursuit sur le cluster autogéré.
RemarqueSi une tâche de migration s'exécute trop longtemps, une quantité excessive de métadonnées peut s'accumuler sur le cluster de destination. La durée recommandée pour une tâche de migration est inférieure ou égale à 5 jours. Le système annule automatiquement les tâches qui dépassent cette limite.
Le cluster de destination doit utiliser le cluster
default. Si votre cluster autogéré utilise un nom différent, le système convertit automatiquement la définition du cluster dans toute table distribuée endefault.
Contenu pris en charge
Le processus de migration convertit les structures de base de données et de tables pour certains moteurs. Pour plus de détails sur les conversions de moteur, consultez les tableaux ci-dessous.
-
Structure de la base de données : le tableau suivant répertorie les types de moteurs de base de données pris en charge.
Nom du moteur
description de la conversion
AtomicRemplacé par le moteur
ReplicatedReplicatedAucune modification
OrdinaryRemplacé par le moteur
Replicated -
Structure de la table : le tableau suivant répertorie les types de moteurs de table pris en charge.
Nom du moteur
description de la conversion
MaterializedViewAucune modification
ViewGenerateRandomBufferURLNullMergeSharedMergeTreeSharedVersionedCollapsingMergeTreeSharedSummingMergeTreeSharedReplacingMergeTreeSharedAggregatingMergeTreeSharedCollapsingMergeTreeSharedGraphiteMergeTreeMergeTreeRemplacé par
SharedMergeTreeReplicatedMergeTreeVersionedCollapsingMergeTreeRemplacé par
SharedVersionedCollapsingMergeTreeReplicatedVersionedCollapsingMergeTreeSummingMergeTreeRemplacé par
SharedSummingMergeTreeReplicatedSummingMergeTreeReplacingMergeTreeRemplacé par
SharedReplacingMergeTreeReplicatedReplacingMergeTreeAggregatingMergeTreeRemplacé par
SharedAggregatingMergeTreeReplicatedAggregatingMergeTreeReplicatedCollapsingMergeTreeRemplacé par
SharedCollapsingMergeTreeCollapsingMergeTreeGraphiteMergeTreeRemplacé par
SharedGraphiteMergeTreeReplicatedGraphiteMergeTree Données : la migration incrémentielle est prise en charge pour les données des tables de la famille
MergeTree.
Le système peut migrer automatiquement les structures de base de données et de tables répertoriées ci-dessus. Toute autre structure doit être gérée manuellement en fonction des avertissements et des erreurs rencontrés lors de la migration.
Si vos données ne répondent pas à ces conditions, vous pouvez effectuer une migration manuelle.
Impact sur le cluster
-
Cluster autogéré
La lecture des données depuis le cluster autogéré augmente l'utilisation du CPU et de la mémoire.
Les opérations DDL ne sont pas autorisées.
-
Cluster de destination
L'écriture des données sur le cluster de destination augmente l'utilisation du CPU et de la mémoire.
Les opérations DDL ne sont pas autorisées sur les bases de données et les tables incluses dans la migration. Cette restriction ne s'applique pas aux bases de données et aux tables qui ne font pas partie de la migration.
Le processus de fusion est suspendu pour les tables et les bases de données en cours de migration. Cela n'affecte pas les autres tables et bases de données.
Une fois la migration terminée, le cluster effectue des opérations de fusion fréquentes pendant un certain temps. Cela augmente l'utilisation des E/S et peut entraîner une latence plus élevée pour les requêtes métier. Pour atténuer l'impact potentiel, Calculez le temps de fusion après la migration et planifiez en conséquence.
Étape 1 : Vérifier le cluster et activer les tables système
Avant de commencer la migration des données, configurez le fichier config.xml sur votre cluster autogéré pour activer la migration incrémentielle. La configuration dépend du fait que les tables système system.part_log et system.query_log soient déjà activées ou non.
Si les tables système ne sont pas activées
Si vous n'avez pas activé system.part_log et system.query_log, ajoutez les configurations suivantes au fichier config.xml.
system.part_log
<part_log>
<database>system</database>
<table>part_log</table>
<partition_by>event_date</partition_by>
<order_by>event_time</order_by>
<ttl>event_date + INTERVAL 15 DAY DELETE</ttl>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
</part_log>
system.query_log
<query_log>
<database>system</database>
<table>query_log</table>
<partition_by>event_date</partition_by>
<order_by>event_time</order_by>
<ttl>event_date + INTERVAL 15 DAY DELETE</ttl>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
</query_log>
Si les tables système sont activées
-
Assurez-vous que les configurations de
system.part_logetsystem.query_logdans le fichier config.xml correspondent au contenu suivant. Des incohérences peuvent entraîner l'échec de la migration des données ou ralentir son exécution.system.part_log
<part_log> <database>system</database> <table>part_log</table> <partition_by>event_date</partition_by> <order_by>event_time</order_by> <ttl>event_date + INTERVAL 15 DAY DELETE</ttl> <flush_interval_milliseconds>7500</flush_interval_milliseconds> </part_log>system.query_log
<query_log> <database>system</database> <table>query_log</table> <partition_by>event_date</partition_by> <order_by>event_time</order_by> <ttl>event_date + INTERVAL 15 DAY DELETE</ttl> <flush_interval_milliseconds>7500</flush_interval_milliseconds> </query_log> Après avoir modifié la configuration, exécutez les instructions
drop table system.part_logetdrop table system.query_log. L'insertion de données dans une table métier recrée automatiquement les tablessystem.part_logetsystem.query_log.
Étape 2 : Configurer la compatibilité du cluster
Pour garantir que le cluster cible soit aussi compatible que possible avec le cluster autogéré, connectez-vous au cluster cible et modifiez le paramètre compatibility pour qu'il corresponde à la version de votre cluster autogéré.
La définition de la compatibilité sur une version antérieure désactive certaines nouvelles fonctionnalités, telles que ParallelReplica.
Par exemple :
SELECT currentProfiles(); // Get the current profile name.
SELECT
profile_name,
setting_name,
value
FROM system.settings_profile_elements
WHERE (setting_name = 'compatibility') AND (profile_name = 'xxxx'); // Check the value of the compatibility setting.
ALTER PROFILE XXXX SETTINGS compatibility = '23.8'; // Set the compatibility value.
Étape 3 : Créer une tâche de migration
Connectez-vous à la console ApsaraDB for ClickHouse. Sur la page Clusters, sélectionnez Enterprise Edition Clusters, puis cliquez sur l'ID du cluster cible.
Dans le volet de navigation, choisissez .
Cliquez sur Create Migration Task.
-
Sélectionnez les instances source et cible.
Paramètre
Description
Exemple
Task Name
Nom unique (non sensible à la casse) de la tâche de migration. Le nom ne peut contenir que des lettres et des chiffres.
MigrationTask1229
Source Cluster Name
Exécutez
SELECT * FROM system.clusters;pour obtenir le nom de votre cluster autogéré.default
VPC IP Address
Les adresses IP et les ports de chaque shard du cluster, séparés par des virgules. Format :
IP:PORT,IP:PORT,....Vous pouvez utiliser l'instruction SQL suivante pour obtenir les adresses IP et les ports de votre cluster autogéré :
SELECT shard_num, replica_num, host_address as ip, port FROM system.clusters WHERE cluster = '<cluster_name>' and replica_num = 1;Description des paramètres :
cluster_name : le nom de votre cluster autogéré.
replica_num=1 sélectionne le premier ensemble de réplicas. Vous pouvez également sélectionner un autre ensemble de réplicas ou choisir manuellement un réplica par shard.
ImportantVous ne pouvez pas utiliser le nom de domaine VPC ni l'adresse SLB du cluster ClickHouse.
Si vous utilisez NAT pour mapper les adresses IP et les ports vers Alibaba Cloud, vous devez configurer les adresses IP et les ports mappés en fonction de votre configuration réseau.
192.168.0.5:9000,192.168.0.6:9000
Database Account
Le compte de base de données pour le cluster autogéré.
test
Database Password
Le mot de passe du compte de base de données du cluster autogéré.
test
Source Instance Kernel Version
Cliquez sur Get Version.
22.8.5.29
-
Selon la version de l'instance source, procédez comme suit :
Si la version de l'instance source est 22.10 ou ultérieure : cliquez sur Next.
Si la version de l'instance source est antérieure à 22.10 : saisissez les informations demandées dans la section Destination Instance Information, puis cliquez sur Next.
En cas d'échec de la récupération de la version : cela peut se produire si les informations de l'instance source sont incorrectes ou si le réseau est déconnecté. Suivez les instructions à l'écran pour résoudre le problème, puis cliquez à nouveau sur Get Version.
RemarqueEn raison d'incompatibilités de paramètres entre les éditions communautaires précédentes et l'édition Enterprise, si la version de l'instance source est antérieure à 22.10, vous devez synchroniser les données en les poussant de la source vers la cible. Dans ce scénario, vous devez mapper l'adresse IP de l'instance cible sur le réseau autogéré. Si le réseau autogéré et l'instance Enterprise Edition se trouvent dans le même VPC, ou s'ils sont connectés via une connexion d'appairage VPC (VPC Peering Connection), vous pouvez utiliser les adresses IP d'origine pour la connexion.
-
Vérifiez la connectivité et les configurations.
-
Cliquez sur Start Check.
Pendant la vérification, vous pouvez cliquer sur l'icône
située dans le coin supérieur droit pour afficher la progression en temps réel.-
Une fois la vérification terminée, agissez en fonction des résultats.
Vous pouvez sélectionner un Result level et un élément de vérification, puis cliquer sur l'icône
pour afficher les résultats correspondants. Les niveaux de résultat sont décrits ci-dessous.Success : si toutes les vérifications réussissent, cliquez sur Next pour continuer.
Warning : ces éléments ne bloquent pas le processus. Vous devez confirmer manuellement si l'avertissement affecte votre charge de travail ou la tâche de migration. Vous pouvez ignorer l'avertissement ou résoudre le problème, puis cliquer à nouveau sur Start Check.
-
Error : ces éléments bloquent le processus. Vous devez résoudre l'erreur à l'aide des informations fournies, puis cliquer à nouveau sur Start Check.
Pour plus d'informations sur les messages d'erreur et les solutions, consultez la section FAQ.
-
-
Vérifiez les structures des bases de données et des tables.
Une fois la vérification de la connectivité et de la configuration réussie, procédez à la vérification des structures des bases de données et des tables. Cette étape comprend trois sous-étapes : Select databases to migrate, Select tables to migrate et Check database and table structures.
ImportantLes sous-étapes Select databases to migrate et Select tables to migrate sont facultatives. Si vous souhaitez migrer toutes les bases de données et tables de l'instance source, vous pouvez ignorer ces deux sous-étapes et passer directement à la sous-étape 3 (Check database and table structures).
Sous-étape 1 : Sélectionner les bases de données à migrer (facultatif)
Cliquez sur Query Source. Le système interroge automatiquement toutes les bases de données de l'instance source.
Pendant l'interrogation, vous pouvez cliquer sur Query Results pour afficher les résultats en temps réel.
Une fois l'interrogation terminée, sélectionnez les bases de données à migrer selon vos besoins métier. Une fois la sélection effectuée, cliquez sur Confirm.
Sous-étape 2 : Sélectionner les tables à migrer (facultatif)
Après avoir sélectionné les bases de données, l'interface de sélection des tables s'affiche. Cliquez sur Query Source. Le système interroge automatiquement toutes les tables des bases de données sélectionnées.
Pendant l'interrogation, vous pouvez cliquer sur Query Results pour afficher les résultats en temps réel.
Une fois l'interrogation terminée, sélectionnez les tables à migrer selon vos besoins métier. Une fois la sélection effectuée, cliquez sur Confirm.
RemarquePar défaut, toutes les tables sont sélectionnées. Si vous ne devez migrer que certaines tables, décochez la case de sélection globale de la base de données correspondante, développez la liste déroulante et sélectionnez les tables souhaitées.
Sous-étape 3 : Vérifier les structures des bases de données et des tables
Cliquez sur Start Check. Le système vérifie les structures des bases de données, les structures des tables et les UDF afin d'identifier toute incompatibilité entre les instances source et cible.
Pendant la vérification, vous pouvez filtrer par Result Level et Check Item, et cliquer sur l'icône Refresh pour afficher les résultats en temps réel.
-
Les résultats de la vérification sont classés en trois niveaux : succès, avertissement et erreur.
La vérification réussit : cliquez sur Next pour poursuivre la migration.
-
Des avertissements surviennent pendant la vérification
Définissez le niveau de résultat sur Warning et recherchez les éléments de vérification correspondants pour consulter les détails de l'avertissement.
ImportantLes éléments de vérification de niveau Warning ne sont pas bloquants. Vous devez confirmer si l'avertissement affecte votre charge de travail ou la tâche de migration. Après confirmation, vous avez deux options :
Ignorer l'avertissement et cliquer sur Next pour continuer la migration.
Résoudre l'avertissement en suivant les détails fournis, puis cliquer sur Start Check pour revérifier les structures des bases de données et des tables. Pour plus d'informations sur les messages d'avertissement et les solutions, consultez la section FAQ de cette rubrique.
-
Échec de la vérification
Définissez le niveau de résultat sur Error et recherchez les éléments de vérification correspondants pour consulter les détails de l'erreur.
ImportantLes éléments de vérification de niveau Error sont bloquants. Vous devez résoudre les erreurs en suivant les détails fournis, puis cliquer sur Start Check pour revérifier les structures des bases de données et des tables. Pour plus d'informations sur les messages d'erreur et les solutions, consultez la section FAQ de cette rubrique.
-
Migrer les structures des bases de données et des tables.
Cliquez sur Start Migration.
Pendant la migration, vous pouvez cliquer sur l'icône
située dans le coin supérieur droit pour afficher la progression en temps réel.-
Une fois la migration terminée, agissez en fonction des résultats.
Pour plus d'informations sur les résultats, consultez l'étape 5.
-
(Facultatif) Vérifier la compatibilité SQL.
La vérification de la compatibilité SQL rejoue les instructions SQL de votre instance autogérée sur l'instance cible afin de vérifier la compatibilité syntaxique entre les différentes versions du noyau.
Pour ignorer cette étape, cliquez sur skip.
-
Pour effectuer cette vérification, sélectionnez une Request replay time et cliquez sur Start Check. Si la vérification réussit, cliquez sur Next. En cas d'échec, consultez l'étape 5 pour connaître les solutions.
ImportantLes bases de données et les tables de l'instance ne contiennent aucune donnée ; cette vérification valide uniquement la compatibilité syntaxique. Pour tester avec des données, vous pouvez migrer une partie des données à l'étape suivante.
Des différences entre la version du client utilisée pour la relecture SQL et l'instance cible peuvent générer des faux positifs. En cas d'erreurs, exécutez manuellement les instructions SQL pour vérifier les résultats.
-
Enregistrer et nettoyer les tables utilisant les moteurs Kafka/RabbitMQ.
Avant de démarrer la synchronisation, enregistrez les définitions des tables utilisant les moteurs Kafka/RabbitMQ ainsi que leurs vues matérialisées en aval sur le cluster autogéré, traitez les tables implicites, puis supprimez ces tables pour éviter les exceptions lors de la migration.
-
Connectez-vous au cluster autogéré et interrogez toutes les tables utilisant les moteurs Kafka et RabbitMQ, ainsi que leurs dépendances en aval.
/* create_table_query: table definition dependencies_database: database of the downstream dependent table dependencies_table: name of the downstream dependent table From dependencies_database and dependencies_table, you can identify the materialized views that depend on the Kafka/RabbitMQ tables. */ SELECT * FROM system.tables WHERE engine IN ('RabbitMQ', 'Kafka'); -
Consultez les définitions des vues matérialisées et vérifiez si leurs tables cibles sont des tables implicites.
/* View the materialized view definition. If the target table of a materialized view is an implicit table, note the following: Dropping the materialized view also drops the implicit table, which causes data loss. Example: In CREATE MATERIALIZED VIEW [db.]table_name [TO[db.]name], if TO is not specified, the system automatically creates an implicit table, which may be in the format '.inner_id.<TABLE_UUID>' or '.inner.<TABLE>'. */ SELECT * FROM system.tables WHERE database='<DATABASE>' AND name = '<MATERIALIZED_VIEW_NAME>'; -
Si la table cible d'une vue matérialisée est une table implicite, renommez-la pour éviter la perte de données lors de la suppression ultérieure de la vue matérialisée.
-- Rename the implicit target table to preserve data RENAME TABLE <DATABASE>.`.inner_id.<TABLE_UUID>` TO <DATABASE>.<new_target_table_name>; -
Supprimez les tables utilisant les moteurs Kafka/RabbitMQ et leurs vues matérialisées en aval.
-- Drop the materialized views first DROP TABLE <DATABASE>.<MATERIALIZED_VIEW_NAME>; -- Then drop the Kafka/RabbitMQ engine tables DROP TABLE <DATABASE>.<KAFKA_OR_RABBITMQ_TABLE_NAME>;
ImportantAssurez-vous de sauvegarder toutes les instructions DDL enregistrées. Vous en aurez besoin pour recréer ces tables à la fois sur le cluster autogéré et sur le cluster cible ultérieurement. Si vous avez effectué l'opération RENAME, utilisez la clause TO pour pointer vers la table cible renommée lors de la recréation des vues matérialisées.
-
-
Démarrer la synchronisation.
Cliquez sur Start Sync.
-
Pendant la synchronisation, vous pouvez cliquer sur l'icône
située dans le coin supérieur droit pour afficher la progression en temps réel. -
Sur le cluster auto-géré, utilisez les instructions DDL précédemment enregistrées pour recréer les tables du moteur Kafka/RabbitMQ et leurs vues matérialisées en aval. Après la recréation, les données incrémentales recommencent à circuler et sont automatiquement synchronisées vers le cluster cible.
ImportantSi vous avez effectué l'opération RENAME sur la table cible implicite plus tôt, utilisez la clause TO pour pointer vers la table cible renommée lors de la recréation des vues matérialisées. Pour plus d'informations, consultez CREATE MATERIALIZED VIEW.
CREATE MATERIALIZED VIEW [db.]table_name [TO[db.]name].
-- Recreate the Kafka/RabbitMQ engine table on the self-managed cluster CREATE TABLE <DATABASE>.<KAFKA_OR_RABBITMQ_TABLE_NAME> (...) ENGINE = Kafka/RabbitMQ SETTINGS ...; -- Recreate the materialized view (pointing to the renamed target table) CREATE MATERIALIZED VIEW <DATABASE>.<MATERIALIZED_VIEW_NAME> TO <DATABASE>.<new_target_table_name> AS SELECT ... FROM <DATABASE>.<KAFKA_OR_RABBITMQ_TABLE_NAME>; -
Lorsque le processus atteint l'étape Migrate data, basculez vers l'onglet Migrate data et cliquez sur l'icône
pour afficher la Migration Progress et le Estimated remaining time.ImportantVous devez surveiller attentivement la Migration Progress. En fonction du Estimated remaining time, vous devez proactivement interrompre les écritures sur le cluster auto-géré et gérer les tables utilisant les moteurs Kafka et RabbitMQ.
Le processus en arrière-plan annule automatiquement toute tâche s'exécutant pendant plus de 5 jours. Si votre tâche de migration nécessite plus de temps, soumettez un ticket pour demander un ajustement du seuil.
-
Lorsque la Migration Progress atteint 100 % et que vous confirmez l'arrêt des écritures sur l'instance source, cliquez sur Stop pour mettre fin à la migration des données et passer aux étapes suivantes.
Cliquez sur l'onglet Migrate Data pour afficher les détails de la migration. Cliquez sur l'icône d'actualisation dans le coin supérieur droit pour mettre à jour l'état de la migration.
-
Une fois la synchronisation terminée, cliquez sur Completed.
ImportantUne fois l'étape Start Synchronization terminée, la tâche de migration est verrouillée et vous ne pouvez pas modifier le processus de migration. Vous pouvez toujours utiliser les boutons Previous, Next ou Refresh pour consulter les résultats des étapes terminées.
Étape 4 : Migrer les données des tables non-MergeTree
Lors d'une tâche de migration, les tables non-MergeTree ne prennent en charge que la migration de la structure (par exemple, les tables MySQL) ou ne permettent aucune migration (par exemple, les tables Log). Par conséquent, une fois la tâche de migration terminée, le cluster cible peut contenir des tables dont la structure existe mais sans les données métier. Vous devez migrer manuellement les données métier comme suit :
-
Connectez-vous au self-built cluster et identifiez les tables non-MergeTree nécessitant une migration des données.
SELECT `database` AS database_name, `name` AS table_name, `engine` FROM `system`.`tables` WHERE (`engine` NOT LIKE '%MergeTree%') AND (`engine` != 'Distributed') AND (`engine` != 'MaterializedView') AND (`engine` NOT IN ('Kafka', 'RabbitMQ')) AND (`database` NOT IN ('system', 'INFORMATION_SCHEMA', 'information_schema')) AND (`database` NOT IN ( SELECT `name` FROM `system`.`databases` WHERE `engine` IN ('MySQL', 'MaterializedMySQL', 'MaterializeMySQL', 'Lazy', 'PostgreSQL', 'MaterializedPostgreSQL', 'SQLite') )) Connectez-vous au target cluster et utilisez la remote function pour migrer les données.
Migration manuelle
Migration depuis un ClickHouse géré par vos soins vers l'édition Enterprise
Dans ApsaraDB for ClickHouse Enterprise Edition, il vous suffit de créer la table cible correspondante, que votre table source comporte ou non des shards ou des réplicas. Le système utilise automatiquement le moteur de table SharedMergeTree, ce qui vous permet d'omettre les paramètres complexes du moteur dans la définition de la table cible. Le cluster ApsaraDB for ClickHouse Enterprise Edition gère automatiquement la mise à l'échelle verticale et horizontale ; vous n'avez donc pas à vous soucier des détails d'implémentation de la réplication et du sharding.
Présentation
La procédure suivante décrit comment migrer d'un cluster ClickHouse géré par vos soins vers un cluster ApsaraDB for ClickHouse Enterprise Edition.
Ajoutez un utilisateur en lecture seule au cluster source.
Répliquez la structure de la table source sur le cluster cible.
Si le cluster source est accessible depuis un réseau externe, récupérez les données du cluster source vers le cluster cible. Sinon, poussez les données du cluster source vers le cluster cible.
(Facultatif) Supprimez l'adresse IP du cluster source de la liste d'autorisation du cluster cible.
Supprimez l'utilisateur en lecture seule du cluster source.
Procédure
-
Effectuez les opérations suivantes sur le cluster source. Cette procédure suppose que la table source contient déjà des données.
-
Ajoutez un utilisateur en lecture seule pour la table
db.table.CREATE USER exporter IDENTIFIED WITH SHA256_PASSWORD BY 'password-here' SETTINGS readonly = 1;GRANT SELECT ON db.table TO exporter; -
Copiez la structure de la table source.
SELECT create_table_query FROM system.tables WHERE database = 'db' and table = 'table'
-
-
Effectuez les opérations suivantes sur le cluster cible.
-
Créez une base de données.
CREATE DATABASE db -
Utilisez l'instruction
CREATE TABLEde la table source pour créer la table cible.RemarqueLorsque vous exécutez l'instruction
CREATE TABLE, remplacez le paramètreENGINEparSharedMergeTreeet omettez tous les paramètres. Le cluster ApsaraDB for ClickHouse Enterprise Edition réplique toujours la table et fournit les paramètres appropriés. Les clausesORDER BY,PRIMARY KEY,PARTITION BY,SAMPLE BY,TTLetSETTINGSdéfinissent la structure et les métadonnées de la table. Conservez ces clauses afin de garantir la création correcte de la table sur le cluster ApsaraDB for ClickHouse Enterprise Edition cible.CREATE TABLE db.table ... -
Utilisez la fonction
Remotepour récupérer ou pousser les données.RemarqueSi le serveur ClickHouse source n'est pas accessible depuis un réseau externe, poussez les données depuis le cluster source au lieu de les récupérer depuis le cluster cible. La fonction
Remoteprend en charge les opérationsSELECT(récupération) etINSERT(push).-
Sur le cluster cible, utilisez la fonction
Remotepour récupérer les données de la table source.
INSERT INTO db.table SELECT * FROM remote('source-hostname:9000', db, table, 'exporter', 'password-here') -
Sur le cluster source, utilisez la fonction
Remotepour pousser les données vers le cluster cible.
RemarqueAjoutez les adresses IP du cluster source à la liste d'autorisation du cluster cible afin de permettre à la fonction
Remotede se connecter à votre cluster ApsaraDB for ClickHouse Enterprise Edition. Pour plus d'informations, consultez Configurer une liste d'autorisation.INSERT INTO FUNCTION remote('target-hostname:9000', 'db.table', 'default', 'PASS') SELECT * FROM db.table
-
-
FAQ
Erreurs de connectivité et de configuration
Message d'erreur | Description | Solution |
| La connexion réseau au self-built cluster a expiré. | Utilisez le message d'erreur pour résoudre le problème réseau. |
| Le cluster spécifié dans la configuration de la tâche de migration est introuvable sur le self-built cluster. | Interrogez le self-built cluster via SQL pour obtenir le nom de cluster correct, puis mettez à jour la configuration de la tâche de migration. |
| Une ou plusieurs des tables système suivantes sont absentes du self-built cluster : | Créez les tables système manquantes sur le self-built cluster. |
| Le fuseau horaire du self-built cluster ne correspond pas à celui du cluster cible. | Alignez les paramètres de fuseau horaire des clusters. |
| Le paramètre | Ajustez le paramètre Important La définition de la compatibilité sur une version antérieure désactive des fonctionnalités telles que ParallelReplica. |
Erreurs de schéma de base de données et de table
|
Message d'erreur |
Description |
Solution |
|
|
Les schémas de base de données et de table sont incohérents entre les nœuds du self-built cluster. |
Vérifiez les schémas sur chaque nœud du self-built cluster et résolvez toutes les incohérences. |
|
|
Les mots de passe dans les schémas de base de données et de table sont masqués. |
Définissez le paramètre Remarque : Cette opération nécessite l'autorisation de compte displaySecretsInShowAndSelect. |
|
|
Le processus de migration ne prend pas en charge le moteur de base de données du self-built cluster. |
Remplacez le moteur de base de données par un moteur pris en charge par l'instance cible. |
|
|
Le moteur de base de données du self-built cluster n'est pas pris en charge pour la migration. |
Pour contourner les exceptions de migration, le système remplace automatiquement le moteur par une base de données répliquée. |
|
|
Le moteur de base de données du self-built cluster n'est pas pris en charge pour la migration. |
Utilisez Data Transmission Service (DTS) pour synchroniser les données ou créez une base de données portant le même nom sur l'instance cible afin de contourner les exceptions de migration. |
|
|
La migration n'est pas prise en charge pour les tables utilisant certains moteurs. |
Le processus de migration ignore automatiquement ce moteur. |
|
|
L'utilisation du moteur de table distribuée n'est pas recommandée dans ApsaraDB for ClickHouse Enterprise Edition. |
Supprimez la table distribuée sur le self-built cluster. Après la migration, interrogez directement la table MergeTree sous-jacente. |
|
|
Cet avertissement signale des adresses IP potentiellement inaccessibles, mais ne confirme pas un problème d'accessibilité. |
Assurez-vous que l'instance cible peut atteindre les adresses IP référencées. Si ce n'est pas le cas, établissez la connectivité et ajoutez les adresses IP à la liste d'autorisation. |
|
|
Pour les tables utilisant certains moteurs, seul le schéma est migré ; la migration des données n'est pas prise en charge. |
Migrez les données manuellement, par exemple en utilisant la fonction remote. |
|
|
La migration n'est pas prise en charge pour les tables utilisant certains moteurs. |
Créez manuellement une table MergeTree portant le même nom sur l'instance cible et migrez les données manuellement. |
|
|
La migration n'est pas prise en charge pour les tables utilisant certains moteurs. |
Consultez l'étape 4 de la section Procédure. |
|
|
Pour que la vérification du schéma aboutisse, la table correspondante dans l'instance cible doit être vide. |
Supprimez les données de la table correspondante dans l'instance cible. |
|
|
Seules les fonctions définies par l'utilisateur avec |
Créez manuellement la fonction requise sur l'instance cible. |
Autres
Pour obtenir des solutions à d'autres problèmes de migration, consultez la FAQ.
