Data Transmission Service (DTS) synchronise en temps réel un cluster PolarDB for MySQL avec un cluster ApsaraDB for ClickHouse, permettant ainsi une analyse centralisée sans perturber votre base de données source.
Types de synchronisation et facturation
|
Type de synchronisation |
Facturation |
|
Synchronisation du schéma |
Gratuit |
|
Synchronisation complète des données |
Gratuit |
|
Synchronisation incrémentielle des données |
Payant. Pour plus de détails, consultez la rubrique Présentation de la facturation. |
Prérequis
Avant de commencer, assurez-vous que :
Un cluster ApsaraDB for ClickHouse exécutant ClickHouse V20.8 ou une version ultérieure est prêt à servir de destination. Consultez la rubrique Créer un cluster ApsaraDB for ClickHouse.
Le cluster de destination dispose d'un espace de stockage disponible supérieur à la taille totale des données du cluster PolarDB for MySQL source.
La journalisation binaire est activée sur le cluster source et le paramètre
loose_polar_log_binest défini suron. Consultez les rubriques Activer la journalisation binaire et Modifier les paramètres.Les comptes de la base de données source disposent des autorisations requises (consultez la section Autorisations requises pour les comptes de base de données).
Les journaux binaires du cluster source doivent être conservés pendant au moins sept jours. Une période de rétention plus courte peut entraîner la perte de la position de DTS dans le journal binaire, provoquant l'échec de la tâche ou une perte de données. L'activation de la journalisation binaire engendre des frais de stockage sur PolarDB for MySQL.
Autorisations requises pour les comptes de base de données
Base de données | Autorisations requises | Références |
Cluster PolarDB for MySQL source | Autorisations de lecture sur tous les objets à synchroniser | Créer et gérer un compte de base de données et Gérer le mot de passe d'un compte de base de données |
Destination ApsaraDB for ClickHouse V22.8 ou version ultérieure | Autorisations de lecture et d'écriture sur la base de données de destination (un compte privilégié convient) | Gérer les comptes de base de données dans un cluster compatible avec la version Community |
Destination ApsaraDB for ClickHouse V21.8 | Read, Write and Set Permissions et Enable DDL | Identique à ci-dessus |
Limites
Limites de l'instance source
Le serveur source doit disposer d'une bande passante sortante suffisante. Une bande passante insuffisante ralentit la synchronisation.
Si vous synchronisez des tables et souhaitez renommer ou modifier des colonnes au niveau de la destination, une seule tâche prend en charge jusqu'à 1 000 tables. Au-delà de 1 000 tables, divisez la synchronisation en plusieurs tâches ou synchronisez la base de données entière.
N'exécutez pas d'opérations DDL sur la source pendant la synchronisation complète des données, sous peine d'échec de la tâche.
La synchronisation des données de type VECTOR n'est pas prise en charge.
Autres limites
DTS ne synchronise pas les nœuds en lecture seule ni les tables externes Object Storage Service (OSS) depuis le cluster source.
Les instructions DDL qui ne respectent pas la syntaxe MySQL standard peuvent provoquer l'échec de la tâche ou une perte de données.
L'opération RENAME TABLE n'est pas prise en charge.
Les valeurs DATETIME de la source doivent se situer dans les plages horaires prises en charge par ClickHouse (consultez la section Plage horaire).
Toutes les colonnes sélectionnées comme Partition Key doivent contenir des champs non vides.
Jusqu'à 256 bases de données peuvent être synchronisées vers un seul cluster ApsaraDB for ClickHouse.
Les noms des bases de données, des tables et des colonnes doivent respecter les conventions de nommage d'ApsaraDB for ClickHouse. Consultez la rubrique Limites relatives aux conventions de nommage des objets.
Pendant la synchronisation du schéma, DTS ajoute les champs
_sign,_is_deletedet_versionaux tables de destination. Si vous désactivez l'option Schema Synchronization, créez manuellement la table de destination en incluant ces champs.N'écrivez pas de données provenant d'autres sources dans la base de données de destination pendant la synchronisation. Les écritures simultanées entraînent une incohérence des données.
N'utilisez pas pt-online-schema-change pour exécuter des opérations DDL sur les tables synchronisées au niveau de la table. Utilisez plutôt l'outil Data Management (DMS) lock-free DDL.
Exécutez la synchronisation pendant les heures creuses lorsque cela est possible. La synchronisation complète des données utilise les ressources de lecture et d'écriture des deux clusters.
En cas d'échec d'une tâche, l'assistance DTS tentera de la restaurer dans un délai de 8 heures et pourra redémarrer la tâche ou modifier ses paramètres (mais pas les paramètres de la base de données).
Opérations SQL prenant en charge la synchronisation des données
DML
INSERT, UPDATE et DELETE
DDL
|
Opération DDL |
Prise en charge |
|
CREATE TABLE |
Oui |
|
TRUNCATE TABLE |
Oui |
|
ALTER TABLE |
Oui |
|
ADD COLUMN |
Oui |
|
MODIFY COLUMN |
Oui |
|
DROP TABLE |
Oui |
|
DROP COLUMN |
Oui |
|
RENAME TABLE |
Non |
Mappages des types de données
PolarDB for MySQL et ApsaraDB for ClickHouse prennent en charge différents types de données. Lors de la synchronisation initiale du schéma, DTS mappe les types source vers des types de destination compatibles. Consultez la rubrique Mappages des types de données pour la synchronisation initiale du schéma.
Créer une tâche de synchronisation
Étape 1 : Accéder à la page de synchronisation des données
Console DTS
Connectez-vous à la console DTS
Dans le volet de navigation de gauche, cliquez sur Data Synchronization.
Dans le coin supérieur gauche, sélectionnez la région où résidera l'instance de synchronisation.
Console DMS
Remarque
Le chemin de navigation exact varie selon le mode de la console DMS. Consultez les rubriques Mode simple et Personnaliser la disposition et le style de la console DMS.
Connectez-vous à la console DMS
Dans la barre de navigation supérieure, placez le pointeur sur Data + AI et choisissez DTS (DTS) > Data Synchronization.
Dans la liste déroulante située à côté de Data Synchronization Tasks, sélectionnez la région où résidera l'instance de synchronisation.
Étape 2 : Configurer les bases de données source et de destination
Cliquez sur Create Task, puis renseignez les paramètres suivants.
Section | Paramètre | Description |
S.O. | Task Name | Nom de la tâche DTS. DTS génère automatiquement un nom. Utilisez un nom descriptif pour identifier facilement la tâche. Le nom n'a pas besoin d'être unique. |
Source Database | Select Existing Connection | Sélectionnez une instance de base de données enregistrée dans la liste déroulante, ou configurez manuellement la connexion si l'instance n'est pas enregistrée. |
Database Type | Sélectionnez PolarDB for MySQL. | |
Access Method | Sélectionnez Alibaba Cloud Instance. | |
Instance Region | Région où réside le cluster PolarDB for MySQL source. | |
Replicate Data Across Alibaba Cloud Accounts | Sélectionnez No pour une synchronisation au sein du même compte. | |
PolarDB Cluster ID | ID du cluster PolarDB for MySQL source. | |
Database Account | Compte de base de données pour le cluster source. | |
Database Password | Mot de passe du compte. | |
Encryption | Indique s'il faut chiffrer la connexion à la base de données source. Consultez la rubrique Configurer le chiffrement SSL. | |
Destination Database | Select Existing Connection | Sélectionnez une instance enregistrée ou configurez manuellement la connexion. |
Database Type | Sélectionnez ClickHouse. | |
Access Method | Sélectionnez Alibaba Cloud Instance. | |
Instance Region | Région où réside le cluster ApsaraDB for ClickHouse de destination. | |
Replicate Data Across Alibaba Cloud Accounts | Sélectionnez No pour une synchronisation au sein du même compte. | |
Cluster Type | Type du cluster ApsaraDB for ClickHouse de destination. | |
Cluster ID | ID du cluster ApsaraDB for ClickHouse de destination. | |
Database Account | Compte de base de données pour le cluster de destination. | |
Database Password | Mot de passe du compte. |
Cliquez sur Test Connectivity and Proceed.
Assurez-vous que les blocs CIDR des serveurs DTS sont ajoutés aux règles du groupe de sécurité des bases de données source et de destination. Consultez la rubrique Ajouter les blocs CIDR des serveurs DTS .
Étape 3 : Configurer les objets à synchroniser
À l'étape Configure Objects, définissez les paramètres suivants.
Paramètre | Description |
Synchronization Types | Sélectionnez Schema Synchronization, Full Data Synchronization et Incremental Data Synchronization. La synchronisation complète des données charge les données historiques avant le début de la synchronisation incrémentielle. |
Processing Mode of Conflicting Tables | Precheck and Report Errors (par défaut) : échoue la prévérification si la destination contient des tables portant les mêmes noms que la source. Utilisez le mappage des noms d'objets pour éviter les conflits. Ignore Errors and Proceed : ignore la vérification des conflits. Lors de la synchronisation complète, les enregistrements existants dans la destination sont conservés ; lors de la synchronisation incrémentielle, ils sont écrasés. Si les schémas diffèrent, la tâche peut échouer. À utiliser avec prudence. |
Capitalization of Object Names in Destination Instance | Contrôle la gestion de la casse pour les noms de bases de données, de tables et de colonnes. Par défaut : DTS default policy. Consultez la rubrique Spécifier la casse des noms d'objets dans l'instance de destination. |
Source Objects | Sélectionnez les bases de données, tables ou colonnes à synchroniser et cliquez sur l'icône de flèche pour les ajouter à la section Selected Objects. |
Selected Objects | Cliquez avec le bouton droit sur un objet pour le renommer, ou cliquez sur Batch Edit pour renommer plusieurs objets à la fois. Cliquez avec le bouton droit sur une table pour ajouter des conditions de filtre SQL. Consultez les rubriques Mapper les noms d'objets et Définir des conditions de filtre . |
Si vous utilisez le mappage des noms d'objets, les objets qui dépendent des objets renommés peuvent ne pas être synchronisés correctement.
Cliquez sur Next: Advanced Settings et configurez les paramètres suivants.
|
Paramètre |
Description |
|
Dedicated Cluster for Task Scheduling |
Par défaut, DTS utilise le cluster partagé. Pour une stabilité accrue, achetez un cluster dédié. Consultez la rubrique Qu'est-ce qu'un cluster dédié DTS ?. |
|
Time zone of destination database |
Fuseau horaire appliqué aux données DateTime écrites dans le cluster ClickHouse de destination. |
|
Retry Time for Failed Connections |
Durée pendant laquelle DTS retente les connexions ayant échoué après le démarrage de la tâche. Valeurs valides : 10 à 1 440 minutes. Par défaut : 720 minutes. Définissez une valeur d'au moins 30 minutes. Si plusieurs tâches partagent la même source ou la même destination, la durée de nouvelle tentative la plus courte s'applique. La facturation DTS se poursuit pendant les nouvelles tentatives. |
|
Retry Time for Other Issues |
Durée pendant laquelle DTS retente les opérations DDL ou DML ayant échoué. Valeurs valides : 1 à 1 440 minutes. Par défaut : 10 minutes. Définissez une valeur d'au moins 10 minutes. Cette valeur doit être inférieure à Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Synchronization |
Limite la charge de lecture et d'écriture pendant la synchronisation complète. Configurez les paramètres Queries per second (QPS) to the source database, RPS of Full Data Migration et Data migration speed for full migration (MB/s). Disponible uniquement lorsque l'option Full Data Synchronization est sélectionnée. |
|
Enable Throttling for Incremental Data Synchronization |
Limite la charge pendant la synchronisation incrémentielle. Configurez les paramètres RPS of Incremental Data Synchronization et Data synchronization speed for incremental synchronization (MB/s). |
|
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks |
Yesparamètres de notification d'alerte : DTS n'écrit pas de SQL de pulsation dans la source, ce qui peut afficher une latence de tâche. No : DTS écrit du SQL de pulsation, ce qui peut affecter la sauvegarde physique et le clonage de la source. |
|
Environment Tag |
Tags facultatifs pour catégoriser l'instance de synchronisation. |
|
Configure ETL |
Indique s'il faut activer la fonctionnalité extract, transform, and load (ETL). Yes : saisissez les instructions de traitement des données dans l'éditeur de code. Consultez la rubrique Configurer ETL dans une tâche de migration ou de synchronisation de données. No : ignorer ETL. |
|
Monitoring and Alerting |
Yes : configurez les seuils d'alerte et les contacts de notification afin que DTS vous alerte en cas d'échec de la tâche ou si la latence de synchronisation dépasse le seuil. Consultez la rubrique Configurer la surveillance et les alertes. No : aucune alerte. |
Cliquez sur Next: Configure Database and Table Fields pour définir le Type, la Primary Key Column, la Sort Key, la Distribution Key et la Partition Key pour chaque table de destination ClickHouse.
DTS configure automatiquement ces champs par défaut. Pour les modifier, définissez Definition Status sur All .
Les paramètres Primary Key Column et Sort Key acceptent plusieurs colonnes. Distribution Key n'accepte qu'une seule colonne.
Le paramètre Partition Key est facultatif. S'il est configuré, toutes les colonnes sélectionnées doivent contenir des champs non vides.
Pour plus de détails sur les paramètres des tables ClickHouse, consultez la rubrique CREATE TABLE .
Étape 4 : Exécuter la prévérification
Cliquez sur Next: Save Task Settings and Precheck.
Pour prévisualiser les paramètres API de cette tâche, placez le pointeur sur Next: Save Task Settings and Precheck et cliquez sur Preview OpenAPI parameters .
DTS exécute une prévérification avant de démarrer la tâche. Si la prévérification échoue :
Cliquez sur View Details à côté de l'élément ayant échoué, corrigez le problème, puis cliquez sur Precheck Again.
Pour les éléments d'alerte pouvant être ignorés, cliquez sur Confirm Alert Details > Ignore > OK, puis cliquez sur Precheck Again. Ignorer les alertes peut entraîner une incohérence des données.
Étape 5 : Acheter une instance
Attendez que le Success Rate atteigne 100%, puis cliquez sur Next: Purchase Instance.
Sur la page buy, configurez les paramètres suivants.
|
Paramètre |
Description |
|
Billing Method |
Subscription : paiement anticipé, plus rentable pour une utilisation à long terme. Pay-as-you-go : facturation horaire, adapté à une utilisation à court terme. Libérez l'instance lorsqu'elle n'est plus nécessaire pour arrêter la facturation. |
|
Resource Group Settings |
Groupe de ressources pour l'instance de synchronisation. Par défaut : default resource group. Consultez la rubrique Qu'est-ce que Resource Management ? |
|
Instance Class |
La classe d'instance détermine la vitesse de synchronisation. Consultez la rubrique Classes d'instances pour les instances de synchronisation de données. |
|
Subscription Duration |
Disponible uniquement pour la méthode de facturation Subscription. Options : 1 à 9 mois, ou 1, 2, 3 ou 5 ans. |
Lisez et acceptez les Data Transmission Service (Pay-as-you-go) Service Terms.
Cliquez sur Buy and Start, puis sur OK dans la boîte de dialogue de confirmation.
La tâche apparaît dans la liste des tâches. Surveillez sa progression à cet endroit.
Interroger les données synchronisées
Une fois la synchronisation terminée, utilisez l'instruction suivante pour interroger les données dans le cluster ClickHouse de destination :
SELECT * FROM table_name FINAL WHERE _sign > 0;
Le mot-clé FINAL fusionne les lignes ayant la même clé de tri et renvoie la dernière version. Le filtre WHERE _sign > 0 exclut les lignes marquées pour suppression.
Annexe
Plage horaire
|
Type de données |
Valeur minimale |
Valeur maximale |
|
Date |
1970-01-01 00:00:00 |
2149-06-06 00:00:00 |
|
Date32 |
1925-01-01 00:00:00 |
2283-11-11 00:00:00 |
|
DateTime |
1970-01-01 08:00:00 |
2106-02-07 14:28:15 |
|
DateTime64 |
1925-01-01 08:00:00 |
2283-11-12 07:59:59 |
Tables
Si vous créez manuellement les tables de destination (sans synchronisation du schéma), celles-ci doivent répondre aux exigences suivantes.
Si la table de destination inclut le paramètre ENGINE, définissez-le sur ENGINE = ReplicatedReplacingMergeTree(_version, _is_deleted). Toute autre valeur entraîne une incohérence des données.
Community-compatible Edition : créez une table locale et une table distribuée. Le nom de la table distribuée doit correspondre au nom de la table source. Le nom de la table locale suit le format
<distributed_table_name>_local.Enterprise Edition : créez une table portant le même nom que la table source.
Champs
DTS ajoute les champs de métadonnées suivants aux tables de destination.
ApsaraDB for ClickHouse Community-compatible Edition exécutant la version V23.8 ou antérieure
|
Champ |
Type de données |
Valeur par défaut |
Description |
|
|
Int8 |
1 |
Type d'opération DML : INSERT ou UPDATE = |
|
|
UInt64 |
1 |
Horodatage d'écriture de la ligne dans le cluster ClickHouse. |
ApsaraDB for ClickHouse Enterprise Edition ou Community-compatible Edition exécutant la version V23.8 ou ultérieure
|
Champ |
Type de données |
Valeur par défaut |
Description |
|
|
Int8 |
1 |
Type d'opération DML : INSERT ou UPDATE = |
|
|
UInt8 |
0 |
Indique si la ligne est supprimée : INSERT ou UPDATE = |
|
|
UInt64 |
1 |
Horodatage d'écriture de la ligne dans le cluster ClickHouse. |