Tous les produits
Search
Centre de documentation

ApsaraDB for ClickHouse:Migrer un cluster ClickHouse autogéré vers ApsaraDB for ClickHouse Enterprise Edition

Dernière mise à jour :Aug 11, 2026

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.

      Remarque

      Dans 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.

  1. Créez une tâche de migration pour effectuer la migration des données.

  2. Analysez les goulots d'étranglement liés aux performances et vérifiez la faisabilité de la migration.

  3. Pour valider la compatibilité avec le cloud, utilisez l'une des méthodes suivantes :

    1. Validation manuelle : consultez Analyse et résolution de la compatibilité.

    2. 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.

  • Migration de bases de données et de tables spécifiques.

  • Migration de clusters dont le stockage à froid sur un seul nœud dépasse 1 To.

  • Migration de clusters dont les données chaudes sur un seul nœud dépassent 10 To.

  • Migration d'un cluster entier qui ne répond pas aux exigences de migration via la console.

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é.

    Remarque

    Si 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 en default.

Contenu pris en charge

Remarque

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

    Atomic

    Remplacé par le moteur Replicated

    Replicated

    Aucune modification

    Ordinary

    Remplacé 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

    MaterializedView

    Aucune modification

    View

    GenerateRandom

    Buffer

    URL

    Null

    Merge

    SharedMergeTree

    SharedVersionedCollapsingMergeTree

    SharedSummingMergeTree

    SharedReplacingMergeTree

    SharedAggregatingMergeTree

    SharedCollapsingMergeTree

    SharedGraphiteMergeTree

    MergeTree

    Remplacé par SharedMergeTree

    ReplicatedMergeTree

    VersionedCollapsingMergeTree

    Remplacé par SharedVersionedCollapsingMergeTree

    ReplicatedVersionedCollapsingMergeTree

    SummingMergeTree

    Remplacé par SharedSummingMergeTree

    ReplicatedSummingMergeTree

    ReplacingMergeTree

    Remplacé par SharedReplacingMergeTree

    ReplicatedReplacingMergeTree

    AggregatingMergeTree

    Remplacé par SharedAggregatingMergeTree

    ReplicatedAggregatingMergeTree

    ReplicatedCollapsingMergeTree

    Remplacé par SharedCollapsingMergeTree

    CollapsingMergeTree

    GraphiteMergeTree

    Remplacé par SharedGraphiteMergeTree

    ReplicatedGraphiteMergeTree

  • Données : la migration incrémentielle est prise en charge pour les données des tables de la famille MergeTree.

Important
  • 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

  1. Assurez-vous que les configurations de system.part_log et system.query_log dans 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>
  2. Après avoir modifié la configuration, exécutez les instructions drop table system.part_log et drop table system.query_log. L'insertion de données dans une table métier recrée automatiquement les tables system.part_log et system.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é.

