Data Transmission Service (DTS) permet de synchroniser en temps réel les données d'une base de données MariaDB auto-gérée vers une instance ApsaraDB RDS for MariaDB. Cette rubrique explique comment configurer une tâche de synchronisation couvrant la synchronisation du schéma, la synchronisation complète des données et la synchronisation incrémentielle.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Une instance ApsaraDB RDS for MariaDB de destination. Pour plus d'informations, consultez Créer une instance ApsaraDB RDS for MariaDB.
Un espace de stockage suffisant sur l'instance de destination. L'espace disponible doit excéder la taille totale des données de la base de données source.
Facturation
| Type de synchronisation | Frais |
|---|---|
| Synchronisation du schéma et synchronisation complète des données | Gratuit |
| Synchronisation incrémentielle des données | Payant. Pour plus d'informations, consultez Vue d'ensemble de la facturation. |
Topologies de synchronisation prises en charge
Synchronisation unidirectionnelle un à un
Synchronisation unidirectionnelle un à plusieurs
Synchronisation unidirectionnelle en cascade
Synchronisation unidirectionnelle plusieurs à un
Synchronisation bidirectionnelle un à un
Pour plus de détails, consultez Topologies de synchronisation.
Opérations SQL synchronisables
| 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 |
L'opération RENAME TABLE peut entraîner une incohérence des données. Si vous renommez une table synchronisée pendant la synchronisation, ses données cessent d'être répliquées vers la destination. Pour éviter cela, sélectionnez la base de données entière comme objet de synchronisation plutôt que des tables individuelles. Assurez-vous que les bases de données avant et après le changement de nom figurent toutes deux dans les objets sélectionnés.
Permissions requises
Accordez les permissions suivantes aux comptes de base de données utilisés par DTS.
| Base de données | Permissions requises | Objectif |
|---|---|---|
| Base de données MariaDB source auto-gérée | REPLICATION CLIENT | Permet à DTS de vérifier l'état du journal binaire via SHOW MASTER STATUS et SHOW BINARY LOGS. |
| REPLICATION SLAVE | Autorise DTS à se connecter à la base de données source et à lire le journal binaire pour la synchronisation incrémentielle. | |
| SHOW VIEW | Permet à DTS de lire les définitions de vues lors de la synchronisation du schéma. | |
| SELECT | Autorise DTS à lire les données des tables lors de la synchronisation complète. | |
| Instance ApsaraDB RDS for MariaDB de destination | Lecture et écriture | Permet à DTS d'écrire les données synchronisées dans l'instance de destination. |
Pour créer des comptes et attribuer des permissions :
Base de données source : Consultez CREATE USER et GRANT dans la documentation MariaDB.
Instance de destination : Consultez Créer un compte et Modifier ou réinitialiser les permissions d'un compte.
Limitations
Lors de la synchronisation du schéma, DTS réplique les clés étrangères de la base de données source vers celle de destination. Pendant les synchronisations complète et incrémentielle, DTS désactive temporairement la vérification des contraintes de clés étrangères et les opérations en cascade au niveau de la session. Des incohérences de données peuvent survenir si vous effectuez des mises à jour ou des suppressions en cascade sur la base de données source pendant la synchronisation.
Limitations de la base de données source
| Limitation | S'applique à |
|---|---|
| Les tables doivent posséder une contrainte PRIMARY KEY ou UNIQUE, et tous leurs champs doivent être uniques. À défaut, la base de données de destination risque de contenir des enregistrements dupliqués. | Synchronisation complète des données, synchronisation incrémentielle |
| Lors de la synchronisation de tables individuelles (et non de bases de données entières), la tâche prend en charge jusqu'à 1 000 tables. Le dépassement de cette limite provoque une erreur de requête. Répartissez la charge sur plusieurs tâches ou synchronisez la base de données entière. | Tous les types de synchronisation |
La journalisation binaire doit être activée et binlog_row_image doit avoir la valeur full. Une configuration incorrecte entraîne l'échec de la pré-vérification et empêche le démarrage de la tâche. |
Synchronisation incrémentielle |
| Les journaux binaires doivent être conservés pendant au moins 7 jours. Une durée de rétention insuffisante peut entraîner l'échec de la tâche, des incohérences ou des pertes de données. Le SLA de DTS ne couvre ni la fiabilité ni les performances si cette exigence n'est pas respectée. | Synchronisation incrémentielle |
Configuration requise du journal binaire (à ajouter à votre fichier de configuration MariaDB) :
log_bin = mariadb-bin
binlog_row_image = FULL
| Paramètre | Valeur requise | Description |
|---|---|---|
log_bin |
Tout chemin ou nom valide | Active la journalisation binaire. Requis pour la synchronisation incrémentielle. |
binlog_row_image |
FULL |
Journalise toutes les valeurs de colonnes pour chaque ligne modifiée. Ce paramètre est nécessaire pour garantir une réplication précise par DTS. |
Pour plus d'informations sur la configuration des paramètres, consultez Modifier les paramètres d'une instance.
Autres limitations
| Limitation | S'applique à |
|---|---|
| La version de la base de données de destination doit être identique ou supérieure à celle de la source. Une version antérieure en destination peut entraîner des problèmes de compatibilité. | Tous les types de synchronisation |
| Lancez la synchronisation pendant les heures creuses afin de minimiser la charge sur les serveurs de bases de données source et de destination. Lors de la synchronisation complète, DTS sollicite des ressources de lecture et d'écriture aux deux extrémités. Pour maîtriser la charge, configurez la limitation de débit dans Advanced Settings (voir étape 6). | Synchronisation complète des données |
| Une fois la synchronisation complète terminée, l'espace de tables de destination est plus volumineux que celui de la source en raison de la fragmentation générée par les opérations INSERT concurrentes. | Synchronisation complète des données |
Si vous sélectionnez des tables individuelles (plutôt que des bases de données entières) comme objets de synchronisation, n'utilisez pas d'outils tels que pt-online-schema-change pour les opérations DDL. Privilégiez Data Management (DMS) pour les opérations DDL en ligne. |
Tous les types de synchronisation |
| Pendant la synchronisation, écrivez les données dans la base de données de destination uniquement via DTS. Si vous utilisez d'autres outils pour écrire des données, n'effectuez pas d'opérations DDL en ligne via DMS, sous peine de perte de données. | Tous les types de synchronisation |
| Si l'exécution d'instructions DDL échoue sur la destination, la tâche poursuit son exécution. Consultez les instructions DDL ayant échoué dans les journaux de la tâche. | Tous les types de synchronisation |
Configurer la tâche de synchronisation
Étape 1 : Accéder à la page Data Synchronization Tasks
Connectez-vous à la console Data Management (DMS).
Dans la barre de navigation supérieure, cliquez sur Data + AI.
Dans le volet de navigation de gauche, choisissez DTS (DTS) > Data Synchronization.
Les opérations disponibles dans la console varient selon le mode et la disposition de votre interface DMS. Pour plus d'informations, consultez Mode simple et Personnaliser la disposition et le style de la console DMS. Vous pouvez également accéder directement à la page Data Synchronization Tasks dans la console DTS.
Étape 2 : Sélectionner une région
Sur la page Data Synchronization Tasks, sélectionnez la région où réside l'instance de synchronisation des données.
Dans la nouvelle console DTS, sélectionnez la région depuis la barre de navigation supérieure.
Étape 3 : Configurer les bases de données source et de destination
Cliquez sur Create Task. Sur la page Create Task, configurez les bases de données source et de destination.
Lisez attentivement les Limits affichées sur la page après avoir configuré les bases de données source et de destination. Ignorer cette étape peut entraîner l'échec de la tâche ou provoquer des incohérences de données.
Base de données source
| Paramètre | Valeur |
|---|---|
| Task Name | Nom descriptif de la tâche. DTS génère automatiquement un nom que vous pouvez modifier. Les noms de tâches n'ont pas besoin d'être uniques. |
| Database Type | Sélectionnez MariaDB. |
| Access Method | Sélectionnez Self-managed Database on ECS. |
| Instance Region | Région où réside l'instance ECS. |
| Replicate Data Across Alibaba Cloud Accounts | Sélectionnez No si les bases de données source et de destination appartiennent au même compte Alibaba Cloud. |
| ECS Instance ID | ID de l'instance ECS hébergeant la base de données MariaDB source. |
| Port Number | Port de service de la base de données MariaDB source. Valeur par défaut : 3306. |
| Database Account | Compte de la base de données MariaDB source. Consultez Permissions requises. |
| Database Password | Mot de passe du compte de la base de données. |
| Encryption | Valeur par défaut : Non-encrypted. |
Base de données de destination
| Paramètre | Valeur |
|---|---|
| Database Type | Sélectionnez MariaDB. |
| Access Method | Sélectionnez Alibaba Cloud Instance. |
| Instance Region | Région où réside l'instance ApsaraDB RDS for MariaDB de destination. |
| RDS Instance ID | ID de l'instance ApsaraDB RDS for MariaDB de destination. |
| Database Account | Compte de la base de données de destination. Ce compte doit disposer de permissions de lecture et d'écriture. |
| Database Password | Mot de passe du compte de la base de données. |
| Encryption | Valeur par défaut : Non-encrypted. |
Étape 4 : Tester la connectivité
Cliquez sur Test Connectivity and Proceed.
DTS ajoute automatiquement les plages IP de ses serveurs à la liste d'autorisation des instances de base de données Alibaba Cloud ainsi qu'aux règles de groupe de sécurité des instances ECS. Pour les bases de données auto-gérées déployées sur plusieurs instances ECS, ajoutez manuellement les plages IP des serveurs DTS aux règles de groupe de sécurité de chaque instance. Pour les bases de données hébergées en centre de données local ou chez un fournisseur cloud tiers, ajoutez manuellement les plages IP des serveurs DTS à la liste d'autorisation de la base de données. Pour plus d'informations, consultez Blocs CIDR des serveurs DTS.
L'ajout de plages IP de serveurs DTS aux listes d'autorisation ou aux règles de groupe de sécurité accroît l'exposition aux risques de sécurité. Avant de poursuivre, prenez des mesures telles que le renforcement des identifiants de compte, la limitation des ports exposés, l'authentification des appels API, l'audit régulier des règles de liste d'autorisation et la connexion à DTS via Express Connect, VPN Gateway ou Smart Access Gateway.
Étape 5 : Sélectionner les objets de synchronisation et configurer les paramètres
| Paramètre | Description |
|---|---|
| Synchronization Types | Sélectionnez Schema Synchronization, Full Data Synchronization et Incremental Data Synchronization. La synchronisation incrémentielle est sélectionnée par défaut. La synchronisation complète établit la base de référence des données pour la synchronisation incrémentielle. |
| Method to Migrate Triggers in Source Database | Choisissez la méthode de gestion des déclencheurs de la base de données source. Ne configurez ce paramètre que si des déclencheurs doivent être synchronisés. Il n'apparaît que lorsque Schema Synchronization est sélectionné. Pour plus d'informations, consultez Synchroniser ou migrer des déclencheurs depuis la base de données source. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors : vérifie la présence de tables homonymes dans les bases de données source et de destination avant de lancer la tâche. Celle-ci ne démarre qu'en l'absence de conflit. Si des conflits existent et que les tables ne peuvent être supprimées ni renommées, utilisez le mappage de noms d'objets pour renommer les tables de destination. Ignore Errors and Proceed : ignore la vérification des conflits. Si un enregistrement de destination possède la même clé primaire ou unique qu'un enregistrement source, l'enregistrement de destination est conservé lors de la synchronisation complète, mais écrasé lors de la synchronisation incrémentielle. En cas de différence de schémas, l'initialisation des données risque d'échouer. |
| Capitalization of Object Names in Destination Instance | Valeur par défaut : DTS default policy. Ajustez ce paramètre si la casse des objets de destination doit correspondre à celle de la base de données source ou de destination. Pour plus d'informations, consultez Spécifier la casse des noms d'objets. |
| Source Objects | Sélectionnez les objets dans la section Source Objects et cliquez sur l'icône en forme de flèche pour les déplacer vers la section Selected Objects. Vous pouvez sélectionner des colonnes, des tables ou des bases de données. Si vous sélectionnez des tables ou des colonnes, DTS ne synchronise pas les vues, les déclencheurs ni les procédures stockées. |
| Selected Objects | Cliquez avec le bouton droit sur un objet pour le renommer ou filtrer les données à l'aide d'une condition WHERE. Cliquez sur Batch Edit pour renommer plusieurs objets simultanément. Pour plus d'informations, consultez Mapper les noms d'objets et Spécifier des conditions de filtrage. Remarque : renommer un objet peut empêcher la synchronisation des objets dépendants. |
Étape 6 : Configurer les paramètres avancés
Cliquez sur Next: Advanced Settings.
| Paramètre | Description |
|---|---|
| Dedicated Cluster for Task Scheduling | Par défaut, DTS planifie la tâche sur le cluster partagé. Pour une stabilité accrue, achetez et spécifiez un cluster dédié. Pour plus d'informations, consultez Qu'est-ce qu'un cluster dédié DTS ?. |
| Monitoring and Alerting | Sélectionnez Yes pour recevoir des notifications en cas d'échec de la tâche ou si la latence de synchronisation dépasse le seuil défini. Configurez le seuil d'alerte et les paramètres de notification. Pour plus d'informations, consultez Configurer la surveillance et les alertes. |
| Retry Time for Failed Connections | Durée pendant laquelle DTS tente de rétablir les connexions interrompues. Plage : 10 à 1 440 minutes. Valeur par défaut : 720. Définissez cette valeur sur au moins 30 minutes. Si la connexion est restaurée dans ce délai, la tâche reprend ; sinon, elle échoue. Lorsque plusieurs tâches partagent la même base de données source ou de destination, la durée de tentative la plus courte prévaut. DTS facture l'instance pendant toute la durée des tentatives de reconnexion. |
| Retry Time for Other Issues | Durée pendant laquelle DTS réessaie les opérations DDL ou DML ayant échoué. Plage : 1 à 1 440 minutes. Valeur par défaut : 10. Définissez cette valeur sur au moins 10 minutes. Elle doit être inférieure à Retry Time for Failed Connections. |
| Enable Throttling for Full Data Migration | Limitez la charge de lecture/écriture sur les bases de données lors de la synchronisation complète en configurant Queries per second (QPS) to the source database, RPS of Full Data Migration et Data migration speed for full migration (MB/s). Ce paramètre n'apparaît que lorsque Full Data Synchronization est sélectionné. |
| Enable Throttling for Incremental Data Migration | Réduisez la charge durant la synchronisation incrémentielle en configurant RPS of Incremental Data Synchronization et Data synchronization speed for incremental synchronization (MB/s). |
| Environment Tag | Attribuez un tag d'environnement à la tâche. Facultatif. |
| Configure ETL | Sélectionnez Yes pour activer le traitement ETL (Extract, Transform, Load). Saisissez les instructions de traitement des données dans l'éditeur de code. Pour plus d'informations, consultez Qu'est-ce que l'ETL ? et Configurer l'ETL. |
Étape 7 : Exécuter la pré-vérification
Cliquez sur Next: Save Task Settings and Precheck.
Pour prévisualiser les paramètres OpenAPI correspondant à cette configuration de tâche, survolez le bouton et cliquez sur Preview OpenAPI parameters avant de continuer.
DTS exécute une pré-vérification avant de démarrer la tâche.
Si un élément de contrôle échoue, cliquez sur View Details pour identifier la cause, corrigez le problème, puis relancez la pré-vérification.
-
Si un élément de contrôle génère une alerte :
Si l'alerte ne peut pas être ignorée, corrigez le problème et exécutez à nouveau la pré-vérification.
Si l'alerte peut être ignorée, cliquez sur Confirm Alert Details, puis sur Ignore dans la boîte de dialogue View Details. Confirmez avec OK, puis cliquez sur Precheck Again.
Ignorer des alertes peut provoquer des incohérences de données ou exposer votre activité à des risques.
Étape 8 : Acheter l'instance de synchronisation
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é pour une durée déterminée. Plus économique pour une utilisation à long terme. Pay-as-you-go : facturation horaire. Adapté aux utilisations de courte durée. Libérez l'instance lorsqu'elle n'est plus nécessaire afin d'arrêter la facturation. |
| Resource Group Settings | Groupe de ressources auquel appartient l'instance de synchronisation. Valeur par défaut : default resource group. Pour plus d'informations, consultez Qu'est-ce que Resource Management ? |
| Instance Class | La classe de l'instance détermine la vitesse de synchronisation. Pour plus d'informations, consultez Classes d'instances de synchronisation des données. |
| Subscription Duration | Disponible uniquement pour le mode de facturation Subscription. Options : 1 à 9 mois, 1 an, 2 ans, 3 ans ou 5 ans. |
Étape 9 : Démarrer la tâche
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. Suivez sa progression depuis cet emplacement.