Tous les produits
Search
Centre de documentation

Data Transmission Service:Configure two-way data synchronization between ApsaraDB for MongoDB replica set instances

Dernière mise à jour :Aug 08, 2026

Data Transmission Service (DTS) prend en charge la synchronisation bidirectionnelle des données entre deux instances ApsaraDB for MongoDB en ensemble de réplicas, garantissant la cohérence des données dans les deux sens simultanément.

Important

La synchronisation bidirectionnelle fonctionne uniquement entre deux instances ApsaraDB for MongoDB en ensemble de réplicas ayant la même architecture. Elle ne prend pas en charge les bases de données MongoDB gérées par l'utilisateur, les bases de données avec des architectures différentes ou plus de deux instances.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

Si le paramètre replication.oplogGlobalIdEnabled n'est pas défini sur true , la pré-vérification échoue ou DTS renvoie l'erreur two-way mongo must have gid .

Pour connaître les versions de base de données prises en charge, consultez la rubrique Présentation des scénarios de synchronisation des données.

Facturation

Type de synchronisation Frais
Synchronisation du schéma et synchronisation complète des données Gratuit
Synchronisation incrémentielle des données Facturé. Consultez la rubrique Présentation de la facturation.

Fonctionnement de la détection des conflits

La synchronisation bidirectionnelle implique qu'un même enregistrement pourrait théoriquement être modifié simultanément sur les deux instances. La détection des conflits par DTS n'empêche pas tous les conflits de données : les différences d'horloge système et la latence de synchronisation créent des fenêtres temporelles où les conflits passent inaperçus. Pour maintenir la cohérence des données, isolez les écritures au niveau de la couche métier : assurez-vous que chaque enregistrement n'est modifié que sur une seule instance à la fois.

DTS utilise une politique de résolution des conflits fixe, à savoir Ignore, et gère automatiquement les types de conflits suivants :

Type de conflit Comportement de DTS
INSERT : le nouvel enregistrement entre en conflit avec un enregistrement existant Ignorer l'INSERT ; conserver l'enregistrement existant
UPDATE : l'enregistrement cible n'existe pas ou entre en conflit avec un autre enregistrement Ignorer l'UPDATE
DELETE : l'enregistrement cible n'existe pas Ignorer le DELETE

Types de synchronisation

Type Description
Synchronisation du schéma Synchronise les schémas des objets sélectionnés de la source vers la destination
Synchronisation complète des données Synchronise les données historiques des objets sélectionnés. Objets pris en charge : bases de données et collections
Synchronisation incrémentielle des données Synchronise les modifications de données en cours. Ne synchronise pas les données des bases de données créées après le démarrage de la tâche

La synchronisation incrémentielle prend en charge :

  • CREATE COLLECTION et CREATE INDEX

  • DROP COLLECTION et DROP INDEX

  • RENAME COLLECTION

  • Opérations INSERT, UPDATE et DELETE sur les documents d'une collection

Pour les données incrémentielles de type fichier, seule la commande $set s'exécute de manière synchrone.

Limites

Limites des bases de données source et de destination

