Tous les produits
Search
Centre de documentation

ApsaraDB for ClickHouse:Migrer d'un cluster ClickHouse auto-géré vers Cloud ClickHouse

Dernière mise à jour :Aug 12, 2026

Les clusters ClickHouse auto-gérés présentent souvent des problèmes d'instabilité, une faible évolutivité, des mises à niveau complexes et une reprise après sinistre limitée. C'est pourquoi de nombreux clients migrent leurs clusters ClickHouse auto-gérés vers un service PaaS cloud. Cette rubrique explique comment migrer d'un cluster ClickHouse auto-géré vers un cluster ApsaraDB for ClickHouse édition compatible communautaire.

Prérequis

  • Cluster cible :

  • Cluster auto-géré :

    • Un compte de base de données et un mot de passe sont requis.

    • Le compte doit posséder des autorisations de lecture sur les bases de données et les tables, ainsi que des autorisations pour exécuter des commandes SYSTEM.

  • Le cluster cible et le cluster auto-géré doivent pouvoir communiquer via le réseau.

    Si le cluster auto-géré et le cluster cible se trouvent dans le même VPC, vous devez également ajouter les adresses IP de tous les nœuds du cluster cible et le bloc CIDR IPv4 de son vSwitch à la liste d'autorisation du cluster auto-géré.

    • Pour configurer une liste d'autorisation pour un cluster ApsaraDB for ClickHouse, consultez Configurer une liste d'autorisation.

    • Pour configurer une liste d'autorisation dans un cluster auto-géré, reportez-vous à la documentation produit correspondante.

    • Pour afficher les adresses IP de tous les nœuds du cluster ApsaraDB for ClickHouse, exécutez SELECT * FROM system.clusters;.

    • Pour obtenir le bloc CIDR IPv4 du vSwitch de votre cluster ApsaraDB for ClickHouse, procédez comme suit :

      1. Dans la console ApsaraDB for ClickHouse, accédez à la page Cluster Information du cluster cible. Dans la section Network Information, récupérez l'VSwitch ID.

      2. Dans la liste des vSwitch, utilisez l'Instance ID pour trouver le vSwitch cible et obtenir son IPv4 CIDR.

    Si votre cluster auto-géré et le cluster cible se trouvent dans des VPC différents, ou si le cluster auto-géré est hébergé dans un centre de données local ou sur une autre plateforme cloud, vous devez d'abord établir la connectivité réseau. Pour plus d'informations, consultez Comment établir une connexion réseau entre un cluster cible et une source de données ?.

Validation de la migration

Avant de lancer la migration des données, nous vous recommandons vivement de créer un environnement de test afin de valider la compatibilité métier, les performances et le plan de migration. Une fois cette validation terminée, vous pourrez procéder à la migration des données dans votre environnement de production. Cette étape cruciale permet d'identifier et de résoudre en amont les problèmes potentiels, garantissant ainsi une migration fluide et évitant toute perturbation de votre environnement de production.

  1. Créez une tâche de migration pour transférer les données. Pour connaître la procédure détaillée, reportez-vous à cette rubrique.

  2. Pour plus d'informations sur la compatibilité de la migration cloud, l'analyse des goulots d'étranglement des performances et la garantie du succès de la migration, consultez Analyse et solutions pour la compatibilité et les goulots d'étranglement des performances lors de la migration d'un cluster ClickHouse auto-géré vers le cloud.

Choisir une solution

Solution de migration

Avantages

Inconvénients

Cas d'utilisation

Migration via la console

Offre une interface visuelle. Aucune migration manuelle des métadonnées n'est requise.

Prend uniquement en charge la migration complète et incrémentielle de l'ensemble du cluster. Impossible de migrer des bases de données, des tables ou des données historiques spécifiques.

Migration d'un cluster entier.

Migration manuelle

Permet de contrôler précisément les bases de données et les tables à migrer.

Implique des étapes complexes et une migration manuelle des métadonnées.

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

  • Volume de données froides supérieur à 1 To.

  • Volume de données chaudes supérieur à 10 To.

  • Migration d'un cluster entier ne répondant pas aux prérequis de la migration via la console.

Procédure

Migration via la console

Limites

Le cluster de destination doit exécuter la version 21.8 ou ultérieure.

Remarques

Pendant la migration

  • Durant la migration, le processus de fusion (merge) est suspendu dans le cluster de destination, mais se poursuit dans le cluster auto-géré.

    Remarque

    Si une tâche de migration s'exécute pendant une longue durée, un excès de métadonnées peut s'accumuler dans le cluster de destination. Nous recommandons de limiter la durée des tâches de migration à 5 jours maximum. Les tâches dépassant cette limite sont automatiquement annulées.

  • Le cluster de destination doit être le cluster default. Si votre cluster auto-géré utilise un nom différent, le service convertit automatiquement la définition du cluster dans les tables distribuées en default.

Périmètre de migration

  • Objets pris en charge

    • Bases de données, dictionnaires de données et vues matérialisées.

      • Ce service prend en charge la migration des dictionnaires de données créés via SQL, mais pas ceux créés via XML.

        Pour le vérifier, exécutez l'instruction suivante : SELECT * FROM system.dictionaries WHERE (database = '') OR isNull(database);. Si l'instruction retourne des lignes, cela indique que vous possédez des dictionnaires de données créés au format XML.

      • Lorsqu'un dictionnaire de données accède à un service externe, assurez-vous que ce service est disponible et que le cluster figure bien dans sa liste d'autorisation. Si la source de données d'un dictionnaire est une table interne du cluster ClickHouse actuel et que le paramètre HOST dans la définition est une adresse IP, l'accès au dictionnaire peut échouer après la migration en raison d'un changement d'adresse IP. Vous devrez alors reconfirmer le paramètre HOST du cluster ClickHouse actuel et recréer manuellement le dictionnaire de données.

    • Schémas de table : Tous les schémas de table, à l'exception des tables utilisant les moteurs Kafka et RabbitMQ.

    • Données : Migration incrémentielle des données provenant des tables de la famille MergeTree.

  • Objets et données non pris en charge

    • Tables utilisant les moteurs Kafka et RabbitMQ, ainsi que leurs données.

    • Données issues de tables autres que MergeTree, telles que les tables externes et les tables Log.

    Important

    Vous devez migrer manuellement les éléments non pris en charge listés ci-dessus.

  • Limites de volume de données

    • Données froides : La migration des données froides est lente. Pour éviter les échecs dus à des durées de migration trop longues, nous recommandons de purger les données froides de votre cluster auto-géré afin que le volume total ne dépasse pas 1 To.

    • Données chaudes : Si le volume de données chaudes dépasse 10 To, la tâche de migration risque d'échouer.

    Si votre volume de données dépasse ces limites, envisagez d'utiliser plutôt la solution de migration manuelle.