Important

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

  1. Connectez-vous à la console ApsaraDB for ClickHouse. Sur la page Clusters, sélectionnez Enterprise Edition Clusters, puis cliquez sur l'ID du cluster cible.

  2. Dans le volet de navigation, choisissez Data Migration and Synchronization > Migration from ClickHouse.

  3. Cliquez sur Create Migration Task.

  4. 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.

    Important
    • Vous 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

  5. 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.

    Remarque

    En 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.

  6. Vérifiez la connectivité et les configurations.

    1. Cliquez sur Start Check.

      La vérification porte sur les éléments suivants :

      • Vérification de la connectivité : confirme que le cluster autogéré et l'instance cible disposent d'une connectivité réseau complète et que tous les nœuds peuvent communiquer entre eux.

      • Vérification des autorisations du compte : confirme que le compte source et le mot de passe sont corrects et permettent de se connecter à l'instance source.

      • Vérification des tables système de l'instance source : confirme que l'instance autogérée dispose des tables système system.query_log, system.parts et system.part_log.

      • Vérification de la configuration : confirme que l'instance autogérée et l'instance cible utilisent le même fuseau horaire, et que le paramètre de compatibilité de l'instance cible correspond à la version de l'instance source.

    2. Pendant la vérification, vous pouvez cliquer sur l'icône image située dans le coin supérieur droit pour afficher la progression en temps réel.

    3. 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 image 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.

  7. 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.

    Important

    Les 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)

    1. Cliquez sur Query Source. Le système interroge automatiquement toutes les bases de données de l'instance source.

    2. Pendant l'interrogation, vous pouvez cliquer sur Query Results pour afficher les résultats en temps réel.

    3. 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)

    1. 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.

    2. Pendant l'interrogation, vous pouvez cliquer sur Query Results pour afficher les résultats en temps réel.

    3. 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.

    Remarque

    Par 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

    1. 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.

    2. 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.

    3. 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.

        Important

        Les é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.

        Important

        Les é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.

  8. Migrer les structures des bases de données et des tables.

    1. Cliquez sur Start Migration.

    2. Pendant la migration, vous pouvez cliquer sur l'icône image située dans le coin supérieur droit pour afficher la progression en temps réel.

    3. Une fois la migration terminée, agissez en fonction des résultats.

      Pour plus d'informations sur les résultats, consultez l'étape 5.

  9. (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.

      Important
      • Les 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.

  10. 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.

    1. 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');
    2. 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>';
    3. 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>;
    4. 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>;
    Important

    Assurez-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.

  11. Démarrer la synchronisation.

    1. Cliquez sur Start Sync.

    2. Pendant la synchronisation, vous pouvez cliquer sur l'icône image située dans le coin supérieur droit pour afficher la progression en temps réel.

      Pendant la synchronisation, utilisez les opérations Stop, Restart et Cancel Migration pour contrôler le processus de migration. Cliquez pour afficher les détails de ces opérations.

      Actions

      Description

      Impact

      Cas d'utilisation

      Arrêter

      Interrompt immédiatement la migration des données et passe à la migration des structures de base de données et de tables restantes.

      • Les données peuvent ne pas être entièrement migrées.

      • Avant de redémarrer la migration, vous devez effacer les données migrées du cluster cible pour éviter toute duplication des données.

      • Arrêt manuel de la tâche de migration une fois toutes les données migrées.

      • Test avec une migration partielle des données sans avoir à interrompre les écritures sur le cluster auto-géré.

      Redémarrer

      Si une erreur survient lors d'une étape de vérification ou de migration, cette opération retente l'étape échouée après résolution du problème.

      Aucun

      Reprendre la tâche à partir du point d'échec après la résolution d'une erreur de migration.

      Annuler la migration

      Annule la tâche de force et ignore toutes les étapes suivantes.

      Important

      Après l'annulation, la tâche de migration est verrouillée, ce qui empêche toute modification du processus de migration. Vous pouvez utiliser les boutons Previous, Next ou Refresh pour consulter les résultats des étapes terminées.

      • La tâche de migration est arrêtée de force. Les structures de base de données et de tables ainsi que les configurations de l'instance cible peuvent être incomplètes et inutilisables pour les charges de travail de production.

      • Avant de redémarrer la migration, vous devez effacer les données migrées du cluster cible pour éviter toute duplication des données.

      La tâche de migration affecte négativement le cluster auto-géré et vous devez y mettre fin rapidement pour reprendre les écritures.

    3. 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.

      Important

      Si 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>;
    4. Lorsque le processus atteint l'étape Migrate data, basculez vers l'onglet Migrate data et cliquez sur l'icône image pour afficher la Migration Progress et le Estimated remaining time.

      Évaluer si la migration peut être achevée

      Le succès de la migration dépend de la vitesse de migration par rapport à la vitesse d'écriture du cluster auto-géré.

      • Le tableau suivant fournit des données de test de vitesse de migration :

        Taille moyenne des partitions

        Type d'instance source

        Type de disque source

        Type d'instance cible

        Support de stockage cible

        Nœuds du cluster

        Vitesse par nœud

        Vitesse globale de migration

        402,54 Mo

        8C32G

        PL1

        16CCU

        OSS

        16

        47 Mo/s

        752,34 Mo/s

        402,54 Mo

        80C384G

        PL3

        48CCU

        ESSD_L2

        8

        197,74 Mo/s

        1581,95 Mo/s

      • Comparez les vitesses d'écriture du cluster cible et du cluster auto-géré :

        La vitesse de migration des données dépend de facteurs tels que la taille des partitions (dans nos tests, nous avons observé des vitesses de migration rapides pour une taille moyenne de partition comprise entre 100 Mo et 10 Go), le type d'instance, le type de disque et les caractéristiques de la charge de travail. Par conséquent, les données de test sont fournies à titre indicatif uniquement. Pour déterminer la vitesse d'écriture réelle du cluster cible, vérifiez son débit disque. Pour plus d'informations sur la consultation du débit disque, consultez Afficher les informations de surveillance du cluster.

        • Si la vitesse d'écriture du cluster cible est inférieure à celle du cluster auto-géré : la migration est susceptible d'échouer. Nous vous recommandons d'annuler la tâche et d'effectuer une migration manuelle.

        • Si la vitesse d'écriture du cluster cible est supérieure à celle du cluster auto-géré : pour améliorer le taux de réussite, nous vous recommandons de veiller à ce que le temps de migration, calculé comme Volume de données / (Vitesse de migration - Vitesse d'écriture du cluster auto-géré), ne dépasse pas 5 jours.

      Important
      • Vous 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.

      Estimer quand interrompre les écritures sur le cluster auto-géré et effectuer le basculement

      Lorsque le temps de migration estimé est inférieur à 10 minutes ou que la progression de la migration atteint 99 %, effectuez les opérations suivantes pour finaliser le basculement :

      1. Interrompez les écritures métier. Sur le cluster auto-géré, supprimez les tables du moteur Kafka/RabbitMQ précédemment recréées 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>;
      2. Attendez que la progression de la migration atteigne 100 % et que la migration soit totalement terminée.

      3. Connectez-vous au cluster cible et 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.

        Important

        Si 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.

        -- Recreate the Kafka/RabbitMQ engine table on the target 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>;
      4. Vérifiez que le pipeline de données sur le cluster cible fonctionne correctement et que les données circulent comme prévu.

    5. 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.

    6. Une fois la synchronisation terminée, cliquez sur Completed.

      Important

      Une 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 :

  1. 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')
    ))
  2. 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

