Mettez à niveau la version majeure du moteur d'un cluster en un clic depuis la console ApsaraDB for ClickHouse Community-compatible Edition.
Contexte
Nous vous recommandons de mettre à niveau vos clusters vers la dernière version dès que possible. ApsaraDB for ClickHouse Community-compatible Edition propose une fonctionnalité de mise à niveau en un clic dans la console. Le mécanisme de mise à niveau varie selon l'architecture du cluster :
Pour les clusters utilisant l'ancienne architecture, le système crée automatiquement un nouveau cluster exécutant la dernière version et migre les données du cluster source vers le nouveau cluster pour finaliser la mise à niveau.
Pour les clusters utilisant la nouvelle architecture, le système effectue une mise à niveau sur place en clonant l'instance et en mettant à jour la version de son moteur.
Sélectionnez la procédure de mise à niveau adaptée à l'architecture de votre cluster.
Prérequis : identifier l'architecture du cluster
Avant de procéder à la mise à niveau, identifiez l'architecture de votre cluster dans la console afin de choisir la méthode de validation et la procédure appropriées :
Sur la page Clusters, cliquez sur l'ID du cluster cible pour accéder à la page Cluster Information.
Dans la section Cluster Properties, cliquez sur Major Version Upgrade à côté de Version.
-
Dans la boîte de dialogue Major Version Upgrade, vérifiez le troisième élément de configuration relatif à la planification de la mise à niveau.
Version Upgrade Execution Time: indique un cluster utilisant la nouvelle architecture.
Time of Stopping Data Writing : indique un cluster utilisant l'ancienne architecture.
Pour mettre à niveau un cluster utilisant la nouvelle architecture, consultez la section Mettre à niveau un cluster utilisant la nouvelle architecture.
Pour mettre à niveau un cluster utilisant l'ancienne architecture, consultez la section Mettre à niveau un cluster utilisant l'ancienne architecture.
Mettre à niveau un cluster utilisant la nouvelle architecture
Prérequis
Le cluster doit être dans l'état Running.
Notes d'utilisation
-
Il est impossible d'annuler le processus de mise à niveau majeure du moteur en un clic une fois celui-ci démarré.
RemarqueUn retour à la version précédente n'est pas pris en charge après une mise à niveau majeure du moteur en un clic. Si vous souhaitez pouvoir revenir à la version antérieure après la mise à niveau, effectuez celle-ci en clonant le cluster. Pour plus d'informations, consultez la rubrique Mettre à niveau la version majeure du moteur par clonage.
Pour garantir le bon déroulement de la mise à niveau, nous vous recommandons d'interrompre les opérations d'écriture depuis votre application avant de démarrer le processus. Bien que le cluster arrête automatiquement les écritures pendant l'opération, l'absence d'interruption préalable au niveau de l'application risque de provoquer des délais importants ou d'empêcher la synchronisation de se terminer rapidement, ce qui ralentirait la mise à niveau.
-
Afin de minimiser l'impact sur votre activité, nous vous recommandons vivement d'effectuer les validations suivantes avant la mise à niveau :
Validation de la compatibilité et des performances : vérifiez les éventuelles différences en matière de fonctionnalités, de syntaxe et de performances pour les opérations d'écriture et de requête.
-
Validation de la durée de mise à niveau : l'instance redémarre plusieurs fois lors de la mise à niveau de version. Pour certaines instances, un seul redémarrage peut prendre beaucoup de temps en raison du grand nombre de bases de données, de tables ou de partitions (parts).
ImportantSi le cluster utilise le stockage hiérarchisé pour les données chaudes et froides et que vous effectuez une validation par clonage, la mise à niveau en un clic prendra plus de temps que la validation. En effet, l'opération de clonage n'inclut pas les données froides, contrairement à la mise à niveau réelle.
Pour savoir comment effectuer cette validation, consultez la section Valider la compatibilité des versions.
Impact sur le cluster
Le cluster redémarre plusieurs fois pendant la mise à niveau et n'est pas disponible pour les opérations de lecture et d'écriture lors de chaque redémarrage. Nous vous recommandons d'effectuer la mise à niveau pendant les heures creuses.
Valider la compatibilité des versions
Une mise à niveau majeure du moteur en un clic ne peut pas faire l'objet d'un retour arrière. Nous vous recommandons vivement de tester la mise à niveau au préalable pour confirmer que la nouvelle version est entièrement compatible avec la version source et que la durée de mise à niveau est acceptable :
Si le stockage hiérarchisé pour les données chaudes et froides est activé pour un cluster, l'opération de clonage inclut uniquement les données chaudes. Vous ne pourrez pas interroger les données froides dans le nouveau cluster.
Accédez à la page Cluster Information de l'instance cible. Dans le volet de navigation de gauche, cliquez sur Backup and Restoration. Une fois l'instance sauvegardée, cliquez sur Restore Instance.
Sélectionnez Clone from real-time replica et définissez la version cible du moteur sur la version vers laquelle vous souhaitez effectuer la mise à niveau.
Créez le cluster cloné.
-
Effectuez la validation de compatibilité.
Validez la compatibilité de vos requêtes métier avec la nouvelle version. Pour plus d'informations, consultez la rubrique Validation de la compatibilité SQL.
Effectuez des tests de régression pour vos fonctionnalités métier.
Procédure
Connectez-vous à la console ApsaraDB for ClickHouse avec votre compte Alibaba Cloud.
Dans le coin supérieur gauche de la page, sélectionnez la région où se trouve le cluster cible.
Dans le volet de navigation de gauche, cliquez sur Clusters of Community-compatible Edition.
Localisez le cluster cible et cliquez sur son ID pour accéder à la page Cluster Information.
Dans la section Cluster Properties, cliquez sur Major Version Upgrade à côté de Version.
-
Configurez les paramètres suivants comme indiqué, puis cliquez sur OK.
Paramètre
Description
Exemple
Upgrade cluster kernel version to
Version cible du cluster. Un retour à la version précédente n'est pas pris en charge après la mise à niveau.
Actuellement, seule la version 23.8 est prise en charge.
23.8 (version LTS)
Version upgrade execution time
Moment auquel effectuer la mise à niveau du cluster.
ImportantSi vous choisissez d'effectuer la mise à niveau à une heure précise ou durant une fenêtre de maintenance, l'état du cluster passe de Running à Upgrading. Avant l'heure spécifiée ou l'ouverture de la fenêtre de maintenance, le cluster peut traiter normalement les requêtes de lecture et d'écriture, mais vous ne pouvez pas effectuer d'opérations de maintenance telles que la modification de la configuration de l'instance, la mise à l'échelle ou la migration.
-
Specified Time : sélectionnez un moment futur pour effectuer la mise à niveau majeure de version.
-
Upgrade Within Maintenance Window : la mise à niveau est effectuée durant la fenêtre de maintenance configurée pour le cluster.
-
Update Now : démarre la mise à niveau immédiatement.
2024-05-29 14:46
Perform clone validation
Sélectionnez Clone Validation Performed ou Skip Clone Verification (Not Recommended).
Clone validation performed
-
Mettre à niveau un cluster utilisant l'ancienne architecture
Prérequis
Le cluster doit être dans l'état Running.
Notes d'utilisation
-
Une mise à niveau majeure du moteur en un clic concerne un seul cluster et il est impossible de revenir à la version précédente une fois la mise à niveau terminée.
RemarqueUn retour à la version précédente n'est pas pris en charge après une mise à niveau majeure du moteur en un clic. Si vous souhaitez pouvoir revenir à la version antérieure après la mise à niveau, effectuez celle-ci en migrant les données. Pour plus d'informations, consultez la rubrique Mettre à niveau la version majeure du moteur par migration de données.
-
Lors de la mise à niveau d'un cluster, tenez compte des points suivants concernant ses bases de données et ses tables :
Pour les tables utilisant un moteur de la famille MergeTree, les données historiques sont migrées vers le nouveau cluster et redistribuées automatiquement pendant la mise à niveau.
Pour les tables n'utilisant pas un moteur de la famille MergeTree, telles que les tables externes ou les tables Log, seuls les schémas de table sont migrés. Les données ne sont pas migrées.
Pour une vue matérialisée, seul le schéma est migré. Les données ne sont pas migrées.
Les tables utilisant les moteurs Kafka et RabbitMQ ne peuvent pas être migrées directement via la fonctionnalité de mise à niveau de la console. Vous devez enregistrer les instructions DDL de ces tables et les supprimer du cluster avant la mise à niveau afin d'éviter toute interférence avec la tâche de mise à niveau. Une fois la mise à niveau terminée, vous devez recréer ces tables. Consultez la procédure ci-dessous pour connaître les étapes détaillées.
Les adresses IP internes des nœuds changent après la mise à niveau. Si vos écritures de données et vos accès dépendent des adresses IP des nœuds, vous devez obtenir le nouveau plage d'adresses VPC du cluster.
-
Afin de minimiser l'impact sur votre activité, nous vous recommandons vivement d'effectuer les validations suivantes avant la mise à niveau :
Validation de la compatibilité et des performances : vérifiez les éventuelles différences en matière de fonctionnalités, de syntaxe et de performances pour les opérations d'écriture et de requête.
Validation de la durée de mise à niveau : l'instance redémarre plusieurs fois lors de la mise à niveau de version. Pour certaines instances, un seul redémarrage peut prendre beaucoup de temps en raison du grand nombre de bases de données, de tables ou de partitions (parts).
Pour savoir comment effectuer cette validation, consultez la section Valider la compatibilité des versions.
Impact sur le cluster
Un cluster Community Edition reste accessible en lecture et en écriture tout au long du processus de mise à niveau, sauf durant les 10 dernières minutes de la migration où le cluster passe en lecture seule. Pour vérifier le temps restant avant la fin de la migration, consultez la section Afficher la progression de la mise à niveau.
Valider la compatibilité des versions
Une mise à niveau majeure du moteur en un clic ne peut pas faire l'objet d'un retour arrière. Nous vous recommandons vivement de tester la mise à niveau au préalable pour confirmer que la nouvelle version est entièrement compatible avec la version source et que la durée de mise à niveau est acceptable :
Achetez un nouveau cluster pour effectuer la validation de la migration. Pour plus d'informations, consultez la rubrique Mettre à niveau la version majeure du moteur par migration de données.
Dans le nouveau cluster, effectuez la validation de la compatibilité SQL. Pour plus d'informations, consultez la rubrique Validation de la compatibilité SQL.
Effectuez des tests de régression pour vos fonctionnalités métier.
Étape 1 : enregistrer et nettoyer les tables utilisant les moteurs Kafka/RabbitMQ
Les tables utilisant les moteurs Kafka et RabbitMQ ne peuvent pas être migrées directement via la fonctionnalité de mise à niveau de la console. Enregistrez les instructions DDL de ces tables et supprimez-les avant la mise à niveau afin d'éviter toute interférence avec la tâche de mise à niveau.
-
Connectez-vous au cluster et exécutez l'instruction suivante pour rechercher les tables à traiter.
/* create_table_query: table definition statement dependencies_database: database that depends on this table dependencies_table: table name that depends on this table Use dependencies_database and dependencies_table to identify materialized views that depend on Kafka/RabbitMQ tables */ SELECT * FROM system.tables WHERE engine IN ('RabbitMQ', 'Kafka'); -
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, note the following: Deleting the materialized view will also delete the implicit table, resulting in data loss. Example: If CREATE MATERIALIZED VIEW [db.]table_name [TO[db.]name] does not specify the TO clause, the system automatically creates an implicit table in the format '.inner_id.<TABLE_UUID>' or '.inner.<TABLE>' */ SELECT * FROM system.tables WHERE database='<DATABASE>' AND name = '<MATERIALIZED_VIEW_NAME>'; -
Si une vue matérialisée a été créée sans la clause TO, le système génère automatiquement une table cible implicite préfixée par
.innerou.inner_id. Ces tables implicites sont migrées vers les nœuds du nouveau cluster lors de la mise à niveau, mais en raison des mécanismes de nommage internes, la recréation directe de la vue matérialisée d'origine peut provoquer des conflits de nommage. Par conséquent, vous devez d'abord renommer les tables cibles implicites avec des noms de table standards.-- Rename implicit target tables to regular table names (execute on all nodes) RENAME TABLE <database>.`.inner_id.<uuid>` TO <database>.<new_target_table_name> ON CLUSTER default; -
Supprimez les vues matérialisées et les tables utilisant les moteurs Kafka/RabbitMQ.
ImportantVous devez d'abord supprimer les vues matérialisées qui référencent les tables Kafka/RabbitMQ, puis supprimer les tables utilisant les moteurs Kafka/RabbitMQ. Sinon, l'opération de mise à niveau échouera.
-- Delete materialized views first DROP TABLE <database>.<materialized_view_name> ON CLUSTER default; -- Then delete Kafka/RabbitMQ engine tables DROP TABLE <database>.<kafka_or_rabbitmq_table_name> ON CLUSTER default;
Veillez à conserver toutes les instructions DDL enregistrées. Vous en aurez besoin pour reconstruire ces tables sur le cluster mis à niveau. Si vous avez effectué une opération RENAME, utilisez la clause TO pointant vers la table cible renommée lors de la reconstruction des vues matérialisées. Pour plus d'informations, consultez CREATE MATERIALIZED VIEW.
Étape 2 : mettre à niveau le cluster
Connectez-vous à la console ApsaraDB for ClickHouse avec votre compte Alibaba Cloud.
Dans le coin supérieur gauche de la page, sélectionnez la région où se trouve le cluster cible.
Dans le volet de navigation de gauche, cliquez sur Clusters of Community-compatible Edition.
Localisez le cluster cible et cliquez sur son ID pour accéder à la page Cluster Information.
Dans la section Cluster Properties, cliquez sur Major Version Upgrade à côté de Version.
-
Configurez les paramètres suivants comme indiqué, puis cliquez sur OK.
Paramètre
Description
Exemple
Upgrade cluster kernel version to
Version cible du cluster. Un retour à la version précédente n'est pas pris en charge après la mise à niveau.
Actuellement, seule la version 23.8 est prise en charge.
23.8 (version LTS)
Time of Stopping Data Writing
Pour garantir la cohérence des données avant et après la mise à niveau, le cluster arrête automatiquement les opérations d'écriture durant les 10 dernières minutes de la mise à niveau. Les règles suivantes s'appliquent à la définition de la période de suspension des écritures :
-
Pour assurer le succès de la mise à niveau, nous vous recommandons de définir la période de suspension des écritures à au moins 30 minutes.
-
La mise à niveau doit se terminer dans un délai de 5 jours. Par conséquent, la date de fin pour le paramètre Time of Stopping Data Writing doit être inférieure ou égale à
date actuelle + 5 jours. -
Pour minimiser l'impact de la suspension des écritures sur votre activité, nous vous recommandons de définir la période de suspension des écritures durant vos heures creuses.
2025-03-20 10:08-2025-03-25 10:08Perform instance migration validation
Sélectionnez Verification Performed ou Skip instance migration validation (Not Recommended).
Instance migration validation performed
-
-
Étapes suivantes
Si le cluster source contient des tables utilisant les moteurs Kafka ou RabbitMQ, effectuez les étapes 3 à 5 aux moments appropriés durant la mise à niveau. Pour plus de détails, consultez les sections ci-dessous.
Pour afficher la progression de la mise à niveau, consultez la section Afficher la progression de la mise à niveau.
Si la période de suspension des écritures spécifiée est écoulée mais que l'état du cluster est toujours Upgrading, vous devez modifier la période de suspension des écritures pour terminer la migration.
Si la mise à niveau affecte votre activité et que vous souhaitez l'arrêter rapidement, vous pouvez annuler la mise à niveau.
Étape 3 : reconstruire les tables utilisant les moteurs Kafka/RabbitMQ durant la migration des données
Lorsque la tâche de mise à niveau entre dans la phase Data Migration (après la migration des schémas de table), utilisez les instructions DDL précédemment enregistrées pour reconstruire les tables utilisant les moteurs Kafka/RabbitMQ et leurs vues matérialisées en aval. Une fois reconstruites, les données incrémentielles reprennent automatiquement leur flux vers les nœuds du nouveau cluster.
Si vous avez effectué une opération RENAME sur les tables cibles implicites à l'étape 1, 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 sur la clause TO, consultez CREATE MATERIALIZED VIEW.
-- Rebuild Kafka/RabbitMQ engine tables
CREATE TABLE <database>.<kafka_or_rabbitmq_table_name> (...)
ENGINE = Kafka/RabbitMQ
SETTINGS ...;
-- Rebuild materialized view (using TO clause 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 4 : supprimer les tables utilisant les moteurs Kafka/RabbitMQ avant la suspension des écritures
Peu avant la fenêtre de suspension des écritures configurée, supprimez les tables utilisant les moteurs Kafka/RabbitMQ et leurs vues matérialisées en aval afin d'arrêter les écritures de données incrémentielles et de garantir la cohérence lors de la synchronisation finale des données.
-- Delete materialized views first
DROP TABLE <database>.<materialized_view_name> ON CLUSTER default;
-- Then delete Kafka/RabbitMQ engine tables
DROP TABLE <database>.<kafka_or_rabbitmq_table_name> ON CLUSTER default;
Étape 5 : reconstruire les tables utilisant les moteurs Kafka/RabbitMQ après la mise à niveau
Une fois la mise à niveau terminée, utilisez les instructions DDL précédemment enregistrées pour reconstruire les tables utilisant les moteurs Kafka/RabbitMQ et leurs vues matérialisées en aval sur le cluster mis à niveau afin de restaurer le pipeline de consommation des données incrémentielles.
Si vous avez effectué une opération RENAME sur les tables cibles implicites à l'étape 1, 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 sur la clause TO, consultez CREATE MATERIALIZED VIEW.
-- Rebuild Kafka/RabbitMQ engine tables
CREATE TABLE <database>.<kafka_or_rabbitmq_table_name> (...)
ENGINE = Kafka/RabbitMQ
SETTINGS ...;
-- Rebuild materialized view (using TO clause 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>;
Afficher la progression de la mise à niveau
Connectez-vous à la console ApsaraDB for ClickHouse avec votre compte Alibaba Cloud.
Dans le coin supérieur gauche de la page, sélectionnez la région où se trouve le cluster cible.
Dans le volet de navigation de gauche, cliquez sur Clusters of Community-compatible Edition.
Localisez le cluster cible et cliquez sur son ID pour accéder à la page Cluster Information.
-
Dans la section Cluster Status, cliquez sur View Progress à côté de Status.
La boîte de dialogue Modify Data Write-Stop Time Window s'affiche, permettant de consulter la progression de la mise à niveau. Vous pouvez par exemple voir la progression de la migration des schémas MergeTree, la migration des données, le temps restant estimé pour la migration des données et la progression des autres migrations de schémas.
Modifier la période de suspension des écritures
Si la période de suspension des écritures est écoulée mais que l'état du cluster est toujours Upgrading, la migration des données n'est pas encore terminée. Ajustez la période de suspension des écritures pour garantir la réussite de la mise à niveau.
Connectez-vous à la console ApsaraDB for ClickHouse avec votre compte Alibaba Cloud.
Dans le coin supérieur gauche de la page, sélectionnez la région où se trouve le cluster cible.
Dans le volet de navigation de gauche, cliquez sur Clusters of Community-compatible Edition.
Localisez le cluster cible et cliquez sur son ID pour accéder à la page Cluster Information.
Dans la section Cluster Status, cliquez sur View Progress à côté de Status.
-
Dans la boîte de dialogue Modify Data Write-Stop Time Window qui s'affiche, modifiez le paramètre Time of Stopping Data Writing et cliquez sur Confirm.
RemarqueLes règles de définition du paramètre Time of Stopping Data Writing sont identiques à celles décrites pour le paramètre Time of Stopping Data Writing dans la section Mettre à niveau le cluster.
Annuler la mise à niveau
Vous pouvez annuler la mise à niveau si elle affecte votre activité et que vous devez l'arrêter rapidement.
Connectez-vous à la console ApsaraDB for ClickHouse avec votre compte Alibaba Cloud.
Dans le coin supérieur gauche de la page, sélectionnez la région où se trouve le cluster cible.
Dans le volet de navigation de gauche, cliquez sur Clusters of Community-compatible Edition.
Localisez le cluster cible et cliquez sur son ID pour accéder à la page Cluster Information.
Dans la section Cluster Status, cliquez sur View Progress à côté de Status.
-
Dans la boîte de dialogue Modify Data Write-Stop Time Window qui s'affiche, cliquez sur Cancel Upgrade.
RemarqueAprès avoir cliqué sur Cancel Upgrade, la tâche de mise à niveau ne s'arrête pas immédiatement. L'arrêt complet de la tâche intervient après environ 5 minutes.
FAQ
Q : Que faire si je reçois un message d'erreur indiquant une Unsupported Kafka table definition lors de la mise à niveau majeure du moteur ?
R : Dans la version cible, les tables Kafka ne prennent pas en charge l'utilisation du mot-clé DEFAULT pour définir les valeurs par défaut des champs. Cela empêche le démarrage du moteur. Pour résoudre ce problème, procédez comme suit :
Exécutez l'instruction
SELECT create_table_query FROM system.tables WHERE engine = 'Kafka'pour trouver toutes les tables Kafka.Sauvegardez les instructions Data Definition Language (DDL) des tables trouvées.
Supprimez les tables trouvées.
-
Recréez les tables.
ImportantLors de la recréation des tables, n'utilisez pas le mot-clé
DEFAULTpour définir les valeurs par défaut des champs.
Q : Que faire si je reçois un message d'erreur indiquant une Unsupported MaterializedMySQL table definition lors d'une mise à niveau majeure du moteur ?
R : Les paramètres de configuration du moteur MaterializedMySQL dans la version cible sont incompatibles avec ceux de la version source. Pour résoudre ce problème, procédez comme suit :
Exécutez l'instruction
SELECT name FROM system.databases WHERE engine = 'MaterializedMySQL'pour trouver les bases de données utilisant le moteur MaterializedMySQL.Sauvegardez les instructions DDL des bases de données trouvées.
Supprimez les bases de données trouvées.
Mettez à niveau la version du moteur.
Ajustez les instructions DDL sauvegardées pour les rendre compatibles avec la version cible, puis recréez les bases de données utilisant le moteur MaterializedMySQL.
Q : Que faire si je reçois un message d'erreur indiquant une Unsupported table definition for versions other than 20.3: Nullable(Array(*))/SecondaryIndex(KEY definition exists) lors d'une mise à niveau majeure du moteur ?
R : Si votre cluster exécute la version 20.3, il est possible qu'il utilise des fonctionnalités personnalisées développées par Alibaba Cloud. Par exemple :
Définition d'un champ de table avec le type Nullable(Array(*)).
Utilisation d'un index secondaire défini avec le mot-clé KEY.
Ces fonctionnalités n'ayant pas été intégrées au projet ClickHouse open source, elles ne figurent pas dans les versions d'instance postérieures à la 20.8. Nous vous recommandons de modifier les tables concernées avant la mise à niveau. Vous pouvez effectuer les opérations suivantes :
-
Validez la compatibilité entre la version source du cluster et la version cible.
ImportantEn raison de l'écart important entre la version 20.3 et les versions actuellement disponibles, nous vous recommandons d'effectuer une validation approfondie avant de mettre en œuvre la mise à niveau afin d'éviter toute perturbation de votre activité.
Supprimez le champ modifié avec
Nullable(Array(*))puis ajoutez-le à nouveau.-
Supprimez l'index secondaire défini avec le mot-clé KEY. Une fois la mise à niveau terminée, ajoutez à nouveau un index de saut (skipping index) à la table.
ImportantCes deux types d'index reposent sur des principes d'implémentation différents, ce qui peut entraîner des différences de performance.
Références
Migration et synchronisation des données
Mettre à niveau la version majeure du moteur par migration de données