Impact sur le cluster

  • Cluster auto-géré :

    • La lecture des données depuis le cluster auto-géré augmente sa consommation de CPU et de mémoire.

    • Les opérations DDL ne sont pas autorisées.

  • Cluster de destination :

    • L'écriture de données dans le cluster de destination augmente sa consommation de CPU et de mémoire.

    • Les opérations DDL sont interdites sur les bases de données et les tables en cours de migration.

    • Cette restriction ne s'applique pas aux autres bases de données et tables.

    • Le processus de fusion est interrompu uniquement pour les bases de données et les tables en cours de migration.

    • Le cluster redémarre avant le début de la tâche de migration.

    • Une fois la migration terminée, le cluster effectue fréquemment des opérations de fusion. Cela accroît l'utilisation des E/S et peut entraîner une latence plus élevée pour les requêtes métier. Anticipez l'impact potentiel de cette latence accrue. Vous devez calculer la durée spécifique des opérations de fusion. Pour obtenir des instructions, consultez Calculer la durée de fusion après la migration.

Procédure

Étape 1 : Vérifier le cluster et activer les tables système

Avant de migrer les données, modifiez le fichier config.xml de votre cluster auto-géré pour activer la migration incrémentielle. Les modifications requises dépendent de l'activation ou non des tables system.part_log et system.query_log.

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 provoquer l'échec ou le ralentissement de la migration des données.

    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 de destination

Configurez le cluster de destination pour qu'il soit compatible avec le cluster auto-géré. Cette étape minimise les modifications applicatives requises après la migration.

  1. Obtenez et comparez les numéros de version du cluster de destination et du cluster auto-géré.

    Connectez-vous au cluster de destination et au cluster auto-géré, puis exécutez l'instruction suivante sur chacun d'eux pour obtenir leurs numéros de version. Pour plus d'informations sur la connexion à ApsaraDB for ClickHouse, consultez Se connecter à une base de données.

    SELECT version();
  2. Si les versions diffèrent, connectez-vous au cluster de destination et définissez le paramètre de compatibilité pour qu'il corresponde à la version du cluster auto-géré. Cela garantit une cohérence maximale des fonctionnalités. Voici un exemple :

    SET GLOBAL compatibility = '22.8';

Étape 3 : (Facultatif) Activer le moteur MaterializedMySQL

Si votre cluster auto-géré contient des tables utilisant le moteur MaterializedMySQL, exécutez l'instruction suivante pour activer ce moteur.

SET GLOBAL allow_experimental_database_materialized_mysql = 1;
Remarque

La communauté ClickHouse ne maintient plus le moteur MaterializedMySQL. Après la migration vers le cloud, nous recommandons d'utiliser Data Transmission Service (DTS) pour synchroniser les données MySQL.

Comme le moteur MaterializedMySQL n'est plus maintenu, Data Transmission Service (DTS) utilise des tables ReplacingMergeTree au lieu de tables MaterializedMySQL lorsqu'il synchronise des données MySQL vers ApsaraDB for ClickHouse. Pour plus d'informations, consultez Compatibilité MaterializedMySQL.

Pour plus d'informations sur l'utilisation de DTS afin de migrer des données MySQL vers ApsaraDB for ClickHouse, consultez les rubriques suivantes :

Étape 4 : Enregistrer et nettoyer les tables de moteur Kafka/RabbitMQ