Limite Détails
Bande passante Le serveur source doit disposer d'une bande passante sortante suffisante, sinon la vitesse de synchronisation sera affectée.
Contraintes de collection Les collections doivent posséder des contraintes de clé primaire (PRIMARY KEY) ou d'unicité (UNIQUE) couvrant tous les champs uniques. Sinon, la base de données de destination peut contenir des enregistrements en double.
Nombre de collections Lors de la synchronisation de collections individuelles avec renommage, une seule tâche prend en charge jusqu'à 1 000 collections. Les tâches comportant plus de 1 000 collections renvoient une erreur de requête. Pour synchroniser plus de 1 000 collections, configurez plusieurs tâches par lots ou synchronisez la base de données entière.
Taille du document Un seul document ne peut pas dépasser 16 Mo. Les documents plus volumineux entraînent l'échec de la tâche.
Sources non prises en charge Les clusters Azure Cosmos DB for MongoDB et les clusters élastiques Amazon DocumentDB ne peuvent pas être utilisés comme bases de données sources.
Oplog ou flux de modifications La base de données source doit activer l'oplog et conserver les données de journalisation pendant au moins sept jours, ou activer les flux de modifications (change streams) couvrant les sept derniers jours. Si cette exigence n'est pas respectée, DTS peut ne pas parvenir à obtenir les modifications de données, ce qui peut entraîner une incohérence ou une perte de données — problèmes non couverts par l'accord de niveau de service (SLA) de DTS. Utilisez l'oplog pour enregistrer les modifications de données (recommandé). Les flux de modifications sont disponibles uniquement sur MongoDB 4.0 et versions ultérieures ; la synchronisation bidirectionnelle n'est pas prise en charge lorsque les flux de modifications sont utilisés comme source de modification des données. Pour les clusters Amazon DocumentDB non élastiques, activez les flux de modifications et définissez Migration Method sur ChangeStream et Architecture sur Sharded Cluster.
Index TTL Les collections avec des index de durée de vie (TTL) ne peuvent pas être synchronisées. Si la base de données source contient des index TTL, une incohérence des données peut survenir après la synchronisation.
Architecture Les bases de données source et de destination doivent être des instances ApsaraDB for MongoDB avec la même architecture. La synchronisation bidirectionnelle n'est pas prise en charge pour les bases de données MongoDB gérées par l'utilisateur ou les bases de données MongoDB avec des architectures différentes.
Modifications de schéma Pendant la synchronisation du schéma et la synchronisation complète des données, ne modifiez pas les schémas (y compris les mises à jour de type tableau). Sinon, la tâche échouera ou une incohérence des données se produira.
Écritures pendant la synchronisation complète Si vous exécutez uniquement la synchronisation complète des données (sans incrémentiel), n'écrivez pas de données dans la source pendant la synchronisation.

Autres limites

Limite Détails
Version de destination La version MongoDB de destination doit être identique ou supérieure à la version source. Une version de destination plus ancienne peut provoquer des problèmes de compatibilité.
Architecture Les architectures des instances ApsaraDB for MongoDB source et de destination doivent être identiques. Par exemple, si l'instance source est une instance de cluster fragmenté, l'instance de destination doit également être une instance de cluster fragmenté.
Bases de données exclues DTS ne peut pas synchroniser les données des bases de données admin ou local.
Transactions Les transactions ne sont pas conservées. DTS convertit chaque transaction en un seul enregistrement.
Impact sur les performances Exécutez la synchronisation des données pendant les heures creuses. La synchronisation complète des données utilise les ressources de lecture et d'écriture sur les deux instances, ce qui peut augmenter la charge du serveur.
Espace de stockage de destination Lors de la synchronisation complète des données, les opérations INSERT concurrentes provoquent une fragmentation dans les collections de destination. Après la synchronisation complète, le stockage de destination est plus important que celui de la source. De plus, comme les données sont écrites simultanément dans la base de données de destination lors de la synchronisation bidirectionnelle, l'espace de stockage de destination est généralement supérieur de 5 % à 10 % à celui de la source.
Autres sources d'écriture L'écriture de données depuis d'autres sources vers la destination pendant la synchronisation provoque une incohérence des données. Par exemple, l'exécution d'instructions DDL en ligne via Data Management Service (DMS) tandis que d'autres sources écrivent dans la destination peut entraîner une perte de données.
Collections mono-thread Les collections avec un index unique ou capped: true ne prennent en charge que les écritures mono-thread et ne prennent pas en charge la relecture concurrente lors de la synchronisation incrémentielle. Cela peut augmenter la latence de synchronisation.
Comportement des tâches avant et arrière Une instance de synchronisation bidirectionnelle contient une tâche avant (forward) et une tâche arrière (reverse). Lorsque les deux tâches synchronisent le même objet : une seule tâche peut synchroniser à la fois les données complètes et les données incrémentielles pour cet objet ; l'autre tâche synchronise uniquement les données incrémentielles. Les données synchronisées par une tâche ne sont pas utilisées comme source pour l'autre tâche.
Requêtes de comptage Utilisez db.$table_name.aggregate([{ $count:"myCount"}]) pour compter les documents dans la base de données de destination au lieu de la méthode standard count().
Conflits de clé primaire La base de données de destination ne doit pas déjà contenir de documents ayant la même clé primaire (_id par défaut) que la source. Si des conflits existent, supprimez les documents conflictuels de la destination avant de démarrer DTS, sans interrompre les services DTS.
Récupération en cas d'échec de tâche Si une tâche DTS échoue, l'assistance technique DTS tente de la restaurer dans un délai de 8 heures. La tâche peut être redémarrée pendant la restauration et les paramètres de la tâche (et non les paramètres de la base de données) peuvent être modifiés.