image.png

Remarque

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.

  1. Ajoutez un utilisateur en lecture seule au cluster source.

  2. Répliquez la structure de la table source sur le cluster cible.

  3. 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.

  4. (Facultatif) Supprimez l'adresse IP du cluster source de la liste d'autorisation du cluster cible.

  5. Supprimez l'utilisateur en lecture seule du cluster source.

Procédure

  1. Effectuez les opérations suivantes sur le cluster source. Cette procédure suppose que la table source contient déjà des données.

    1. 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;
    2. Copiez la structure de la table source.

      SELECT create_table_query
      FROM system.tables
      WHERE database = 'db' and table = 'table'
  2. Effectuez les opérations suivantes sur le cluster cible.

    1. Créez une base de données.

      CREATE DATABASE db
    2. Utilisez l'instruction CREATE TABLE de la table source pour créer la table cible.

      Remarque

      Lorsque vous exécutez l'instruction CREATE TABLE, remplacez le paramètre ENGINE par SharedMergeTree et 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 clauses ORDER BY, PRIMARY KEY, PARTITION BY, SAMPLE BY, TTL et SETTINGS dé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 ...
    3. Utilisez la fonction Remote pour récupérer ou pousser les données.

      Remarque

      Si 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 Remote prend en charge les opérations SELECT (récupération) et INSERT (push).

      • Sur le cluster cible, utilisez la fonction Remote pour récupérer les données de la table source.

        image.png

        INSERT INTO db.table SELECT * FROM
        remote('source-hostname:9000', db, table, 'exporter', 'password-here')
      • Sur le cluster source, utilisez la fonction Remote pour pousser les données vers le cluster cible.

        image.png

        Remarque

        Ajoutez les adresses IP du cluster source à la liste d'autorisation du cluster cible afin de permettre à la fonction Remote de 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

Tcp connectivity check failed for '{host}:{port}':{error}.

La connexion réseau au self-built cluster a expiré.

Utilisez le message d'erreur pour résoudre le problème réseau.

No such cluster: {cluster}, please run 'SELECT DISTINCT(cluster) FROM system.clusters;' to check

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.

not exists

Une ou plusieurs des tables système suivantes sont absentes du self-built cluster : system.query_log, system.parts et system.part_log.

Créez les tables système manquantes sur le self-built cluster.

Timezone mismatch with source, which may cause time data anomalies.

Le fuseau horaire du self-built cluster ne correspond pas à celui du cluster cible.

Alignez les paramètres de fuseau horaire des clusters.

Compatibility mismatch with source version, which may cause incompatibility.

Le paramètre compatibility du cluster cible est incompatible avec la version du self-built cluster.

Ajustez le paramètre compatibility du cluster cible pour qu'il corresponde à la version du self-built cluster.

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

ERROR: Not consistent across nodes.

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.

ERROR: Cannot get secrets (shown as [HIDDEN]), please set display_secrets_in_show_and_select=1 (restart required).

Les mots de passe dans les schémas de base de données et de table sont masqués.

Définissez le paramètre display_secrets_in_show_and_select sur 1 et redémarrez le cluster.

Remarque : Cette opération nécessite l'autorisation de compte displaySecretsInShowAndSelect.

ERROR: Unsupported engine.

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.

WARN:Unsupported engine, it will be automatically replaced with a Replicated database to bypass migration exceptions.

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.

WARN:Unsupported engine, please replace the data synchronization capability with DTS, or create a same-name database to bypass migration exceptions.

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.

WARN:Unsupported engine, it will be automatically ignored during migration.

La migration n'est pas prise en charge pour les tables utilisant certains moteurs.

Le processus de migration ignore automatiquement ce moteur.

WARN: Using the Distributed engine is not recommended because it can cause scaling issues in enterprise instances. Drop this table and query the underlying MergeTree table directly.

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.

WARN:Please confirm referenced IP addresses are accessible.

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.

WARN:Only structure, does not support data migration.

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.

WARN:Unsupported engine, please create a same-name MergeTree table manually to bypass migration exceptions.

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.

WARN:Ignored engine, please create table manually.

La migration n'est pas prise en charge pour les tables utilisant certains moteurs.

Consultez l'étape 4 de la section Procédure.

ERROR: Table has data in destination cluster.

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.

ERROR: Unsupported function origin.

Seules les fonctions définies par l'utilisateur avec function.origin="SQLUserDefined" sont prises en charge pour la migration.

Créez manuellement la fonction requise sur l'instance cible.

Autres

Pour obtenir des solutions à d'autres problèmes de migration, consultez la FAQ.