Avant de démarrer la migration, notez les définitions de toutes les tables de moteur Kafka/RabbitMQ et de leurs vues matérialisées en aval dans le cluster auto-géré, gérez les tables implicites, puis supprimez ces tables pour éviter les erreurs de migration.

  1. Connectez-vous au cluster auto-géré et interrogez toutes les tables de moteur Kafka et RabbitMQ ainsi que leurs dépendances en aval.

    /*
    create_table_query: table definition
    dependencies_database: database of the table that depends on this table
    dependencies_table: table that depends on this table
    From dependencies_database and dependencies_table, you can identify the materialized views that depend on Kafka/RabbitMQ tables
    */
    SELECT * FROM system.tables WHERE engine IN ('RabbitMQ', 'Kafka');
  2. Consultez la définition de la vue matérialisée pour vérifier si sa table cible est une table implicite.

    /*
    View the materialized view definition.
    If the target table of the materialized view is an implicit table, pay special attention:
    Dropping the materialized view will also drop the implicit table, causing data loss.
    Example: If CREATE MATERIALIZED VIEW [db.]table_name [TO[db.]name] does not specify TO,
    the system automatically creates an implicit table, possibly 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 (RENAME) pour éviter toute perte de données lors de la suppression ultérieure de la vue matérialisée.

    -- Rename the implicit target table to a new name to protect data
    RENAME TABLE <DATABASE>.`.inner_id.<TABLE_UUID>` TO <DATABASE>.<new_target_table_name>;
  4. Supprimez les tables de moteur Kafka/RabbitMQ et leurs vues matérialisées en aval.

    -- Drop materialized views first
    DROP TABLE <DATABASE>.<MATERIALIZED_VIEW_NAME>;
    -- Then drop Kafka/RabbitMQ engine tables
    DROP TABLE <DATABASE>.<KAFKA_OR_RABBITMQ_TABLE_NAME>;
Important

Veillez à conserver toutes les instructions DDL enregistrées. Vous en aurez besoin pour reconstruire ces tables ultérieurement, tant sur le cluster auto-géré que sur le cluster de destination. Si vous avez effectué une opération RENAME, utilisez la clause TO pointant vers la table cible renommée lors de la reconstruction de la vue matérialisée. Pour plus d'informations, consultez CREATE MATERIALIZED VIEW.

Étape 5 : Créer une tâche de migration de données

  1. Connectez-vous à la console ApsaraDB for ClickHouse.

  2. Sur la page Clusters, sélectionnez Clusters of Community-compatible Edition et cliquez sur l'ID du cluster de destination.

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

  4. Sur la page des tâches de migration, cliquez sur Create Migration Task.

    1. Configurez les instances source et de destination.

      Définissez les paramètres suivants et cliquez sur Test Connectivity and Proceed.

      Remarque

      Si le test de connexion réussit, passez à l'étape suivante. En cas d'échec, reconfigurez les instances source et de destination en suivant les indications affichées.

      Paramètres du cluster source

      Paramètre

      Description

      Exemple

      Source Access Method

      Sélectionnez Express Connect, VPN Gateway, Smart Access Gateway, or Self-managed ClickHouse Clusters on an ECS Instance.

      Express Connect, VPN Gateway, Smart Access Gateway, or Self-managed ClickHouse Clusters on an ECS Instance

      Cluster Name

      Nom du cluster source.

      Le nom ne peut contenir que des chiffres et des lettres minuscules.

      source

      Source Cluster Name

      Exécutez SELECT * FROM system.clusters; pour obtenir le Source Cluster Name.

      default

      VPC IP Address

      Adresse IP et PORT (adresse TCP) de chaque shard du cluster, séparés par des virgules.

      Important

      Vous ne pouvez pas utiliser le nom de domaine VPC ou l'adresse SLB d'un cluster ApsaraDB for ClickHouse.

      Format : IP:PORT,IP:PORT,......

      La méthode pour obtenir l'adresse IP et le PORT du cluster varie selon le scénario de migration des données.

      Migration inter-comptes ou inter-régions

      Vous pouvez utiliser l'instruction SQL suivante pour obtenir l'adresse IP et le PORT du cluster auto-géré :

      SELECT shard_num, replica_num, host_address as ip, port FROM system.clusters WHERE cluster = 'default' and replica_num = 1;

      Ici, replica_num=1 sélectionne le premier ensemble de réplicas. Vous pouvez également choisir d'autres ensembles de réplicas ou sélectionner un réplica par shard.

      Migration ClickHouse hors Alibaba Cloud

      Si l'adresse IP ne peut pas être facilement mappée vers Alibaba Cloud, vous pouvez utiliser l'instruction SQL suivante pour obtenir l'adresse IP et le PORT du cluster auto-géré :

      SELECT shard_num, replica_num, host_address as ip, port FROM system.clusters WHERE cluster = '<cluster_name>' and replica_num = 1;

      Les paramètres sont décrits comme suit :

      • cluster_name : nom du cluster de destination.

      • replica_num=1 sélectionne le premier ensemble de réplicas. Vous pouvez également choisir d'autres ensembles de réplicas ou sélectionner un réplica par shard.

      Si l'adresse IP et le port sont mappés vers Alibaba Cloud via une traduction réseau, vous devez configurer l'adresse IP et le port mappés correspondants.

      192.168.0.5:9000,192.168.0.6:9000

      Database Account

      Compte de base de données du cluster source.

      test

      Database Password

      Mot de passe du compte de base de données du cluster source.

      test

      Paramètres du cluster de destination

      Paramètre

      Description

      Exemple

      Database Account

      Compte de base de données du cluster de destination.

      test

      Database Password

      Mot de passe du compte de base de données du cluster de destination.

      test

    2. Confirmez le contenu de la migration.

      Vérifiez attentivement les informations relatives aux données à migrer sur la page, puis cliquez sur Next: Pre-detect and Start Synchronization.

    3. Le système exécute une pré-vérification du lien de migration en arrière-plan et démarre la tâche.

      Le système effectue une Instance Status Detection, une Storage Space Detection et une Local Table and Distributed Table Detection sur les clusters source et de destination.

      • Si la pré-vérification réussit :

        Après le succès de la pré-vérification, la page indique que trois contrôles ont été validés : Instance status check, Storage space check et Local table and distributed table check. Le haut de la page affiche une durée estimée de migration de 2 minutes et décrit les impacts durant la migration :

        • L'instance source reste accessible en lecture et écriture, mais les opérations DDL sont impossibles.

        • L'instance de destination est accessible en lecture, mais les tables migrées ne peuvent pas faire l'objet d'écritures.

        • Lorsque le temps restant est inférieur à 10 minutes, vous devez arrêter les écritures pour déclencher la fin de la migration.

        • Les tables non-MergeTree conservent uniquement leur structure après la mise à l'échelle, sans migration des données.

        1. Examinez attentivement l'impact du processus de migration des données sur les instances.

        2. Cliquez sur Completed.

          Important
          • Après avoir cliqué sur Complete, le système crée et démarre la tâche, dont le statut passe à Running. Vous pouvez consulter la tâche dans la liste des tâches.

          • Après la création de la tâche, vous devez la surveiller. Lors de la dernière phase de la migration, vous devez interrompre les opérations d'écriture sur le cluster auto-géré et migrer les schémas de base de données et de tables restants. Pour plus d'informations, consultez Surveiller la tâche de migration et arrêter les écritures sur le cluster auto-géré.

      • Si la pré-vérification échoue : Suivez les instructions du message d'erreur et relancez la tâche de migration des données. Le tableau suivant décrit les éléments de pré-vérification et leurs exigences. Pour plus d'informations sur les messages d'erreur de pré-vérification et leurs solutions, consultez Erreurs et solutions de pré-vérification de la migration.

        Élément de contrôle

        Exigence

        Instance Status Detection

        La tâche de migration des données ne peut pas démarrer si des tâches de gestion (telles que l'extension, la mise à niveau ou la réduction) sont en cours d'exécution sur le cluster source ou de destination.

        Storage Space Detection

        L'espace de stockage disponible du cluster de destination doit représenter au moins 1,2 fois l'espace de stockage utilisé du cluster auto-géré.

        Local Table and Distributed Table Detection

        Si une table locale du cluster auto-géré n'a pas de table distribuée correspondante ou en possède plusieurs, le contrôle échoue. Pour résoudre ce problème, supprimez les tables distribuées excédentaires ou créez une table distribuée unique pour la table locale.

Étape 6 : Évaluer la faisabilité de la migration

Si la vitesse d'écriture du cluster source est inférieure à 20 Mo/s, vous pouvez ignorer cette étape.

Si la vitesse d'écriture du cluster source est supérieure à 20 Mo/s, vous devez vérifier la vitesse d'écriture réelle du cluster de destination pour évaluer la faisabilité de la migration. Une migration réussie exige que la vitesse d'écriture du cluster de destination puisse suivre celle du cluster source. Procédez comme suit :

  1. Consultez la métrique TairPDBShardingIOBandwidth du cluster de destination pour déterminer sa vitesse d'écriture réelle. Pour savoir comment consulter TairPDBShardingIOBandwidth, reportez-vous à Consulter les données de surveillance du cluster.

  2. Comparez les vitesses d'écriture des clusters de destination et source.

    1. Si la vitesse d'écriture du cluster de destination est supérieure à celle du cluster source : La migration a de fortes chances de réussir. Passez à l'Étape 7.

    2. Si la vitesse d'écriture du cluster de destination est inférieure à celle du cluster source : La migration risque d'échouer. Nous vous recommandons d'annuler la tâche de migration et d'utiliser la migration manuelle.

Étape 7 : Surveiller la migration et arrêter les écritures

  1. Connectez-vous à la console ApsaraDB for ClickHouse.

  2. Dans la liste des instances Community Edition, cliquez sur l'ID du cluster de destination.

  3. Dans le volet de navigation, cliquez sur Data Migration and Synchronization > Migration from ClickHouse.

  4. Sur la page de liste des migrations d'instances, vous pouvez :

    • Consulter le statut et la phase d'exécution de la tâche de migration.

      Important
      • Lorsque la phase d'exécution atteint Data Migration (c'est-à-dire que la migration du schéma de table est terminée), passez immédiatement à l'Étape 8 pour reconstruire les tables de moteur Kafka/RabbitMQ sur le cluster auto-géré et reprendre l'ingestion incrémentielle des données.

      • Surveillez attentivement les Running Information de la tâche cible. En vous basant sur le temps restant estimé dans la colonne Running Information, suivez l'Étape 9 pour arrêter les écritures sur le cluster auto-géré et gérer les tables de moteur Kafka et RabbitMQ.

    • Dans la colonne Actions, cliquez sur View Details pour ouvrir la page de détails de la tâche. Cette page contient les informations suivantes :

      Remarque

      Si la tâche de migration est terminée (son statut est Completed ou Canceled), le contenu de la page View Details est effacé. Vous pouvez consulter la liste des schémas de tables migrés sur le cluster de destination en exécutant l'instruction SQL suivante :

      SELECT `database`, `name`, `engine_full` FROM `system`.`tables` WHERE `database` NOT IN ('system', 'INFORMATION_SCHEMA', 'information_schema');
      • Tous les schémas de tables migrés et leur statut de migration.

      • Tous les schémas de bases de données migrés et leur statut de migration.

      • Tous les messages d'erreur relatifs aux échecs de migration de bases de données et de tables.

    Le tableau suivant décrit les statuts des tâches de migration.

    Statut de la tâche

    Description

    Running

    Préparation de l'environnement et des ressources pour la migration.

    Initializing

    Initialisation de la tâche de migration.

    Configuration Migration

    Migration de la configuration du cluster.

    Schema Migration

    Migration de toutes les bases de données, des tables de la famille MergeTree et des tables Distributed.

    Data Migration

    Migration incrémentielle des données des tables de la famille MergeTree.

    Other Schema Migration

    Migration des schémas des vues matérialisées et des tables non-MergeTree.

    Data Check

    Vérification de la cohérence du volume de données des tables terminées dans le cluster de destination par rapport au cluster auto-géré. En cas d'incohérence, la tâche peut échouer. Nous vous recommandons de redémarrer la migration.

    Post-migration Configuration

    Configuration des paramètres système pour le cluster de destination, tels que le nettoyage des ressources de migration et la réactivation des écritures sur l'instance source.

    Completed

    La tâche de migration est terminée.

    Canceled

    La tâche de migration est annulée.

Étape 8 : Reconstruire les tables de moteur Kafka/RabbitMQ sur le cluster auto-géré

Une fois que la tâche de migration entre dans la phase de migration des données (c'est-à-dire que la migration du schéma de table est terminée), utilisez les instructions DDL précédemment sauvegardées pour reconstruire les tables de moteur Kafka/RabbitMQ et leurs vues matérialisées en aval sur le cluster auto-géré. Une fois reconstruites, les données incrémentielles reprennent leur flux et sont automatiquement synchronisées vers le cluster de destination.

Important

Si vous avez précédemment effectué une opération RENAME sur des tables cibles implicites, utilisez la clause TO pointant vers la table cible renommée lors de la reconstruction de la vue matérialisée.

-- Rebuild Kafka/RabbitMQ engine tables on the self-managed cluster
CREATE TABLE <DATABASE>.<KAFKA_OR_RABBITMQ_TABLE_NAME> (...)
ENGINE = Kafka/RabbitMQ
SETTINGS ...;
-- Rebuild 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>;

Étape 9 : Arrêter les écritures et effectuer la bascule

Lorsque le temps restant estimé pour la migration est inférieur à 10 minutes ou que la progression atteint 99 %, effectuez les étapes de bascule suivantes :

  1. Arrêtez les écritures métier. Sur le cluster auto-géré, supprimez les tables de moteur Kafka/RabbitMQ précédemment reconstruites ainsi que leurs vues matérialisées en aval.

    -- Drop materialized views first
    DROP TABLE <DATABASE>.<MATERIALIZED_VIEW_NAME>;
    -- Then drop 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 de destination et utilisez les instructions DDL précédemment sauvegardées pour reconstruire les tables de moteur Kafka/RabbitMQ et leurs vues matérialisées en aval.

    Important

    Si vous avez précédemment effectué une opération RENAME sur des tables cibles implicites, utilisez la clause TO pointant vers la table cible renommée lors de la reconstruction de la vue matérialisée.

    -- Rebuild Kafka/RabbitMQ engine tables on the destination cluster
    CREATE TABLE <DATABASE>.<KAFKA_OR_RABBITMQ_TABLE_NAME> (...)
    ENGINE = Kafka/RabbitMQ
    SETTINGS ...;
    -- Rebuild 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 de destination fonctionne correctement et que les données affluent normalement.

Étape 10 : Terminer la migration

Après avoir arrêté les écritures sur le cluster auto-géré, vous pouvez Complete the task. Cette étape migre les données restantes, effectue une vérification du volume de données et migre les schémas de bases de données et de tables restants. Vous pouvez consulter le contenu migré dans les détails de la tâche.

Important
  • Si la vérification des données échoue, la tâche de migration reste bloquée à la phase de vérification du volume de données. Nous recommandons d'annuler la migration et de créer une nouvelle tâche. Pour plus d'informations sur l'annulation d'une tâche de migration, consultez Autres opérations.

  • Une migration de données prolongée peut entraîner une accumulation excessive de métadonnées dans le cluster de destination. Nous recommandons de limiter la durée des tâches de migration à 5 jours maximum. Les tâches dépassant cette limite sont automatiquement annulées.

  1. Connectez-vous à la console ApsaraDB for ClickHouse.

  2. Sur la page Clusters, sélectionnez Clusters of Community-compatible Edition, puis cliquez sur l'ID du cluster de destination.

  3. Dans le volet de navigation de gauche, cliquez sur Data Migration and Synchronization > Migration from ClickHouse.

  4. Pour la tâche de migration cible, cliquez sur Complete Migration dans la colonne Actions.

  5. Dans la boîte de dialogue Complete Migration, cliquez sur OK.

Étape 11 : Migrer les données des tables non-MergeTree

La tâche de migration transfère uniquement le schéma des tables non-MergeTree (telles que les tables externes et les tables Log), en les créant dans le cluster de destination sans aucune donnée métier. Vous devez migrer les données métier manuellement. Procédez comme suit :

  1. Connectez-vous au cluster auto-géré et exécutez l'instruction suivante pour identifier les tables non-MergeTree nécessitant une migration de 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 cluster de destination et utilisez la fonction remote pour migrer les données de la table. Pour des instructions détaillées, consultez Migrer des données à l'aide de la fonction remote.

Autres opérations

Lorsqu'une tâche de migration se termine, son Migration Status passe à Completed. La liste des tâches ne se met pas à jour instantanément ; actualisez donc la page périodiquement pour consulter le statut le plus récent.

Actions

Description

Impact

Scénario

Cancel Migration

Annule la tâche de force et ignore la vérification du volume de données, sans migrer les schémas de bases de données et de tables restants.

  • La migration est interrompue de force. Les schémas de bases de données et de tables sur l'instance de destination peuvent être incomplets et inutilisables.

  • Avant de relancer la migration, vous devez supprimer les données déjà migrées du cluster de destination pour éviter toute duplication.

Utilisez cette option lorsque la migration affecte négativement votre cluster auto-géré et que vous devez rétablir immédiatement les opérations d'écriture.

Stop Migration

Arrête immédiatement la migration des données, mais termine la migration des schémas de bases de données et de tables restants. La vérification du volume de données est ignorée.

La migration des données sera incomplète, mais les schémas de bases de données et de tables sur l'instance de destination seront complets.

Utilisez cette option pour tester un jeu de données partiellement migré sans interrompre les écritures sur le cluster auto-géré.

Arrêter la migration

  1. Connectez-vous à la console ApsaraDB for ClickHouse.

  2. Sur la page Clusters, sélectionnez Clusters of Community-compatible Edition, puis cliquez sur l'ID du cluster cible.

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

  4. Dans la colonne Actions de la tâche de migration cible, cliquez sur Stop Migration.

  5. Dans la boîte de dialogue Stop Migration, cliquez sur OK.

Annuler la migration

  1. Connectez-vous à la console ApsaraDB for ClickHouse.

  2. Sur la page Clusters, sélectionnez Clusters of Community-compatible Edition, puis cliquez sur l'ID du cluster cible.

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

  4. Dans la colonne Actions de la tâche de migration cible, cliquez sur Cancel Migration.

  5. Dans la boîte de dialogue Cancel Migration, cliquez sur OK.

Migration manuelle

Méthode 1 : Utiliser les commandes BACKUP et RESTORE

Pour plus d'informations, consultez Utiliser les commandes BACKUP et RESTORE pour sauvegarder et restaurer des données.

Méthode 2 : Utiliser l'instruction INSERT FROM SELECT

Étape 1 : Migrer les métadonnées

La migration des métadonnées ClickHouse consiste principalement à migrer le DDL de création des tables.

Si vous devez installer l'outil clickhouse-client, assurez-vous que sa version correspond à celle de l'instance ApsaraDB for ClickHouse de destination. Vous trouverez le lien de téléchargement sur clickhouse-client.

  1. Affichez la liste des bases de données du cluster auto-géré.

    clickhouse-client --host="<old host>" --port="<old port>" --user="<old user name>" --password="<old password>" --query="SHOW databases"  > database.list

    Paramètres :

    Paramètre

    Description

    old host

    Adresse du cluster auto-géré.

    old port

    Port du cluster auto-géré.

    old user name

    Compte utilisé pour se connecter au cluster auto-géré. Ce compte doit disposer des autorisations de lecture/écriture DML, des autorisations de paramètres et des autorisations DDL.

    old password

    Mot de passe du compte.

    Remarque

    La base de données system est une base de données système et ne nécessite pas de migration. Excluez-la.

  2. Affichez la liste des tables du cluster auto-géré.

    clickhouse-client --host="<old host>" --port="<old port>" --user="<old user name>" --password="<old password>" --query="SHOW tables from <database_name>"  > table.list

    Paramètres :

    Paramètre

    Description

    database_name

    Nom de la base de données.

    Vous pouvez également interroger directement tous les noms de bases de données et de tables à partir des tables système.

    SELECT DISTINCT database, name FROM system.tables WHERE database != 'system';
    Remarque

    Si un nom de table interrogé commence par .inner., il s'agit d'une représentation interne d'une vue matérialisée qui ne nécessite pas de migration. Excluez-le.

  3. Exportez le DDL de création de toutes les tables d'une base de données spécifique depuis le cluster auto-géré.

    clickhouse-client --host="<old host>" --port="<old port>" --user="<old user name>" --password="<old password>" --query="SELECT concat(create_table_query, ';') FROM system.tables WHERE database='<database_name>' FORMAT TabSeparatedRaw" > tables.sql
  4. Importez le DDL de création des tables dans l'instance ApsaraDB for ClickHouse de destination.

    Remarque

    Avant d'importer le DDL de création des tables, vous devez créer la base de données correspondante dans l'instance ApsaraDB for ClickHouse.

    clickhouse-client --host="<new host>" --port="<new port>" --user="<new user name>" --password="<new password>"  -d '<database_name>'  --multiquery < tables.sql

    Paramètres :

    Paramètre

    Description

    new host

    Adresse de l'instance ApsaraDB for ClickHouse de destination.

    new port

    Port de l'instance ApsaraDB for ClickHouse de destination.

    new user name

    Compte utilisé pour se connecter à l'instance ApsaraDB for ClickHouse de destination. Ce compte doit disposer des autorisations de lecture/écriture DML, des autorisations de paramètres et des autorisations DDL.

    new password

    Mot de passe du compte.

Étape 2 : Migrer les données

Fonction remote

  1. (Facultatif) Lors de la migration de données vers une instance ApsaraDB for ClickHouse, envisagez d'ajuster le paramètre network_compression_method pour réduire le trafic réseau.

    • Pour modifier temporairement le paramètre network_compression_method dans l'instance ApsaraDB for ClickHouse de destination, exécutez la commande suivante.

    • SET network_compression_method = 'ZSTD';
    • Pour consulter la valeur du paramètre network_compression_method dans l'instance ApsaraDB for ClickHouse de destination, exécutez la commande suivante.

    • SELECT * FROM system.settings WHERE name = 'network_compression_method';
  2. Sur l'instance ApsaraDB for ClickHouse de destination, exécutez l'instruction SQL suivante pour migrer les données.

    INSERT INTO <new_database>.<new_table> 
    SELECT * 
    FROM remote('<old_endpoint>', <old_database>.<old_table>, '<username>', '<password>') 
    [WHERE _partition_id = '<partition_id>']
    SETTINGS max_execution_time = 0, max_bytes_to_read = 0, log_query_threads = 0, max_result_rows = 0, min_insert_block_size_rows = 4294967296, min_insert_block_size_bytes = 1073741824;
    Remarque

    Pour la version 20.8, utilisez d'abord la fonction remoteRaw pour la migration des données. Si la migration échoue, vous pouvez demander une mise à niveau de la version mineure.

    INSERT INTO <new_database>.<new_table> 
    SELECT * 
    FROM remoteRaw('<old_endpoint>', <old_database>.<old_table>, '<username>', '<password>')
    [WHERE _partition_id = '<partition_id>']
    SETTINGS max_execution_time = 0, max_bytes_to_read = 0, log_query_threads = 0, max_result_rows = 0, min_insert_block_size_rows = 4294967296, min_insert_block_size_bytes = 1073741824;

    Paramètres :

    Important

    Utilisez le paramètre _partition_id pour filtrer les données. Cela réduit l'utilisation des ressources.

    (Facultatif) Pour obtenir le partition_id et le nombre de parties, interrogez la table system.parts en exécutant l'instruction SQL suivante.

    SELECT partition_id, count(*) AS part_count from clusterAllReplicas(default, system, parts) WHERE `database` = '<old_database>' AND `table` = '<old_table>' GROUP BY partition_id ;

    Paramètre

    Description

    new_database

    Nom de la base de données dans l'instance ApsaraDB for ClickHouse de destination.

    new_table

    Nom de la table dans l'instance ApsaraDB for ClickHouse de destination.

    old_endpoint

    Endpoint de l'instance source.

    ClickHouse auto-géré

    Format de l'endpoint : Adresse IP d'un nœud de l'instance source:port.

    Important

    Le port doit être le port TCP.

    ApsaraDB for ClickHouse

    Utilisez l'endpoint interne VPC de l'instance source, et non l'endpoint public.

    Important

    Les ports 3306 et 9000 sont des valeurs fixes.

    • Instance Community Edition :

      • Format de l'endpoint : Adresse interne VPC:3306.

      • Exemple : cc-2zeqhh5v7y6q*.clickhouse.ads.aliyuncs.com:3306

    • Instance Enterprise :

      • Format de l'endpoint : Adresse interne VPC:9000.

      • Exemple : cc-bp1anv7jo84ta*clickhouse.clickhouseserver.rds.aliyuncs.com:9000

    old_database

    Nom de la base de données du cluster auto-géré.

    old_table

    Nom de la table du cluster auto-géré.

    username

    Compte du cluster auto-géré.

    password

    Mot de passe du compte du cluster auto-géré.

    max_execution_time

    Temps d'exécution maximal d'une requête. Définissez la valeur à 0 pour aucune limite de temps.

    max_bytes_to_read

    Nombre maximal d'octets qu'une requête peut lire depuis les données source. Définissez la valeur à 0 pour aucune limite.

    log_query_threads

    Indique s'il faut journaliser les informations sur les threads lors de l'exécution des requêtes. Définissez la valeur à 0 pour désactiver la journalisation.

    max_result_rows

    Nombre maximal de lignes dans le résultat de la requête. Définissez la valeur à 0 pour aucune limite.

    min_insert_block_size_rows

    Nombre minimal de lignes par partie de données lors d'une seule écriture. Définissez la valeur à 4294967296 (maximum) pour désactiver la limite de lignes. Ce paramètre fonctionne conjointement avec min_insert_block_size_bytes pour éviter un excès de petites parties.

    min_insert_block_size_bytes

    Taille minimale en octets par partie de données lors d'une seule écriture. Définissez la valeur à 1073741824 (1 Go) pour éviter un excès de petites parties et prévenir l'erreur « Too many partitions for a single INSERT block ».

    _partition_id

    ID de la partition de données.

Exportation et importation de fichiers

Exportez les données de la base de données du cluster auto-géré vers un fichier, puis importez ce fichier dans l'instance ApsaraDB for ClickHouse de destination.

  • Exportation et importation CSV

    1. Exportez les données de la base de données du cluster auto-géré vers un fichier CSV.

      clickhouse-client --host="<old host>" --port="<old port>" --user="<old user name>" --password="<old password>"  --query="select * from <database_name>.<table_name> FORMAT CSV"  > table.csv
    2. Importez le fichier CSV dans l'instance ApsaraDB for ClickHouse de destination.

      clickhouse-client --host="<new host>" --port="<new port>" --user="<new user name>" --password="<new password>"  --query="insert into <database_name>.<table_name> FORMAT CSV"  < table.csv
  • Flux via un pipe Linux

    clickhouse-client --host="<old host>" --port="<old port>" --user="<user name>" --password="<password>"  --query="select * from <database_name>.<table_name> FORMAT CSV" | 
    clickhouse-client --host="<new host>" --port="<new port>" --user="<user name>" --password="<password>"   --query="INSERT INTO <database_name>.<table_name> FORMAT CSV"

Erreurs et solutions de vérification de la migration

Message d'erreur

Description

Solution

Missing unique distributed table or sharding_key not set.

Une local table du self-managed cluster ne possède pas de distributed table unique.

Créez une distributed table correspondante pour la local table dans le self-managed cluster.

The corresponding distributed table is not unique.

Une local table du self-managed cluster correspond à plusieurs distributed tables.

Supprimez les distributed tables excédentaires sur le self-managed cluster et n'en conservez qu'une seule.

MergeTree table on a multi-replica cluster.

Le self-managed cluster est un multi-replica cluster mais contient une non-replicated table. La migration n'est pas prise en charge car les données sont incohérentes entre les replicas.

Pourquoi les tables non répliquées ne sont-elles pas autorisées lors de la mise à l'échelle ou de la migration d'instances multi-réplicas ?

Data reserved table on destination cluster.

La table à migrer existe déjà et contient des données sur le destination cluster.

Supprimez la table correspondante du destination cluster.

Columns of distributed table and local table conflict

Les colonnes de la distributed table et de la local table dans le self-managed cluster sont incohérentes.

Reconstruisez la distributed table sur le self-managed cluster pour garantir que son schéma soit cohérent avec celui de la local table.

Insufficient storage space.

L'storage space du destination cluster est insuffisant.

Augmentez l'storage space disque du destination cluster. Assurez-vous que l'storage space total du destination cluster représente au moins 1,2 fois l'espace utilisé du self-managed cluster. Pour plus d'informations, consultez Mise à l'échelle verticale et horizontale des clusters compatibles communautaires.

Missing system table.

Une system table est manquante dans le self-managed cluster.

Modifiez le fichier de configuration config.xml du self-managed cluster pour créer les system tables requises. Pour plus d'informations, consultez Étape 1 : Vérifier le cluster auto-géré et activer les tables système.

The table is incomplete across different nodes.

La table est manquante sur certains nodes.

Créez des tables portant le même nom sur différents shards. Pour une table interne d'une materialized view, renommez la table interne, puis reconstruisez la materialized view pour qu'elle pointe vers la table renommée. Pour plus d'informations, consultez La table interne d'une vue matérialisée est incohérente entre les shards.

Calcul de la durée de fusion après la migration

Après la migration, le cluster de destination effectue temporairement des opérations de fusion fréquentes. Cela accroît l'utilisation des E/S et peut entraîner une latence plus élevée pour les requêtes de service. Si vos services sont sensibles à la latence de lecture et d'écriture, envisagez de mettre à niveau le type d'instance et le niveau de performance ESSD pour raccourcir cette période de forte utilisation des E/S. Pour plus d'informations, consultez Mise à l'échelle verticale, extension et réduction des clusters compatibles communautaires.

Utilisez les formules suivantes pour calculer la durée de fusion après la migration :

Remarque

Ces formules s'appliquent aussi bien aux clusters à réplica unique qu'aux clusters maître-réplica.

  • Durée totale estimée des opérations de fusion fréquentes = MAX(durée de fusion des données chaudes, durée de fusion des données froides)

    • Durée de fusion des données chaudes = volume de données chaudes sur un seul nœud * 2 / MIN(bande passante du type d'instance, bande passante du disque * n)

    • Durée de fusion des données froides = (volume de données froides / nombre de nœuds) / MIN(bande passante du type d'instance, bande passante de lecture OSS) + (volume de données froides / nombre de nœuds) / MIN(bande passante du type d'instance, bande passante d'écriture OSS)

La liste suivante décrit les paramètres utilisés dans les formules :

  • Volume de données chaudes sur un seul nœud : Vous pouvez consulter cette valeur dans la ligne Disk Usage - Single-Node Statistics. Pour plus d'informations, consultez Consulter les informations de surveillance du cluster.

  • Bande passante du type d'instance

    Remarque

    Ces valeurs de bande passante ne sont pas absolues et varient selon les types de machines utilisés par le backend ApsaraDB for ClickHouse. Les valeurs fournies sont des minimums et servent uniquement de référence.

    Spécification

    Bande passante (Mo/s)

    Standard 8 cœurs 32 Go

    250

    Standard 16 cœurs 64 Go

    375

    Standard 24 cœurs 96 Go

    500

    Standard 32 cœurs 128 Go

    625

    Standard 64 cœurs 256 Go

    1250

    Standard 80 cœurs 384 Go

    2000

    Standard 104 cœurs 384 Go

    2000

  • Bande passante du disque : Trouvez cette valeur dans la ligne Maximum throughput per disk (MB/s) du tableau Niveau de performance ESSD.

  • n : Nombre de disques sur un seul nœud. Exécutez la commande suivante pour obtenir cette valeur : SELECT count() FROM system.disks WHERE type = 'local';

  • Volume de données froides : Vous pouvez consulter cette valeur dans la ligne clickhouse_cold_storage_data. Pour plus d'informations, consultez Consulter les informations de surveillance du cluster.

  • Nombre de nœuds : Nombre de nœuds dans le cluster. Exécutez la commande suivante pour obtenir cette valeur : SELECT count() FROM system.clusters WHERE cluster = 'default' and replica_num=1;

  • Bande passante de lecture OSS : Trouvez cette valeur dans la colonne Total Intranet and Internet Download Bandwidth du tableau Bande passante OSS.

  • Bande passante d'écriture OSS : Trouvez cette valeur dans la colonne Total Intranet and Internet Upload Bandwidth du tableau Bande passante OSS.

FAQ

  • Q : Comment résoudre l'erreur « Too many partitions for single INSERT block (more than 100) » ?

    R : Cette erreur survient lorsqu'une seule opération INSERT dépasse la limite max_partitions_per_insert_block, fixée à 100 par défaut. Dans ClickHouse, chaque opération d'écriture crée une partie de données, et une partition peut contenir une ou plusieurs parties de données. Si une seule opération INSERT écrit des données dans trop de partitions, elle crée un nombre excessif de parties de données. Cela peut dégrader considérablement les performances de fusion et de requête. ClickHouse impose cette limite pour prévenir la dégradation des performances.

    Pour résoudre ce problème, vous pouvez ajuster le nombre de partitions ou modifier le paramètre max_partitions_per_insert_block.

    • Ajustez le schéma de la table et la méthode de partitionnement, ou évitez d'insérer des données dans trop de partitions différentes lors d'une seule opération.

    • Si vous devez insérer des données dans de nombreuses partitions à la fois, vous pouvez augmenter la limite en modifiant le paramètre max_partitions_per_insert_block. La syntaxe est la suivante :

      SET GLOBAL ON cluster DEFAULT max_partitions_per_insert_block = XXX;
      Remarque

      La communauté ClickHouse recommande d'utiliser la valeur par défaut de 100. Ne définissez pas cette valeur trop haut, car cela pourrait dégrader les performances. Après l'importation des données par lots, nous vous recommandons de rétablir la valeur par défaut.

  • Q : Pourquoi la connexion de mon instance ApsaraDB for ClickHouse de destination à ma base de données ClickHouse auto-gérée échoue-t-elle ?

    R : Ce problème survient si votre base de données ClickHouse auto-gérée se trouve derrière un pare-feu ou utilise une liste d'autorisation. Pour le résoudre, ajoutez le bloc CIDR IPv4 du vSwitch du cluster ApsaraDB for ClickHouse à la liste d'autorisation de votre base de données auto-gérée. Pour savoir comment obtenir le bloc CIDR IPv4 du vSwitch du cluster ApsaraDB for ClickHouse, consultez Afficher le bloc CIDR IPv4.

  • Q : Lors de la mise à l'échelle ou de la migration d'une instance multi-réplicas, pourquoi les tables non répliquées (non-Replicated) ne sont-elles pas autorisées ? Si elles existent, comment résoudre ce problème ?

    R : La raison de cette restriction et la solution sont les suivantes :

    • Raison : Une instance multi-réplicas nécessite des tables répliquées (Replicated) pour synchroniser les données entre les réplicas. Sans tables répliquées, la configuration multi-réplicas est inefficace. L'outil de migration sélectionne aléatoirement un réplica comme source de données et migre ses données vers l'instance de destination.

      Si des tables non répliquées existent, les données ne sont pas synchronisées entre les réplicas, ce qui signifie que chaque réplica détient des données isolées. Comme l'outil de migration ne migre les données que depuis un seul réplica, ce processus entraîne une perte de données. Par exemple, comme illustré dans la figure suivante, la table MergeTree sur le réplica 0 (r0) contient les données 1, 2 et 3. La table MergeTree sur le réplica 1 (r1) contient les données 4 et 5. Si l'outil de migration sélectionne r0 comme source, seules les données 1, 2 et 3 sont migrées vers l'instance de destination.

      image
    • Solution : Si vous pouvez supprimer les tables non répliquées dans l'instance source, nous vous recommandons de le faire. Sinon, vous devez remplacer les tables non répliquées par des tables répliquées. Procédez comme suit :

      1. Connectez-vous à l'instance source.

      2. Créez une table répliquée. Le schéma de la table doit être identique à celui de la table non répliquée que vous souhaitez remplacer, à l'exception du moteur.

      3. Migrez manuellement les données de la table non répliquée vers la nouvelle table répliquée. L'instruction de migration est la suivante :

        Important

        Vous devez effectuer cette migration pour chaque réplica. Par exemple, vous devez exécuter l'instruction sur r0 et r1.

        Vous pouvez obtenir l'adresse IP du nœud pour l'instruction en exécutant SELECT * FROM system.clusters;.

        INSERT INTO <destination_database>.<new_replicated_table> 
        SELECT * 
        FROM remote('<node_IP_address>:3003', '<source_database>', '<non_replicated_table_to_replace>', '<username>', '<password>')
        [WHERE _partition_id = '<partition_id>']
        SETTINGS max_execution_time = 0, max_bytes_to_read = 0, log_query_threads = 0, min_insert_block_size_rows = 4294967296, min_insert_block_size_bytes = 1073741824;
      4. Échangez les noms de la table non répliquée et de la table répliquée.

      EXCHANGE TABLES <source_database>.<non_replicated_table_to_replace> AND <destination_database>.<new_replicated_table> ON CLUSTER default;