Configuration de la synchronisation bidirectionnelle des données

La synchronisation bidirectionnelle nécessite deux tâches : une tâche avant (Instance A vers Instance B) et une tâche arrière (Instance B vers Instance A). Configurez d'abord la tâche avant et attendez qu'elle atteigne l'état Running avant de configurer la tâche arrière.

Étape 1 : Ouvrir la page de synchronisation des données

Utilisez l'une des consoles suivantes.

Console DTS :

  1. Connectez-vous à la console DTS.

  2. Dans le volet de navigation de gauche, cliquez sur Data Synchronization.

  3. Dans le coin supérieur gauche, sélectionnez la région où réside l'instance de synchronisation des données.

Console DMS :

Le chemin exact du menu peut varier selon le mode et la disposition de la console DMS. Consultez les rubriques Mode simple et Personnalisation de la disposition et du style de la console DMS .
  1. Connectez-vous à la console DMS.

  2. Dans la barre de navigation supérieure, placez le pointeur sur Data + AI et choisissez DTS (DTS) > Data Synchronization.

  3. Dans la liste déroulante à droite de Data Synchronization Tasks, sélectionnez la région où réside l'instance.

Étape 2 : Créer la tâche avant

  1. Cliquez sur Create Task.

  2. (Facultatif) Cliquez sur New Configuration Page dans le coin supérieur droit.

    Ignorez cette étape si Back to Previous Version est affiché à la place. Utilisez la nouvelle page de configuration lorsqu'elle est disponible.
  3. Configurez les bases de données source et de destination.

    Paramètre Valeur
    Task Name Saisissez un nom descriptif. Les noms de tâches n'ont pas besoin d'être uniques.

    Paramètres de la base de données source :

    Paramètre Valeur
    Select Existing Connection Sélectionnez une base de données enregistrée existante ou configurez la connexion manuellement. Pour enregistrer une base de données, consultez la rubrique Gestion des connexions aux bases de données (console DTS) ou Enregistrement d'une instance de base de données Alibaba Cloud (console DMS).
    Database Type MongoDB
    Access Method Alibaba Cloud Instance
    Instance Region La région où réside l'instance source
    Replicate Data Across Alibaba Cloud Accounts Non (cet exemple utilise le même compte)
    Architecture Replica Set
    Migration Method Oplog
    Instance ID L'ID de l'instance ApsaraDB for MongoDB source
    Authentication Database La base de données d'authentification pour l'instance source. Par défaut : admin
    Database Account Le compte pour l'instance source. Requiert des autorisations de lecture sur la base de données source, la base de données config, la base de données admin et la base de données local. Consultez la rubrique Utilisation de DMS pour gérer les comptes de base de données.
    Database Password Le mot de passe du compte de la base de données source
    Encryption Sélectionnez Non-encrypted, SSL-encrypted ou Mongo Atlas SSL. Les options disponibles dépendent des paramètres Access Method et Architecture. SSL-encrypted n'est pas disponible lorsque Architecture est Sharded Cluster et Migration Method est Oplog.

    Paramètres de la base de données de destination :

    Paramètre Valeur
    Select Existing Connection Sélectionnez une base de données enregistrée existante ou configurez la connexion manuellement.
    Database Type MongoDB
    Access Method Alibaba Cloud Instance
    Instance Region La région où réside l'instance de destination
    Replicate Data Across Alibaba Cloud Accounts Non (cet exemple utilise le même compte)
    Architecture Replica Set
    Instance ID L'ID de l'instance ApsaraDB for MongoDB de destination
    Authentication Database La base de données d'authentification pour l'instance de destination. Par défaut : admin
    Database Account Le compte pour l'instance de destination. Requiert l'autorisation dbAdminAnyDatabase, des autorisations de lecture et d'écriture sur la base de données de destination et une autorisation de lecture sur la base de données local. Consultez la rubrique Utilisation de DMS pour gérer les comptes de base de données.
    Database Password Le mot de passe du compte de la base de données de destination
    Encryption Sélectionnez Non-encrypted, SSL-encrypted ou Mongo Atlas SSL. SSL-encrypted n'est pas disponible lorsque la destination est une instance de cluster fragmenté ApsaraDB for MongoDB.
  4. Cliquez sur Test Connectivity and Proceed.

    Assurez-vous que les blocs CIDR du serveur DTS sont ajoutés aux paramètres de sécurité des deux bases de données. Consultez la rubrique Ajout des blocs CIDR des serveurs DTS .
  5. Configurez les objets à synchroniser. À l'étape Configure Objects, définissez les paramètres suivants :

    ParamètreDescription
    Synchronization TypesSélectionnez Schema Synchronization, Full Data Synchronization et Incremental Data Synchronization. La synchronisation complète des données fournit la référence historique des données pour la synchronisation incrémentielle ultérieure.
    Synchronization TopologySélectionnez Two-way Synchronization.
    Processing Mode of Conflicting TablesPrecheck and Report Errors : échoue à la pré-vérification si la destination contient des collections portant les mêmes noms que la source. Utilisez le mappage des noms d'objets pour éviter les conflits si les collections ne peuvent pas être supprimées ou renommées. Ignore Errors and Proceed : ignore la vérification des conflits de noms. Si un enregistrement dans la destination a la même valeur de clé primaire ou de clé unique qu'un enregistrement source, DTS ne synchronise pas l'enregistrement source — l'enregistrement de destination est conservé.
    Avertissement

    La sélection de Ignore Errors and Proceed peut entraîner une incohérence des données.

    Exclude DDL OperationsSélectionnez Yes pour exclure les opérations DDL. Pour synchroniser les opérations DDL, sélectionnez No. Pour maintenir la stabilité de la synchronisation bidirectionnelle, synchronisez les opérations DDL uniquement dans le sens avant.
    Conflict Resolution PolicyDéfinissez sur Ignore (fixe). DTS ignore les instructions conflictuelles et conserve les enregistrements existants dans la destination.
    Capitalization of Object Names in Destination InstancePar défaut : DTS default policy. Ajustez si les bases de données source et de destination utilisent des conventions de casse différentes. Consultez la rubrique Spécification de la casse des noms d'objets dans l'instance de destination.
    Source ObjectsSélectionnez les bases de données ou les collections et cliquez sur 向右 pour les ajouter à Selected Objects.
    Selected ObjectsCliquez avec le bouton droit sur un objet pour le renommer dans la destination (consultez la rubrique Mappage des noms d'objets), configurez la portée de la synchronisation incrémentielle ou ajoutez des conditions de filtre pour la synchronisation complète des données. Cliquez sur un objet puis sur image pour le supprimer. Les conditions de filtre s'appliquent uniquement à la synchronisation complète des données, pas à la synchronisation incrémentielle.
  6. 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 ?.
    Retry Time for Failed Connections Durée pendant laquelle DTS réessaie une connexion échouée avant de marquer la tâche comme échouée. Plage : 10–1 440 minutes. Par défaut : 720 minutes. Définissez sur plus de 30 minutes. Si plusieurs tâches partagent la même base de données source ou de destination, le temps de retry le plus court s'applique. DTS facture l'instance pendant la période de retry.
    Retry Time for Other Issues Durée pendant laquelle DTS réessaie les opérations DDL ou DML échouées. Plage : 1–1 440 minutes. Par défaut : 10 minutes. Définissez sur plus de 10 minutes. Doit être inférieur à Retry Time for Failed Connections.
    Enable Throttling for Full Data Migration Limitez les QPS vers la base de données source, les RPS et la vitesse de migration des données (Mo/s) pour réduire la charge sur la destination. Affiché uniquement lorsque Full Data Synchronization est sélectionné.
    Only one data type for primary key _id in a single table Yes : DTS ignore l'analyse du type de données _id lors de la synchronisation complète (plus rapide). No : DTS analyse et gère les types _id mixtes. Affiché uniquement lorsque Full Data Synchronization est sélectionné.
    Enable Throttling for Incremental Data Synchronization Limitez les RPS et la vitesse de synchronisation des données (Mo/s) pour la synchronisation incrémentielle afin de réduire la charge sur la destination.
    Environment Tag Étiquetez l'instance DTS par environnement. Facultatif.
    Configure ETL Activez l'extraction, la transformation et le chargement (ETL) pour appliquer une logique de traitement des données pendant la synchronisation. Consultez les rubriques Qu'est-ce que l'ETL ? et Configuration de l'ETL dans une tâche de migration ou de synchronisation de données.
    Monitoring and Alerting Configurez des alertes pour les échecs de tâche ou la latence de synchronisation dépassant un seuil. Consultez la rubrique Configuration de la surveillance et des alertes.
  7. Cliquez sur Next Step: Data Verification pour configurer la vérification des données. Consultez la rubrique Configuration d'une tâche de vérification des données.

  8. Enregistrez la tâche et exécutez la pré-vérification.

    • Pour prévisualiser les paramètres d'API pour cette configuration de tâche, survolez Next: Save Task Settings and Precheck et cliquez sur Preview OpenAPI parameters.

    • Cliquez sur Next: Save Task Settings and Precheck pour continuer.

    - DTS exécute une pré-vérification avant de démarrer la tâche. La tâche démarre uniquement après réussite de la pré-vérification. - Si la pré-vérification échoue, cliquez sur View Details à côté de l'élément échoué, résolvez le problème et cliquez sur Precheck Again . - Si la pré-vérification renvoie une alerte : - Pour les alertes qui ne peuvent pas être ignorées : résolvez le problème et relancez la pré-vérification. - Pour les alertes qui peuvent être ignorées : cliquez sur Confirm Alert Details , puis Ignore , puis OK , et enfin Precheck Again . Ignorer les alertes peut entraîner une incohérence des données.
  9. Achetez l'instance. La tâche avant apparaît dans la liste des tâches. Surveillez sa progression à cet endroit.

    1. Attendez que le Success Rate atteigne 100%, puis cliquez sur Next: Purchase Instance.

    2. Sur la page buy, configurez la facturation et les paramètres de l'instance.

      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 : facturé à l'heure (adapté à une utilisation à court terme ; libérez l'instance une fois terminée pour arrêter les frais).
      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 une classe d'instance en fonction de la vitesse de synchronisation requise. Consultez la rubrique Classes d'instances des instances de synchronisation de données.
      Subscription Duration Disponible lorsque Billing Method est Subscription. Options : 1–9 mois, 1 an, 2 ans, 3 ans ou 5 ans.
    3. Sélectionnez Data Transmission Service (Pay-as-you-go) Service Terms.

    4. Cliquez sur Buy and Start, puis sur OK dans la boîte de dialogue de confirmation.

