Data Transmission Service (DTS) vous permet de synchroniser en continu les données d'un cluster PolarDB pour MySQL vers une base de données Doris auto-gérée, afin de réaliser des analyses à grande échelle. Cette rubrique détaille la configuration en utilisant une base de données Doris déployée sur une instance Elastic Compute Service (ECS).
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Une base de données Doris de destination disposant d'un espace de stockage disponible supérieur à l'espace utilisé par le cluster source PolarDB pour MySQL.
La journalisation binaire activée sur le cluster source PolarDB pour MySQL, avec le paramètre
loose_polar_log_bindéfini surON. Consultez les rubriques Activer la journalisation binaire et Modifier les paramètres.Une période de conservation des journaux binaires d'au moins trois jours (sept jours recommandés).
Des comptes de base de données disposant des autorisations requises (voir Autorisations requises).
L'activation de la journalisation binaire sur un cluster PolarDB pour MySQL entraîne des frais de stockage pour les fichiers de journaux binaires.
Pour connaître les versions prises en charge des bases de données source et de destination, consultez la rubrique Présentation des solutions de synchronisation des données.
Autorisations requises
| Base de données | Autorisations requises | Référence |
|---|---|---|
| Cluster source PolarDB pour MySQL | Autorisations de lecture et d'écriture sur les objets à synchroniser | Créer et gérer un compte de base de données |
| Base de données Doris de destination | USAGE_PRIV et les suivantes : SELECT_PRIV, LOAD_PRIV, ALTER_PRIV, CREATE_PRIV, DROP_PRIV | Authentication and authorization |
Facturation
| Type de synchronisation | Coût |
|---|---|
| Synchronisation du schéma et synchronisation complète des données | Gratuit |
| Synchronisation incrémentielle des données | Payant. Consultez la rubrique Présentation de la facturation |
Opérations SQL prises en charge pour la synchronisation incrémentielle
| Type d'opération | Instructions |
|---|---|
| DML (Langage de manipulation de données) | INSERT, UPDATE, DELETE |
| DDL (Langage de définition de données) | ADD COLUMN, MODIFY COLUMN, CHANGE COLUMN, DROP COLUMN, DROP TABLE, TRUNCATE TABLE, RENAME TABLE |
L'opération RENAME TABLE peut entraîner une incohérence des données. Si vous renommez une table sélectionnée comme objet de synchronisation, ses données cessent d'être synchronisées vers la destination. Pour éviter ce problème, sélectionnez la base de données entière comme objet de synchronisation plutôt que des tables individuelles, et assurez-vous que la table d'origine ainsi que la table renommée appartiennent aux bases de données incluses dans le périmètre de synchronisation.
Limitations
Base de données source
Tables avec clé PRIMARY KEY ou contrainte UNIQUE : tous les champs doivent être uniques, sinon la destination peut contenir des données en double.
Tables sans clé PRIMARY KEY ni contrainte UNIQUE : sélectionnez Schema Synchronization pour Synchronization Types et duplicate pour Engine à l'étape Configurations for Databases, Tables, and Columns.
Si vous sélectionnez des tables (et non des bases de données) comme objets de synchronisation et que vous devez renommer des tables ou des colonnes dans la destination, une tâche unique prend en charge jusqu'à 1 000 tables. Le dépassement de cette limite provoque une erreur de requête. Configurez plusieurs tâches ou synchronisez la base de données entière à la place.
-
Exigences relatives aux journaux binaires :
Le paramètre
loose_polar_log_bindoit être défini surONPériode de conservation : au moins trois jours, sept jours recommandés
N'exécutez pas d'opérations DDL modifiant les schémas de base de données ou de tables lors de la synchronisation initiale du schéma ou de la synchronisation complète initiale des données. DTS interroge la base de données source pendant la synchronisation complète, ce qui crée des verrous de métadonnées susceptibles de bloquer les opérations DDL.
Les modifications résultant d'opérations non enregistrées dans les journaux binaires, telles que la restauration de données à partir de sauvegardes physiques ou générées par des opérations en cascade, ne sont pas synchronisées vers la destination. Si cela se produit, vous pouvez supprimer et rajouter la base de données ou la table concernée des objets de synchronisation si votre activité le permet. Consultez la rubrique Modifier les objets de synchronisation.
Limitations générales
DTS ne synchronise pas les nœuds en lecture seule du cluster source PolarDB pour MySQL.
DTS ne synchronise pas les tables externes Object Storage Service (OSS) depuis la source.
Le basculement principal/de secours n'est pas pris en charge lors de la synchronisation complète initiale des données. En cas de basculement, reconfigurez la tâche de synchronisation.
-
Seules les tables utilisant le Unique Key Model ou le Duplicate Key Model dans Doris sont prises en charge. Lors de l'utilisation du Duplicate Key Model, DTS convertit les instructions UPDATE et DELETE en instructions INSERT. Des données en double peuvent apparaître si l'un des événements suivants se produit : Utilisez les colonnes supplémentaires
_is_deleted,_versionet_record_idpour dédupliquer si nécessaire (voir Colonnes supplémentaires ajoutées par DTS).Une opération de nouvelle tentative s'exécute sur l'instance de synchronisation des données
L'instance est redémarrée
Deux opérations DML ou plus sont appliquées à la même ligne après le démarrage de l'instance
Seul le paramètre
bucket_countpeut être spécifié dans la section Selected Objects. La valeur doit être un entier positif. Par défaut : auto.Ne créez pas de clusters dans la base de données Doris de destination pendant la synchronisation. Si cela se produit, la tâche échoue. Redémarrez l'instance de synchronisation des données pour reprendre.
Doris ne prend en charge que les noms de bases de données et de tables commençant par une lettre. Utilisez la fonctionnalité de mappage de nom d'objet pour renommer tout objet dont le nom commence par un caractère autre qu'une lettre.
Si un nom de base de données, de table ou de colonne contient des caractères chinois, utilisez le mappage de nom d'objet pour le renommer (par exemple, en un nom anglais). Sinon, la tâche peut échouer.
Vous ne pouvez pas modifier les opérations DDL sur plusieurs colonnes à la fois, ni modifier consécutivement les opérations DDL sur une table.
N'ajoutez pas de nœuds backend (BE) à la base de données Doris de destination pendant la synchronisation. Si cela se produit, la tâche échoue. Redémarrez l'instance de synchronisation des données pour reprendre.
Dans les scénarios de fusion multi-tables (plusieurs tables sources synchronisées vers une table de destination unique), les schémas de toutes les tables sources doivent être identiques. Sinon, une incohérence des données ou un échec de la tâche peut survenir.
Dans PolarDB pour MySQL,
VARCHAR(M)utilise la longueur en caractères pour M. Dans Doris,VARCHAR(N)utilise la longueur en octets pour N. Si vous n'utilisez pas la synchronisation du schéma, définissez la longueur VARCHAR de Doris à quatre fois la longueur VARCHAR MySQL correspondante pour éviter toute perte de données.Lors de l'utilisation de DMS ou gh-ost pour effectuer des modifications DDL en ligne sur la source, DTS synchronise uniquement le DDL d'origine vers la destination. Les modifications DDL en ligne effectuées avec pt-online-schema-change ne sont pas prises en charge et peuvent entraîner une perte de données ou un échec de la synchronisation.
Lors de la synchronisation complète initiale des données, DTS utilise les ressources de lecture et d'écriture des deux bases de données. Évaluez l'impact sur les performances au préalable et planifiez la synchronisation pendant les heures creuses, lorsque l'utilisation du CPU aux deux extrémités est inférieure à 30 %.
Les opérations INSERT concurrentes lors de la synchronisation complète initiale des données provoquent une fragmentation des tables dans la destination. Une fois la synchronisation complète terminée, les tables de destination peuvent occuper plus d'espace de stockage que la source.
N'utilisez pas pt-online-schema-change ou des outils similaires pour des opérations DDL en ligne sur les objets de synchronisation pendant la synchronisation. Cela entraîne un échec de la synchronisation.
Si des données sont écrites dans la base de données de destination à partir de sources autres que DTS pendant la synchronisation, une incohérence des données peut survenir entre la source et la destination.
DTS exécute périodiquement
CREATE DATABASE IF NOT EXISTS \test\`` sur la source pour faire avancer la position du journal binaire.Lors de la synchronisation incrémentielle, DTS utilise une stratégie par lots et écrit dans chaque objet de synchronisation au maximum une fois toutes les cinq secondes. Cela peut introduire une latence de synchronisation normale inférieure à 10 secondes. Pour réduire la latence, ajustez le paramètre
selectdb.reservoir.timeout.milliseconds(plage : 1 000–10 000 millisecondes) dans la console DTS. Des intervalles de lot plus courts augmentent la fréquence d'écriture, ce qui peut accroître la charge et le temps de réponse de la destination.En cas de panne d'une instance, l'assistance DTS tente une récupération dans un délai de huit heures. Pendant la récupération, l'instance peut être redémarrée ou ses paramètres ajustés. Seuls les paramètres de l'instance DTS sont modifiés ; les paramètres de la base de données restent inchangés.
Créer une tâche de synchronisation des données
Étape 1 : Accéder à la page de synchronisation des données
Utilisez l'une des méthodes suivantes :
Console DTS
Connectez-vous à la console DTS.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éside la tâche de synchronisation des données.
Console DMS
Les étapes peuvent varier selon le mode et la disposition 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.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 à côté de Data Synchronization Tasks, sélectionnez la région où réside l'instance.
Étape 2 : Configurer les bases de données source et de destination
Cliquez sur Create Task.
Configurez le Task Name. DTS génère automatiquement un nom. Spécifiez un nom descriptif pour faciliter l'identification de la tâche ; un nom unique n'est pas requis.
Configurez les connexions aux bases de données source et de destination à l'aide des paramètres ci-dessous.
Base de données source (PolarDB pour MySQL)
| Paramètre | Valeur |
|---|---|
| Select Existing Connection | Sélectionnez une instance enregistrée dans la liste pour remplir automatiquement les champs suivants, ou configurez-les manuellement |
| Database Type | PolarDB pour MySQL |
| Access Method | Instance Alibaba Cloud |
| Instance Region | La région où réside le cluster source PolarDB pour MySQL |
| Replicate Data Across Alibaba Cloud Accounts | Non (cet exemple utilise le compte actuel) |
| PolarDB Cluster ID | L'ID du cluster source PolarDB pour MySQL |
| Database Account | Le compte du cluster source (voir Autorisations requises) |
| Database Password | Le mot de passe du compte de base de données |
| Encryption | Sélectionnez selon vos besoins. Pour la configuration SSL, consultez Configurer le chiffrement SSL |
Base de données de destination (Doris)
| Paramètre | Valeur |
|---|---|
| Select Existing Connection | Sélectionnez une instance enregistrée dans la liste pour remplir automatiquement les champs suivants, ou configurez-les manuellement |
| Database Type | Doris |
| Access Method | Base de données auto-gérée sur ECS (cet exemple). Pour d'autres méthodes d'accès, consultez Préparatifs |
| Instance Region | La région où réside la base de données Doris de destination |
| ECS Instance ID | L'ID de l'instance ECS exécutant la base de données Doris. Si les nœuds BE ou frontend (FE) se trouvent sur des instances ECS distinctes, ajoutez les blocs CIDR des serveurs DTS aux règles de sécurité de chaque instance |
| Port Number | Le port de service de la base de données Doris de destination. Par défaut : 9030 |
| Database Account | Le compte de la base de données de destination (voir Autorisations requises) |
| Database Password | Le mot de passe du compte de base de données |
Cliquez sur Test Connectivity and Proceed. Dans la boîte de dialogue CIDR Blocks of DTS Servers, cliquez sur Test Connectivity.
Assurez-vous que les blocs CIDR des serveurs DTS sont ajoutés aux paramètres de sécurité des bases de données source et de destination. Consultez la rubrique Ajouter des adresses IP de serveur DTS à une liste d'autorisation .
Étape 3 : Sélectionner les objets de synchronisation
À l'étape Configure Objects, configurez les éléments suivants :
| Paramètre | Description |
|---|---|
| Synchronization Types | Sélectionnez Schema Synchronization, Full Data Synchronization et Incremental Data Synchronization. La synchronisation complète établit les données de référence avant le début de la synchronisation incrémentielle. Si vous ignorez la synchronisation du schéma, créez préalablement les tables de destination en utilisant le Unique Key Model ou le Duplicate Key Model. Consultez les rubriques [Mappages des types de données](#9e5997856cmoz), [Colonnes supplémentaires ajoutées par DTS](#26c73cc01c9nj) et Unique Key Model |
| Processing Mode of Conflicting Tables | Precheck and Report Errors : signale une erreur si une table portant le même nom existe dans la destination. Ignore Errors and Proceed : ignore la vérification. Si les schémas de table diffèrent, l'initialisation des données peut échouer ou seules certaines colonnes peuvent être synchronisées. Si les schémas sont identiques, les données sources écrasent les enregistrements de destination ayant des clés primaires ou uniques correspondantes |
| Capitalization of Object Names in Destination Instance | Par défaut sur DTS default policy. Ajustez selon vos besoins. Consultez la rubrique [Spécifier la casse des noms d'objets](https://www.alibabacloud.com/help/en/dts/user-guide/specify-the-capitalization-of-object-names-in-the-destination-instance-2#concept-2045083) |
| Source Objects | Sélectionnez les bases de données ou les tables à synchroniser, puis cliquez sur l'icône de flèche vers la droite pour les ajouter à Selected Objects |
| Selected Objects | Cliquez avec le bouton droit sur un objet pour le renommer, filtrer les données avec des conditions WHERE ou sélectionner des opérations SQL spécifiques. Si la synchronisation du schéma est activée, cliquez avec le bouton droit sur une table et configurez bucket_count dans Parameter Settings |
Cliquez sur Next: Advanced Settings et configurez les éléments 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 ? |
| Retry Time for Failed Connections | Durée pendant laquelle DTS effectue des nouvelles tentatives après un échec de connexion. Plage : 10–1 440 minutes. Par défaut : 720. Définissez une valeur d'au moins 30. Si la reconnexion réussit dans ce délai, la synchronisation reprend ; sinon, la tâche échoue. La valeur la plus courte s'applique aux tâches partageant la même source ou destination |
| Retry Time for Other Issues | Durée pendant laquelle DTS effectue des nouvelles tentatives après des échecs DDL ou DML. Plage : 1–1 440 minutes. Par défaut : 10. Définissez une valeur d'au moins 10. Doit être inférieure à Retry Time for Failed Connections |
| Enable Throttling for Full Data Synchronization | Limitez la synchronisation complète en définissant les QPS (requêtes par seconde) vers la source, les RPS (lignes par seconde) de la migration complète et la vitesse de migration des données. Disponible uniquement lorsque Full Data Synchronization est sélectionné |
| Enable Throttling for Incremental Data Synchronization | Limitez la synchronisation incrémentielle en définissant les RPS et la vitesse de synchronisation des données |
| Whether to delete SQL operations on heartbeat tables of forward and reverse tasks | Yesparamètres de notification d'alerte : n'écrit pas le SQL de heartbeat vers la source (la latence peut être affichée). No : écrit le SQL de heartbeat (peut affecter la sauvegarde physique et le clonage de la source) |
| Environment Tag | Facultatif. Marquez l'instance pour l'identification de l'environnement |
| Configure ETL | Activez l'extraction, la transformation et le chargement (ETL) pour appliquer des transformations de données. Consultez les rubriques Qu'est-ce que l'ETL ? et Configurer l'ETL |
| Monitoring and Alerting | Configurez des alertes en cas d'échec de tâche ou de latence dépassant un seuil. Consultez la rubrique Configurer la surveillance et les alertes |
(Facultatif) Cliquez sur Next: Configure Database and Table Fields. Spécifiez Primary Key Column, Distribution Key et Engine pour chaque table.
Cette étape est disponible uniquement lorsque Schema Synchronization est sélectionné. Définissez Definition Status sur All pour afficher toutes les tables.
Primary Key Column prend en charge plusieurs colonnes. Distribution Key doit être un sous-ensemble des colonnes de clé primaire.
Pour les tables sans clés primaires ni contraintes UNIQUE, sélectionnez duplicate pour Engine . Sinon, la tâche peut échouer ou des pertes de données peuvent survenir.
Étape 4 : Exécuter la prévérification
Cliquez sur Next: Save Task Settings and Precheck.
DTS effectue une prévérification avant de démarrer la tâche. La tâche ne démarre qu'après avoir réussi toutes les vérifications.
Si une vérification échoue, cliquez sur View Details pour voir la cause, corriger le problème et relancer la prévérification.
Si un avertissement apparaît : corrigez et relancez si l'élément ne peut pas être ignoré ; cliquez sur Confirm Alert Details > Ignore > OK > Precheck Again si l'élément peut être ignoré en toute sécurité. Ignorer les alertes peut entraîner une incohérence des données.
Pour prévisualiser les paramètres OpenAPI pour cette configuration de tâche, placez le pointeur sur Next: Save Task Settings and Precheck et cliquez sur Preview OpenAPI parameters.
Étape 5 : Acheter une instance
Attendez que le Success Rate atteigne 100%, puis cliquez sur Next: Purchase Instance.
Sur la page d'achat, configurez les éléments suivants :
| Paramètre | Description |
|---|---|
| Billing Method | Subscription : payez à l'avance pour une durée fixe, plus rentable pour une utilisation à long terme. Pay-as-you-go : facturation horaire, adaptée à une utilisation à court terme. Libérez l'instance lorsqu'elle n'est plus nécessaire pour arrêter la facturation |
| Resource Group Settings | Le groupe de ressources pour l'instance. Par défaut : default resource group. Consultez la rubrique Qu'est-ce que Resource Management ? |
| Instance Class | Sélectionnez en fonction de vos exigences de débit. Consultez la rubrique Classes d'instances des instances de synchronisation des données |
| Subscription Duration | Disponible pour la facturation par abonnement. Options : 1–9 mois, 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.
La tâche apparaît dans la liste des tâches. Surveillez sa progression à partir de là.
Mappages des types de données
Le tableau suivant montre comment les types de données PolarDB pour MySQL sont mappés aux types de données Doris.
| Catégorie | PolarDB pour MySQL | Doris |
|---|---|---|
| Numérique | TINYINT | TINYINT |
| TINYINT UNSIGNED | SMALLINT | |
| SMALLINT | SMALLINT | |
| SMALLINT UNSIGNED | INT | |
| MEDIUMINT | INT | |
| MEDIUMINT UNSIGNED | BIGINT | |
| INT | INT | |
| INT UNSIGNED | BIGINT | |
| BIGINT | BIGINT | |
| BIGINT UNSIGNED | LARGEINT | |
| BIT(M) | INT | |
| Décimal | Decimal | Decimal (ZEROFILL non pris en charge) |
| Numeric | Decimal | |
| Float | Float | |
| Double | DOUBLE | |
| BOOL / BOOLEAN | BOOLEAN | |
| Date et heure | DATE | DATEV2 |
| DATETIME[(fsp)] | DATETIMEV2 | |
| Timestamp[(fsp)] | DATETIMEV2 | |
| Time[(fsp)] | VARCHAR | |
| YEAR[(4)] | INT | |
| Chaîne | CHAR / VARCHAR | VARCHAR |
| BINARY / VARBINARY | STRING | |
| TINYTEXT / TEXT / MEDIUMTEXT / LONGTEXT | STRING | |
| TINYBLOB / BLOB / MEDIUMBLOB / LONGBLOB | STRING | |
| ENUM | STRING | |
| SET | STRING | |
| JSON | STRING |
Remarques sur la conversion CHAR et VARCHAR :
Les valeurs CHAR et VARCHAR(n) sont converties en
VARCHAR(4*n)pour éviter toute perte de données. Cela tient compte de la différence dans la façon dont PolarDB pour MySQL (longueur en caractères) et Doris (longueur en octets) définissent la taille VARCHAR.Si aucune longueur n'est spécifiée, la valeur par défaut est
VARCHAR(65533).Les valeurs dépassant 65 533 caractères sont converties au type STRING.
Si vous n'utilisez pas la synchronisation du schéma, définissez la longueur VARCHAR de Doris à quatre fois la longueur VARCHAR MySQL correspondante.
Colonnes supplémentaires ajoutées par DTS
Lors de la synchronisation vers une table utilisant le Duplicate Key Model, DTS ajoute automatiquement les colonnes suivantes à la table de destination :
| Colonne | Type de données | Par défaut | Description |
|---|---|---|---|
_is_deleted |
Int | 0 | Indicateur de suppression : 0 pour les opérations INSERT et UPDATE, 1 pour les opérations DELETE |
_version |
Bigint | 0 | 0 lors de la synchronisation complète ; l'horodatage du journal binaire correspondant (en secondes) lors de la synchronisation incrémentielle |
_record_id |
Bigint | 0 | 0 lors de la synchronisation complète ; l'ID d'enregistrement unique et incrémentiel du journal incrémentiel lors de la synchronisation incrémentielle |
Utilisez ces colonnes pour dédupliquer les données lorsque la table de destination utilise le Duplicate Key Model.