Data Transmission Service (DTS) permet de synchroniser des données entre bases de données en temps réel. Cette rubrique explique comment configurer une tâche de synchronisation des données dans un cluster dédié DTS, en prenant pour exemple la synchronisation d'une instance ApsaraDB RDS for MySQL vers une autre.
Les cas d'utilisation courants incluent la redondance géographique active, la reprise après sinistre géographique, la reprise après sinistre au niveau des zones, la synchronisation transfrontalière des données, les systèmes d'informatique décisionnelle (BI) dans le cloud et l'entreposage de données en temps réel.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un cluster dédié DTS. Pour plus d'informations, consultez Créer un cluster dédié DTS
Des instances source et de destination ApsaraDB RDS for MySQL créées. Pour plus d'informations, consultez Créer une instance ApsaraDB RDS for MySQL
Un espace de stockage suffisant sur l'instance de destination. L'espace disponible doit être supérieur à la taille totale des données de l'instance source.
Les instances source et de destination, ainsi que le cluster dédié DTS, doivent se trouver dans la même région.
Limites
Exigences relatives à la base de données source
Les tables à synchroniser doivent comporter des contraintes PRIMARY KEY ou UNIQUE, et tous les champs doivent être uniques. À défaut, la base de données de destination pourrait contenir des enregistrements en double.
Si vous sélectionnez des tables spécifiques (et non une base de données entière) et devez renommer des tables ou des colonnes, la limite est de 1 000 tables par tâche de synchronisation. Pour plus de 1 000 tables, répartissez-les sur plusieurs tâches ou synchronisez la base de données entière.
-
Exigences relatives à la journalisation binaire :
-
La journalisation binaire doit être activée et le paramètre
binlog_row_imagedoit être défini surfull. Pour plus de détails, consultez Modifier les paramètres d'une instance ApsaraDB RDS for MySQL.ImportantPour les bases de données MySQL autogérées : - Définissez
binlog_formatsurrowetbinlog_row_imagesurfull. - Pour les déploiements en cluster à double primaire, définissezlog_slave_updatessurONafin de garantir que DTS puisse obtenir tous les journaux binaires. Pour plus d'informations, consultez Créer un compte pour une base de données MySQL autogérée et configurer la journalisation binaire. Pour la synchronisation incrémentielle uniquement : conservez les journaux binaires pendant au moins 24 heures.
Pour la synchronisation complète et incrémentielle : conservez les journaux binaires pendant au moins sept jours. Une fois la synchronisation complète des données terminée, vous pouvez définir la période de rétention sur plus de 24 heures.
Si les exigences de rétention des journaux binaires ne sont pas respectées, DTS risque de ne pas pouvoir récupérer les journaux requis, ce qui entraînerait l'échec de la tâche, une incohérence des données ou une perte de données. Dans ce cas, l'accord de niveau de service (SLA) du service DTS ne garantit ni la fiabilité ni les performances du service. Pour plus d'informations sur les fichiers de journaux binaires, consultez Afficher et supprimer les fichiers de journaux binaires d'une instance ApsaraDB RDS for MySQL.
-
Comportement de la synchronisation du schéma
Lors de la synchronisation du schéma, DTS synchronise les clés étrangères de la base de données source vers la base de données de destination.
Pendant la synchronisation complète et incrémentielle, DTS désactive temporairement les vérifications de contrainte de clé étrangère et les opérations en cascade au niveau de la session. Les opérations de mise à jour ou de suppression en cascade sur la source pendant la synchronisation peuvent provoquer une incohérence des données.
Autres limites
La version de la base de données de destination doit être identique ou supérieure à celle de la base de données source. Une version de destination antérieure peut entraîner des problèmes de compatibilité.
Exécutez la synchronisation pendant les heures creuses. La synchronisation initiale complète des données utilise les ressources de lecture et d'écriture des deux instances et augmente la charge du serveur.
Après la synchronisation initiale complète des données, l'espace de table de destination sera plus grand que celui de la source en raison de la fragmentation causée par les opérations INSERT simultanées.
Si vous synchronisez des tables sélectionnées (et non la base de données entière), n'utilisez pas d'outils tels que pt-online-schema-change pour les opérations DDL pendant la synchronisation, car la tâche échouerait. Si vous devez effectuer des opérations DDL en ligne sur les tables sources, utilisez Data Management (DMS). Pour plus d'informations, consultez Effectuer des opérations DDL sans verrou.
N'écrivez dans la base de données de destination que via DTS pendant la synchronisation. L'écriture via d'autres outils peut entraîner une incohérence ou une perte de données.
Remarques pour les bases de données MySQL autogérées
Un basculement primaire/secondaire sur la base de données source pendant l'exécution de la tâche entraîne l'échec de celle-ci.
-
DTS calcule la latence de synchronisation en fonction de l'horodatage des dernières données synchronisées dans la destination et de l'horodatage actuel dans la source. 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 mettre à jour la valeur de latence, effectuez une opération DML sur la source.
Si vous synchronisez une base de données entière, créez une table de heartbeat mise à jour chaque seconde afin de maintenir la précision de la mesure de latence.
DTS exécute périodiquement
CREATE DATABASE IF NOT EXISTS 'test'dans la base de données source pour faire avancer la position du fichier de journal binaire.
Topologies de synchronisation prises en charge
Synchronisation unidirectionnelle un-à-un
Synchronisation unidirectionnelle un-à-plusieurs
Synchronisation en cascade unidirectionnelle
Synchronisation unidirectionnelle plusieurs-à-un
Synchronisation bidirectionnelle un-à-un
Pour plus d'informations, consultez Topologies de synchronisation.
Opérations SQL pouvant être synchronisées
| Type d'opération | Instructions SQL |
|---|---|
| DML | INSERT, UPDATE, DELETE |
| DDL | ALTER TABLE, ALTER VIEW, CREATE FUNCTION, CREATE INDEX, CREATE PROCEDURE, CREATE TABLE, CREATE VIEW, DROP INDEX, DROP TABLE, RENAME TABLE, TRUNCATE TABLE |
Les instructions DDL non répertoriées ci-dessus ne sont pas synchronisées.
Configurer une tâche de synchronisation des données
Étape 1 : Accéder au cluster dédié
Accédez à la page Cluster dédié.
Dans la barre de navigation supérieure, sélectionnez la région où réside votre cluster dédié DTS.
Dans la colonne Actions du cluster dédié DTS, choisissez Configure Task > Configure Data Synchronization Task.
Étape 2 : Configurer les bases de données source et de destination
Après avoir configuré les bases de données source et de destination, lisez les limitations affichées en haut de la page avant de continuer. Ignorer cette étape peut entraîner l'échec de la tâche ou une incohérence des données.
Général
| Paramètre | Description |
|---|---|
| Task Name | DTS génère automatiquement un nom. Spécifiez un nom descriptif en fonction de vos besoins métier. Le nom n'a pas besoin d'être unique. |
Source Database
| Paramètre | Description |
|---|---|
| Select an existing database connection (Facultatif) | Sélectionnez une connexion existante pour réutiliser ses paramètres. Si aucune connexion n'existe, configurez manuellement les paramètres ci-dessous. |
| Database Type | Sélectionnez MySQL. |
| Connection Type | Sélectionnez Alibaba Cloud Instance. |
| Instance Region | La région est définie lors de la création du cluster dédié et ne peut pas être modifiée. |
| Replicate Data Across Alibaba Cloud Accounts | Sélectionnez No pour cet exemple. |
| RDS Instance ID | L'ID de l'instance ApsaraDB RDS for MySQL source. Les instances source et de destination peuvent être identiques ou différentes — DTS prend en charge la synchronisation entre deux instances ou au sein d'une seule instance. |
| Database Account | Un compte de base de données disposant d'autorisations de lecture sur les objets à synchroniser. |
| Database Password | Le mot de passe du compte de base de données. |
| Encryption | Sélectionnez Non-encrypted ou SSL-encrypted. Si vous sélectionnez SSL-encrypted, activez le chiffrement SSL sur l'instance avant de configurer cette tâche. Pour plus d'informations, consultez Configurer le chiffrement SSL pour une instance ApsaraDB RDS for MySQL. |
Destination Database
| Paramètre | Description |
|---|---|
| Select an existing database connection (Facultatif) | Sélectionnez une connexion existante pour réutiliser ses paramètres. Si aucune connexion n'existe, configurez manuellement les paramètres ci-dessous. |
| Database Type | Sélectionnez MySQL. |
| Connection Type | Sélectionnez Alibaba Cloud Instance. |
| Instance Region | La région de l'instance ApsaraDB RDS for MySQL de destination. |
| RDS Instance ID | L'ID de l'instance ApsaraDB RDS for MySQL de destination. |
| Database Account | Un compte de base de données disposant d'autorisations de lecture et d'écriture sur la base de données de destination. |
| Database Password | Le mot de passe du compte de base de données. |
| Encryption | Sélectionnez Non-encrypted ou SSL-encrypted. Si vous sélectionnez SSL-encrypted, activez le chiffrement SSL sur l'instance avant de configurer cette tâche. Pour plus d'informations, consultez Configurer le chiffrement SSL pour une instance ApsaraDB RDS for MySQL. |
Étape 3 : Tester la connectivité
Cliquez sur Test Connectivity and Proceed.
DTS gère automatiquement l'accès réseau en fonction du type de votre base de données :
Instances de base de données Alibaba Cloud (telles qu'ApsaraDB RDS for MySQL ou ApsaraDB for MongoDB) : DTS ajoute automatiquement ses blocs CIDR de serveur à la liste d'autorisation de l'instance.
Bases de données autogérées sur Elastic Compute Service (ECS) : DTS ajoute ses blocs CIDR de serveur aux règles du groupe de sécurité ECS. Assurez-vous que l'instance ECS peut atteindre la base de données.
Bases de données sur site ou dans le cloud tiers : Ajoutez manuellement les blocs CIDR du serveur DTS à la liste d'autorisation de la base de données. Pour plus d'informations, consultez Ajouter les blocs CIDR des serveurs DTS aux paramètres de sécurité des bases de données sur site.
L'ajout des blocs CIDR DTS à votre liste d'autorisation ou à vos règles de groupe de sécurité introduit des risques de sécurité potentiels. Avant de continuer, prenez des mesures préventives telles que le renforcement de la sécurité des noms d'utilisateur et des mots de passe, la limitation des ports exposés, l'authentification des appels API et l'audit régulier des listes d'autorisation ou des règles de groupe de sécurité. Pour des exigences de sécurité plus élevées, connectez votre base de données à DTS via Express Connect, VPN Gateway ou Smart Access Gateway.
Étape 4 : Sélectionner les objets et configurer les paramètres de synchronisation
Choisir un mode de synchronisation
DTS prend en charge trois modes de synchronisation. Sélectionnez la combinaison adaptée à votre cas d'utilisation :
Synchronisation du schéma : Synchronise les schémas de table (structure DDL) de la source vers la destination.
Synchronisation complète des données : Copie toutes les données existantes de la source vers la destination. Cela constitue la base de référence pour la synchronisation incrémentielle ultérieure.
Synchronisation incrémentielle des données (sélectionnée par défaut) : Réplique en continu les modifications de données en cours après la synchronisation complète initiale.
Pour cet exemple, sélectionnez les trois options : Schema Synchronization, Full Data Synchronization et Incremental Data Synchronization.
Paramètres de synchronisation
| Paramètre | Description |
|---|---|
| Processing Mode of Conflicting Tables | Precheck and Report Errors (par défaut) : La prévérification échoue si la destination contient des tables portant les mêmes noms que les tables sources. Utilisez le mappage des noms d'objets pour renommer les tables synchronisées si nécessaire. Ignore Errors and Proceed : Ignore la vérification des conflits de noms. Lors de la synchronisation complète, les enregistrements de destination existants avec la même clé primaire sont conservés. Lors de la synchronisation incrémentielle, ils sont écrasés. Si les schémas diffèrent entre la source et la destination, l'initialisation des données peut échouer ou seules certaines colonnes peuvent être synchronisées. À utiliser avec prudence. |
| Method to Migrate Triggers in Source Database | Sélectionnez la méthode de synchronisation des déclencheurs. Si aucun déclencheur n'est concerné, ignorez ce paramètre. Disponible uniquement lorsque Schema Synchronization est sélectionné. Pour plus d'informations, consultez Synchroniser ou migrer les déclencheurs depuis la base de données source. |
| Enable Migration Assessment | Sélectionnez Yes pour vérifier si les schémas source et de destination (longueurs d'index, procédures stockées, tables dépendantes) répondent aux exigences. Les résultats de l'évaluation sont visibles lors de la prévérification mais n'affectent pas le succès ou l'échec de celle-ci. Disponible uniquement lorsque Schema Synchronization est sélectionné. |
| Synchronization Topology | Sélectionnez One-way Synchronization pour cet exemple. |
| Capitalization of Object Names in Destination Instance | Contrôle la casse des noms de base de données, de tables et de colonnes dans la destination. DTS default policy est sélectionné par défaut. Pour plus d'informations, consultez Spécifier la casse des noms d'objets dans l'instance de destination. |
Sélectionner les objets à synchroniser
Dans la section Source Objects, sélectionnez les objets à synchroniser et cliquez sur l'icône de flèche vers la droite pour les déplacer vers la section Selected Objects.
Vous pouvez sélectionner des colonnes, des tables ou des bases de données entières. La sélection de tables ou de colonnes signifie que DTS ne synchronise pas les vues, les déclencheurs ou les procédures stockées vers la destination.
Dans la section Selected Objects, vous pouvez :
Renommer un seul objet : faites un clic droit sur l'objet. Pour plus d'informations, consultez Mapper le nom d'un seul objet.
Renommer plusieurs objets à la fois : cliquez sur Batch Edit dans le coin supérieur droit. Pour plus d'informations, consultez Mapper plusieurs noms d'objets à la fois.
Filtrer des opérations SQL spécifiques par objet : faites un clic droit sur l'objet et sélectionnez les opérations SQL à synchroniser.
Filtrer les données avec des conditions WHERE : faites un clic droit sur l'objet et spécifiez les conditions. Pour plus d'informations, consultez Utiliser des conditions SQL pour filtrer les données.
Le renommage d'un objet avec le mappage des noms d'objets peut empêcher la synchronisation d'autres objets qui en dépendent.
Étape 5 : Configurer les paramètres avancés
Cliquez sur Next: Advanced Settings et configurez les paramètres suivants.
Vérification des données
Pour obtenir des informations sur l'activation de la vérification des données, consultez Activer la vérification des données.
Paramètres avancés
| Paramètre | Description |
|---|---|
| Select the dedicated cluster used to schedule the task | Votre cluster dédié DTS est sélectionné par défaut. |
| Set Alerts | Configurez les alertes pour les échecs de tâche ou la latence dépassant un seuil. Sélectionnez No pour ignorer, ou Yes pour configurer les seuils d'alerte et les contacts. Pour plus d'informations, consultez Configurer la surveillance et les alertes lors de la création d'une tâche DTS. |
| Copy the temporary table of the Online DDL tool that is generated in the source table to the destination database | Contrôle la façon dont DTS gère les tables temporaires générées par les outils DDL en ligne (Data Management (DMS) ou gh-ost). Yes : synchronise les données de la table temporaire. Notez que les opérations DDL en ligne volumineuses peuvent prolonger considérablement le temps de synchronisation. No, Adapt to DMS Online DDL : ne synchronise pas les tables temporaires ; seul le DDL original de DMS est synchronisé. Les tables de destination peuvent être verrouillées pendant l'opération. No, Adapt to gh-ost : ne synchronise pas les tables temporaires ; seul le DDL original de gh-ost est synchronisé. Les tables de destination peuvent être verrouillées. Utilisez des expressions régulières par défaut ou personnalisées pour filtrer les tables fantômes. Important pt-online-schema-change n'est pas pris en charge — son utilisation entraîne l'échec de la tâche DTS. |
| Whether to Migrate Accounts | Sélectionnez Yes pour synchroniser les informations de compte de base de données depuis la source. Si cette option est sélectionnée, choisissez les comptes à synchroniser. Autorisations requises : le compte source nécessite SELECT sur mysql.user, mysql.db, mysql.columns_priv et mysql.tables_priv. Le compte de destination nécessite CREATE USER et GRANT OPTION. Les comptes système (root, mysql.infoschema, mysql.session, mysql.sys) et les comptes déjà présents dans la base de données de destination ne peuvent pas être synchronisés. |
| Method to Migrate Triggers in Source Database | Sélectionnez un mode pour synchroniser les déclencheurs. Si aucun déclencheur n'est concerné, ignorez ce paramètre. Pour plus d'informations, consultez Synchroniser ou migrer les déclencheurs depuis la base de données source. |
| Retry Time for Failed Connection | Durée pendant laquelle DTS réessaie lorsque la base de données source ou de destination est inaccessible après le démarrage de la tâche. Valeurs valides : 10–1 440 minutes. Par défaut : 720 minutes. Définissez une valeur supérieure à 30 minutes. Si plusieurs tâches DTS partagent la même base de données source ou de destination, le temps de nouvelle tentative le plus court parmi elles est prioritaire. DTS facture l'instance pendant les périodes de nouvelle tentative — libérez l'instance rapidement si les instances source ou de destination ne sont plus nécessaires. |
| The wait time before a retry when other issues occur in the source and destination databases | Durée pendant laquelle DTS réessaie lorsque les opérations DDL ou DML échouent. Valeurs valides : 1–1 440 minutes. Par défaut : 10 minutes. Définissez une valeur supérieure à 10 minutes. Cette valeur doit être inférieure à Retry Time for Failed Connection. |
Étape 6 : Exécuter la prévérification
Cliquez sur Next: Save Task Settings and Precheck.
DTS exécute une prévérification avant que la tâche ne puisse démarrer. La tâche ne se lance qu'après la réussite de tous les éléments de prévérification.
Si un élément de prévérification échoue : cliquez sur View Details, résolvez le problème, puis cliquez sur Precheck Again.
-
Si une alerte est déclenchée :
Si l'alerte ne peut pas être ignorée : cliquez sur View Details, résolvez le problème et relancez la prévérification.
Si l'alerte peut être ignorée : cliquez sur Confirm Alert Details, puis sur Ignore, ensuite sur OK, et enfin sur Precheck Again.
Ignorer un élément d'alerte peut entraîner une incohérence des données et exposer votre activité à des risques potentiels.
Étape 7 : Démarrer la tâche
Attendez que le taux de réussite de la prévérification atteigne 100 %, puis cliquez sur Next: Select DTS Instance Type.
Dans la section New Instance Class, configurez la classe d'instance. Définissez un minimum de 1 unité DTS (DU) jusqu'au nombre d'unités DU disponibles restantes.
Lisez et cochez la case pour accepter les Data Transmission Service (Pay-as-you-go) Service Terms.
Cliquez sur Start Task, puis sur OK.
Pour surveiller la progression de la tâche, accédez à la page des détails du cluster et cliquez sur Cluster Task List dans le volet de navigation de gauche.