Data Transmission Service (DTS) vous permet de synchroniser des données d'une base de données MySQL vers le moteur LindormTable d'une instance Lindorm. Cette rubrique utilise une instance ApsaraDB RDS for MySQL comme source.
Prérequis
Avant de commencer, assurez-vous d'avoir :
Une instance Lindorm de destination avec le moteur LindormTable activé et une capacité de stockage supérieure à l'espace utilisé par l'instance RDS for MySQL source. Consultez la rubrique Créer une instance.
L'endpoint compatible MySQL activé pour l'instance Lindorm de destination. Consultez la rubrique Activer la fonctionnalité compatible MySQL.
Une base de données (namespace) précréée dans l'instance Lindorm de destination. Si vous ne sélectionnez pas Schema Synchronization, vous devez également précréer une table large (un pré-découpage basé sur l'ensemble complet des données avant le début de la synchronisation est recommandé pour de meilleures performances). Consultez les rubriques Se connecter à LindormTable et l'utiliser via la ligne de commande MySQL, Se connecter à LindormTable et l'utiliser via Lindorm-cli, Accéder à LindormTable via Lindorm Shell, CREATE TABLE et Mappage des types de données.
Tous les objets de l'instance Lindorm de destination doivent être conformes aux Conventions de nommage et limites de Lindorm.
Facturation
|
Type de synchronisation |
Frais |
|
Synchronisation complète des données |
Gratuit |
|
Synchronisation incrémentielle des données |
Facturé. Consultez la rubrique Présentation de la facturation. |
Opérations SQL prises en charge par la synchronisation incrémentielle
|
Type |
Instructions SQL |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
CREATE TABLE, DROP TABLE, ADD COLUMN |
Lorsque les instructions ADD COLUMN incluent des attributs supplémentaires, seule la définition de la colonne est synchronisée ; les attributs tels que les valeurs par défaut sont ignorés. Par exemple, l'instruction ALTER TABLE test ADD COLUMN col INT DEFAULT 0; sur la source entraîne l'exécution de ALTER TABLE test ADD COLUMN col INT; sur la destination, en raison des limites de LindormTable.
Autorisations requises pour les comptes de base de données
|
Base de données |
Autorisations requises |
Procédure d'attribution |
|
RDS MySQL source |
Autorisations de lecture et d'écriture sur les objets à synchroniser |
|
|
Lindorm de destination |
Autorisations de lecture et d'écriture sur le namespace de destination |
Si le compte de la base de données source n'a pas été créé et les autorisations attribuées via la console RDS for MySQL, assurez-vous que le compte dispose des autorisations REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW et SELECT.
Limites
Limites de la base de données source
Les tables à synchroniser doivent disposer de clés primaires contenant des champs uniques. En l'absence de clés primaires, des données en double peuvent apparaître dans la destination.
Les types à virgule flottante tels que FLOAT et DOUBLE ne sont pas pris en charge en tant que clés primaires ou clés primaires composites.
Lors d'une synchronisation au niveau de la table avec mappage de noms, une seule tâche prend en charge un maximum de 1 000 tables. Le dépassement de cette limite entraîne une erreur après la soumission de la tâche. Répartissez les tables sur plusieurs tâches ou configurez la tâche pour synchroniser la base de données entière.
N'exécutez pas d'opérations DDL sur la base de données source pendant la phase de synchronisation complète des données, car cela entraînerait l'échec de la tâche. Les requêtes DTS ajoutent un verrou de métadonnées qui peut également bloquer les opérations DDL sur la source durant cette phase.
Les modifications de données résultant d'opérations non enregistrées dans les journaux binaires, telles que la restauration de sauvegarde physique et les opérations en cascade, ne sont pas synchronisées vers la destination. Si cela se produit et que votre activité le permet, retirez la base de données ou la table concernée des objets de synchronisation, puis ajoutez-la à nouveau. Consultez Modifier les objets à synchroniser.
-
Pour MySQL 8.0.23 et versions ultérieures, les colonnes invisibles provoquent une perte de données car DTS ne peut pas les lire. Rendez les colonnes invisibles visibles avant de démarrer la synchronisation :
Exécutez
ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;pour chaque colonne invisible. Consultez Colonnes invisibles.Les tables sans clé primaire génèrent automatiquement une clé primaire invisible ; rendez-la également visible. Consultez Clés primaires invisibles générées.
Exigences relatives aux journaux binaires
Source ApsaraDB RDS for MySQL
La journalisation binaire est activée par défaut pour les instances RDS MySQL. Vérifiez que le paramètre suivant est correctement défini :
|
Paramètre |
Valeur requise |
Remarque |
|
|
|
Si ce paramètre n'est pas correctement défini, la prévalidation signale une erreur et la tâche ne peut pas démarrer. Consultez Définir les paramètres de l'instance. |
Conservez les journaux binaires locaux pendant au moins 3 jours (7 jours recommandés). Une rétention plus courte peut entraîner l'échec des tâches et, dans les cas extrêmes, une perte de données ou une incohérence. Les problèmes causés par une rétention insuffisante ne sont pas couverts par l'accord de niveau de service (SLA) du service DTS. Consultez Supprimer automatiquement les journaux locaux.
Source MySQL autogérée
Activez la journalisation binaire et définissez les paramètres suivants :
|
Paramètre |
Valeur requise |
Remarque |
|
|
|
Requis pour que DTS capture les modifications au niveau des lignes. |
|
|
|
Requis pour capturer l'image complète de la ligne pour chaque modification. |
|
|
Activé |
Requis uniquement pour l'architecture primaire/primaire, afin de garantir que DTS puisse obtenir tous les journaux binaires. Consultez Créer un compte de base de données pour une base de données MySQL autogérée et configurer la journalisation binaire. |
Conservez les journaux binaires locaux pendant au moins 7 jours. Une rétention plus courte peut entraîner l'échec des tâches et, dans les cas extrêmes, une perte de données ou une incohérence. Les problèmes causés par une rétention insuffisante ne sont pas couverts par le SLA du service DTS.
Autres limites
|
Limite |
Détails |
|
Synchronisation du schéma |
La synchronisation du schéma vers Lindorm s'appuie sur les capacités natives de Lindorm pour la création de schémas. |
|
Limite d'index sur les colonnes non clés primaires |
Lindorm impose une limite par défaut sur le nombre de colonnes pour les index sur les colonnes non clés primaires. DTS ne peut pas créer ces index lors de la synchronisation du schéma si le nombre de colonnes dépasse cette limite. Pour utiliser de tels index, créez-les manuellement. Pour plus de détails, consultez ALTER SYSTEM. |
|
Types d'objets non pris en charge |
Objets INDEX, PARTITION, VIEW, PROCEDURE, FUNCTION, TRIGGER et FK. |
|
Données de type BIT |
Non prises en charge. |
|
Synchronisation des clés primaires uniquement |
Non prise en charge. Les données à synchroniser doivent inclure au moins un champ non clé primaire. |
|
Moteur de destination |
Seul le moteur LindormTable est pris en charge. |
|
Chaînes VARBINARY vides |
Traitées comme nulles par DTS et Lindorm. |
|
Incompatibilité de précision des champs DECIMAL |
Si la précision du champ DECIMAL dans la destination diffère de celle de la source, la tâche échoue. |
|
Limites des requêtes de données Lindorm |
Les données écrites dans Lindorm doivent respecter ses limites des requêtes de données. Le dépassement de ces limites entraîne l'échec de la tâche. |
|
Utilisation des ressources lors de la synchronisation complète |
La synchronisation complète des données consomme des ressources de lecture et d'écriture sur les bases de données source et destination. Exécutez la synchronisation pendant les heures creuses, lorsque l'utilisation du CPU est inférieure à 30 % sur les deux instances. |
|
Espace de table de destination après l'initialisation complète |
L'initialisation complète exécute des opérations INSERT concurrentes, ce qui provoque une fragmentation des tables. Après l'initialisation complète, l'espace de table de destination sera plus grand que celui de la source. |
|
Outils DDL en ligne pendant la synchronisation |
N'utilisez pas d'outils tels que pt-online-schema-change pour effectuer des opérations DDL en ligne sur les objets synchronisés pendant qu'une tâche DTS est active, car cela entraînerait l'échec de la tâche. |
|
Écritures externes vers la destination |
L'écriture de données dans la base de données de destination à partir de sources autres que DTS pendant la synchronisation provoque une incohérence des données. |
|
Fonctionnalité EncDB (confidentialité permanente) |
Si la fonctionnalité EncDB est activée sur l'instance RDS for MySQL source, la synchronisation complète des données n'est pas prise en charge. Le chiffrement transparent des données (TDE) n'est pas soumis à cette restriction : les instances avec TDE activé prennent en charge la synchronisation du schéma, la synchronisation complète des données et la synchronisation incrémentielle des données. |
|
Récupération d'instance DTS |
En cas d'échec d'une instance DTS, l'équipe d'assistance DTS tente une récupération sous 8 heures. Pendant la récupération, DTS peut redémarrer l'instance ou ajuster les paramètres de l'instance DTS (et non les paramètres de la base de données). Consultez Modifier les paramètres de l'instance. |
Cas particuliers
Source MySQL autogérée
Un basculement primaire/secondaire dans la base de données source pendant la synchronisation entraîne l'échec de la tâche.
La latence est calculée à partir de la différence d'horodatage entre l'heure actuelle et le dernier enregistrement synchronisé vers la destination. Si aucune opération DML n'est effectuée sur la source pendant une période prolongée, la latence affichée peut être imprécise. Pour actualiser la latence, effectuez une opération DML sur la source. Vous pouvez également créer une table de heartbeat : DTS y écrit chaque seconde lorsque vous synchronisez la base de données entière.
DTS exécute périodiquement
CREATE DATABASE IF NOT EXISTS \test\`` sur la source pour faire avancer le décalage du journal binaire.Pour Amazon Aurora MySQL ou d'autres instances MySQL en mode cluster, le nom de domaine ou l'adresse IP configuré pour la tâche doit toujours résoudre vers le nœud en lecture/écriture (RW). Sinon, la tâche risque de ne pas s'exécuter correctement.
Source ApsaraDB RDS for MySQL
Les instances en lecture seule d'ApsaraDB RDS for MySQL 5.6 ne peuvent pas être utilisées comme source, car elles n'enregistrent pas les journaux de transactions.
DTS exécute périodiquement
CREATE DATABASE IF NOT EXISTS \test\`` sur la source pour faire avancer le décalage du journal binaire.
Configurer la tâche de synchronisation
Étape 1 : Accéder à la page Synchronisation des données
Utilisez la console DTS ou la console DMS.
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.
Console DMS
Les étapes réelles 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, puis 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éside l'instance.
Étape 2 : Configurer les bases de données source et de destination
Cliquez sur Create Task.
Configurez les bases de données source et de destination à l'aide des paramètres du tableau suivant.
|
Catégorie |
Paramètre |
Description |
|
N/A |
Nom de la tâche |
Nom descriptif de la tâche DTS. DTS génère automatiquement un nom ; remplacez-le par un nom permettant d'identifier facilement la tâche. Les noms de tâches n'ont pas besoin d'être uniques. |
|
Base de données source |
Sélectionner une connexion existante |
Si vous disposez déjà d'une instance de base de données enregistrée auprès de DTS, sélectionnez-la dans la liste déroulante ; DTS renseigne automatiquement les autres paramètres. Dans la console DMS, effectuez votre sélection dans la liste Data Synchronization. Sinon, configurez manuellement les paramètres ci-dessous. |
|
Type de base de données |
Définissez ce paramètre sur Data + AI. |
|
|
DTS (DTS) |
Définissez ce paramètre sur Data Synchronization. |
|
|
Région de l'instance |
Sélectionnez la région de l'instance RDS MySQL source. |
|
|
Répliquer les données entre les comptes Alibaba Cloud |
Sélectionnez Data Synchronization Tasks si la base de données source appartient au compte Alibaba Cloud actuel. |
|
|
ID d'instance RDS |
Sélectionnez l'ID de l'instance RDS MySQL source. |
|
|
Compte de base de données |
Saisissez le compte de base de données. Pour connaître les autorisations requises, consultez la section Autorisations requises pour les comptes de base de données. |
|
|
Mot de passe de la base de données |
Mot de passe associé au compte de base de données. |
|
|
Chiffrement |
Sélectionnez Create Task ou SSL-encrypted selon vos besoins. Pour utiliser le chiffrement SSL, activez-le sur l'instance RDS for MySQL avant de configurer la tâche DTS. Consultez la rubrique Utiliser un certificat cloud pour activer le chiffrement SSL. |
|
|
Base de données de destination |
Sélectionner une connexion existante |
Si vous disposez déjà d'une instance de base de données enregistrée auprès de DTS, sélectionnez-la dans la liste déroulante ; DTS renseigne automatiquement les autres paramètres. Dans la console DMS, effectuez votre sélection dans la liste Select a DMS database instance. Sinon, configurez manuellement les paramètres ci-dessous. |
|
Type de base de données |
Définissez ce paramètre sur Lindorm. |
|
|
Access Method |
Définissez ce paramètre sur Alibaba Cloud Instance. |
|
|
Région de l'instance |
Sélectionnez la région de l'instance Lindorm de destination. |
|
|
ID d'instance |
Sélectionnez l'ID de l'instance Lindorm de destination. |
|
|
Compte de base de données |
Saisissez le compte de base de données de l'instance Lindorm de destination. Pour connaître les autorisations requises, consultez la section Autorisations requises pour les comptes de base de données. |
|
|
Mot de passe de la base de données |
Mot de passe associé au compte de base de données. |
-
Cliquez sur Test Connectivity and Proceed.
RemarqueLes adresses IP des serveurs DTS doivent être ajoutées aux paramètres de sécurité des bases de données source et de destination. Cette opération peut être effectuée automatiquement ou manuellement. Consultez la rubrique Ajouter les adresses IP des serveurs DTS à une liste d'autorisation. Si la source ou la destination est une base de données auto-gérée avec une méthode d'accès autre que Non-encrypted, cliquez sur Test Connectivity dans la boîte de dialogue Select a DMS database instance.
Étape 3 : Configurer les objets de synchronisation
À l'étape Configure Objects, définissez les paramètres suivants.
|
Paramètre |
Description |
|
Access Method |
L'option Alibaba Cloud Instance est sélectionnée par défaut. Vous pouvez également sélectionner Test Connectivity and Proceed. L'option Alibaba Cloud Instance n'est pas disponible. Lorsque la synchronisation complète des données est activée, DTS synchronise les données historiques de la source vers la destination avant de démarrer la synchronisation incrémentielle. |
|
Processing Mode of Conflicting Tables |
Conservez la valeur par défaut. |
|
CIDR Blocks of DTS Servers |
Contrôle la casse des noms de bases de données, de tables et de colonnes dans la destination. La valeur par défaut est DTS default policy. Sélectionnez une autre option si vous souhaitez que la casse corresponde à celle de la source ou de la destination. Consultez la rubrique Spécifier la casse des noms d'objets dans l'instance de destination. |
|
Synchronization Types |
Sélectionnez les bases de données ou les tables à synchroniser, puis cliquez sur l'icône |
|
Full Data Synchronization |
Si les noms des bases de données, des tables ou des colonnes dans l'instance Lindorm de destination diffèrent de ceux de l'instance RDS MySQL source, utilisez le mappage des noms d'objets. Consultez la rubrique Mapper les noms de tables et de colonnes. Remarque
Le renommage d'un objet via le mappage des noms peut empêcher la synchronisation des objets dépendants. Pour filtrer les lignes, cliquez avec le bouton droit sur une table dans Schema Synchronization et spécifiez des conditions WHERE. Consultez la rubrique Spécifier les conditions de filtrage. Pour sélectionner des opérations SQL spécifiques pour la synchronisation incrémentielle, cliquez avec le bouton droit sur un objet et choisissez les opérations à inclure. |
Étape 4 : Configurer les paramètres avancés
Cliquez sur Next: Advanced Settings et configurez les paramètres suivants.
|
Paramètre |
Description |
|
Capitalization of Object Names in Destination Instance |
Par défaut, DTS planifie la tâche sur un 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. Valeurs valides : 10 à 1 440 minutes. Valeur par défaut : 720 minutes. Définissez cette valeur sur au moins 30 minutes. Si DTS se reconnecte dans ce délai, la tâche reprend automatiquement ; sinon, elle échoue. Remarque
Lorsque plusieurs tâches partagent la même source ou la même destination, la période de nouvelle tentative la plus courte est prioritaire. DTS facture l'instance pendant les périodes de nouvelle tentative ; définissez cette valeur en fonction de vos besoins métier. |
|
Source Objects |
Durée pendant laquelle DTS effectue des nouvelles tentatives après des échecs d'opérations DDL ou DML. Valeurs valides : 1 à 1 440 minutes. Valeur par défaut : 10 minutes. Définissez cette valeur sur une durée supérieure à 10 minutes. Cette valeur doit être inférieure à Selected Objects. |
|
Selected Objects |
Limite le débit de la synchronisation complète des données pour réduire la charge sur la destination. Configurez les paramètres Selected Objects, RPS of Full Data Migration et Dedicated Cluster for Task Scheduling. Disponible uniquement lorsque l'option Full Data Synchronization est sélectionnée. |
|
Retry Time for Other Issues |
Limite le débit de la synchronisation incrémentielle des données. Configurez les paramètres Retry Time for Failed Connections et Enable Throttling for Full Data Synchronization. |
|
Queries per second (QPS) to the source database |
Tag facultatif permettant d'identifier l'environnement de l'instance. |
|
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks |
Contrôle si DTS écrit les opérations SQL de heartbeat dans la base de données source. Sélectionnez Data migration speed for full migration (MB/s)paramètres de notification d'alerte pour ignorer l'écriture (une valeur de latence peut s'afficher pour l'instance). Sélectionnez No pour écrire les opérations de heartbeat (cela peut affecter les sauvegardes physiques et le clonage de la base de données source). |
|
Enable Throttling for Incremental Data Synchronization |
Sélectionnez RPS of Incremental Data Synchronization pour activer la fonctionnalité Extract, Transform, Load (ETL) et saisir les instructions de traitement des données. Consultez les rubriques Qu'est-ce que l'ETL ? et Configurer l'ETL dans une tâche de migration ou de synchronisation des données. Sélectionnez Data synchronization speed for incremental synchronization (MB/s) pour ignorer cette étape. |
|
Environment Tag |
Sélectionnez Yes pour recevoir des notifications en cas d'échec de la tâche ou si la latence dépasse un seuil. Configurez le seuil d'alerte et les paramètres de notification. Consultez la rubrique Configurer la surveillance et les alertes lors de la création d'une tâche DTS. Sélectionnez Yes pour désactiver les alertes. |
Étape 5 : Exécuter la prévérification
Cliquez sur No.
Pour afficher un aperçu des paramètres API pour cette configuration de tâche, placez le pointeur sur Configure ETL et cliquez sur Preview OpenAPI parameters avant de continuer.
DTS exécute une prévérification avant de démarrer la tâche. Si certains éléments échouent :
Cliquez sur No à côté de l'élément ayant échoué, analysez la cause, corrigez le problème, puis cliquez sur Monitoring and Alerting.
Si un élément d'alerte ne peut pas être ignoré, cliquez sur Yes à côté de l'élément ayant échoué, résolvez le problème, puis relancez une prévérification.
Si un élément d'alerte peut être ignoré, cliquez sur No, puis sur Next: Save Task Settings and Precheck dans la boîte de dialogue des détails, cliquez sur Next: Save Task Settings and Precheck, puis sur Precheck Again. Ignorer les éléments d'alerte peut entraîner une incohérence des données.
Étape 6 : Acheter l'instance
Attendez que le View Details atteigne 100%, puis cliquez sur View Details.
Sur la page d'achat, configurez les paramètres suivants.
|
Paramètre |
Description |
|
Méthode de facturation |
Abonnement : Paiement anticipé pour une durée fixe. Plus rentable pour une utilisation à long terme. Paiement à l'utilisation : Facturation horaire. Adapté à une utilisation à court terme — libérez l'instance lorsqu'elle n'est plus nécessaire pour arrêter la facturation. |
|
Paramètres du groupe de ressources |
Groupe de ressources de l'instance. Par défaut : groupe de ressources par défaut. Consultez la rubrique Qu'est-ce que Resource Management ? |
|
Classe d'instance |
La vitesse de synchronisation varie selon la classe d'instance. Sélectionnez-en une en fonction de vos besoins. Consultez la rubrique Classes d'instances des instances de synchronisation des données. |
|
Durée de l'abonnement |
Disponible uniquement pour la méthode de facturation Abonnement. Options : 1 à 9 mois, 1 an, 2 ans, 3 ans ou 5 ans. |
Lisez et acceptez les Confirm Alert Details.
Cliquez sur Ignore, 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 depuis cet emplacement.