Étape 3 : Configurer la tâche arrière

  1. Attendez que le Status de la tâche avant passe à Running.

  2. Trouvez la tâche arrière dans la liste des tâches et cliquez sur Configure Task.

  3. Configurez la tâche arrière en répétant les étapes 2 à 8 de la section Étape 2 : Création de la tâche avant, avec les différences suivantes :

    Important

    - Inverser la source et la destination : La source pour la tâche arrière est la destination de la tâche avant, et la destination est la source de la tâche avant. Vérifiez que la région de l'instance, le nom de la base de données, le compte et le mot de passe sont corrects pour la direction inversée. - N'utilisez pas le mappage des noms d'objets dans la tâche arrière. Le mappage des noms d'objets dans la direction inverse peut entraîner une incohérence des données. - Instance Region ne peut pas être modifié pour la tâche arrière. - Processing Mode of Conflicting Tables: Sélectionnez Ignore Errors and Proceed pour les collections déjà synchronisées vers la destination dans la direction avant. - Les objets de la liste Selected Objects de la tâche avant ne peuvent pas être sélectionnés à nouveau pour la tâche arrière. - La tâche arrière ignore les opérations DDL quel que soit le paramètre Exclude DDL Operations.

  4. Attendez que le Success Rate atteigne 100%, puis cliquez sur Back.

Lorsque la tâche avant et la tâche arrière affichent toutes deux un Status de Running, la synchronisation bidirectionnelle des données est active.

Étapes suivantes

  • Surveillez la latence de synchronisation et l'état de santé de la tâche dans la liste des tâches de la console DTS.

  • Configurez des alertes pour être notifié en cas d'échec de la tâche ou si la latence dépasse les niveaux acceptables. Consultez la rubrique Configuration de la surveillance et des alertes.

  • Vérifiez que les données sont cohérentes entre les instances en configurant une tâche de vérification des données. Consultez la rubrique Configuration d'une tâche de vérification des données.