Cette rubrique explique comment utiliser DTS pour migrer les données d'une instance ApsaraDB for MongoDB en réplica set vers une instance ApsaraDB for MongoDB en réplica set ou en cluster fragmenté.
Bases de données source et destination prises en charge
|**Base de données source (réplica set)**
|
**Base de données destination (réplica set ou cluster fragmenté)**
| | --- | --- | |
ApsaraDB for MongoDB
|
ApsaraDB for MongoDB
| |
Base de données autogérée sur une instance ECS
|
Base de données autogérée sur une instance ECS
| |
Base de données autogérée connectée via Express Connect, VPN Gateway ou Smart Access Gateway
|
Base de données autogérée connectée via Express Connect, VPN Gateway ou Smart Access Gateway
| |
Base de données autogérée disposant d'une adresse IP publique
|
Base de données autogérée disposant d'une adresse IP publique
|
Cette rubrique détaille le processus de configuration en prenant pour exemple une instance ApsaraDB for MongoDB (réplica set) et une instance ApsaraDB for MongoDB (réplica set ou cluster fragmenté). La procédure est similaire pour les autres sources de données.
Prérequis
-
Une instance source ApsaraDB for MongoDB en réplica set et une instance destination ApsaraDB for MongoDB (réplica set ou cluster fragmenté) ont été créées. Pour plus d'informations, consultez les rubriques Créer une instance en réplica set et Créer une instance en cluster fragmenté.
RemarquePour connaître les versions prises en charge, consultez la rubrique Présentation des solutions de migration.
L'espace de stockage de l'instance destination ApsaraDB for MongoDB doit être supérieur de 10 % à l'espace utilisé par l'instance source ApsaraDB for MongoDB.
-
Si l'instance destination ApsaraDB for MongoDB est un cluster fragmenté, créez les bases de données et collections nécessitant un fragmentation, configurez le sharding des données, activez l'équilibreur de charge (balancer) et effectuez un pré-sharding dans l'instance destination ApsaraDB for MongoDB selon vos besoins. Pour plus d'informations, consultez les rubriques Configurer le sharding des données pour optimiser les performances des shards et Gérer la distribution inégale des données dans un cluster fragmenté MongoDB.
RemarqueLa configuration du sharding des données empêche la migration de toutes les données vers un seul shard, garantissant ainsi des performances optimales pour le cluster. L'activation de l'équilibreur de charge et le pré-sharding évitent le déséquilibre des données.
Notes d'utilisation
Type | Description |
Limitations de la base de données source |
|
Autres limitations |
|
Cas particuliers | Si la base de données source est une base de données MongoDB autogérée :
Remarque Si vous migrez une base de données entière, vous pouvez également créer une table de heartbeat mise à jour à intervalles réguliers, par exemple toutes les secondes. |
Facturation
|
Type de migration |
Frais de configuration de l'instance |
Frais de trafic Internet |
|
Migration du schéma et migration complète des données |
Gratuit. |
Lorsque le paramètre Access Method de la base de données destination est défini sur Public IP Address, des frais de trafic Internet vous sont facturés. Pour plus d'informations, consultez la rubrique Présentation de la facturation. |
|
Migration incrémentielle des données |
Facturé. Pour plus d'informations, consultez la rubrique Présentation de la facturation. |
Types de migration
Type | Description |
Migration du schéma | DTS migre les schémas des objets sélectionnés depuis l'instance ApsaraDB for MongoDB source vers l'instance ApsaraDB for MongoDB de destination. Remarque DTS prend en charge la migration du schéma pour les bases de données, les collections et les index. |
Migration complète des données | DTS migre toutes les données existantes des objets sélectionnés depuis l'instance ApsaraDB for MongoDB source vers l'instance ApsaraDB for MongoDB de destination. Remarque DTS prend en charge la migration complète des données pour les bases de données et les collections. |
Migration incrémentielle des données | Une fois la migration complète des données terminée, DTS réplique les modifications de données en cours depuis l'instance ApsaraDB for MongoDB source vers l'instance ApsaraDB for MongoDB de destination. Utiliser oplogDTS ne réplique pas les données provenant des bases de données créées après le démarrage de la tâche. Les mises à jour incrémentielles suivantes sont prises en charge :
Utiliser change streamsLes mises à jour incrémentielles suivantes sont prises en charge :
|
Autorisations des comptes de base de données
Base de données | Migration du schéma | Migration complète des données | Migration incrémentielle des données |
Instance ApsaraDB for MongoDB source | Autorisation de lecture sur la base de données à migrer et sur la base de données config. | Autorisation de lecture sur la base de données à migrer, sur la base de données admin et sur la base de données local. | |
Instance ApsaraDB for MongoDB de destination | L'autorisation dbAdminAnyDatabase, l'autorisation readWrite sur la base de données de destination et l'autorisation de lecture sur la base de données local. | ||
Pour créer et autoriser des comptes de base de données pour les instances ApsaraDB for MongoDB source et de destination, consultez la rubrique Gérer les utilisateurs de base de données MongoDB avec DMS.
Procédure
-
Accédez à la page de liste des tâches de migration pour la région de destination en utilisant l'une des méthodes suivantes.
Depuis la console DTS
Connectez-vous à la console Data Transmission Service (DTS).
Dans le volet de navigation de gauche, cliquez sur Data Migration.
Dans l’angle supérieur gauche de la page, sélectionnez la région où se trouve l’instance de migration.
Depuis la console DMS
RemarqueLes opérations réelles peuvent varier en fonction du mode et de la disposition de la console DMS. Pour plus d'informations, consultez les rubriques Console en mode simple et Personnaliser la disposition et le style de la console DMS.
Connectez-vous à la console Data Management (DMS).
Dans la barre de menu supérieure, choisissez .
À droite de Data Migration Tasks, sélectionnez la région où se trouve l'instance de migration.
Cliquez sur Create Task pour accéder à la page de configuration de la tâche.
-
Configurez les bases de données source et de destination.
AvertissementAprès avoir sélectionné les instances source et de destination, nous vous recommandons de lire attentivement les limites affichées en haut de la page. À défaut, la tâche pourrait échouer ou entraîner une incohérence des données.
Catégorie
Paramètre
Description
S.O.
Task Name
DTS génère automatiquement un nom de tâche. Nous vous recommandons de spécifier un nom descriptif pour faciliter l'identification. Le nom n'a pas besoin d'être unique.
Source Database
Select Existing Connection
Pour utiliser une instance de base de données qui a été ajoutée au système (créée ou enregistrée), sélectionnez l'instance de base de données souhaitée dans la liste déroulante. Les informations de la base de données ci-dessous seront configurées automatiquement.
RemarqueDans la console DMS, ce paramètre est nommé Select a DMS database instance..
Si vous n'avez pas enregistré l'instance de base de données auprès du système, ou si vous n'avez pas besoin d'utiliser une instance enregistrée, configurez manuellement les informations de la base de données ci-dessous.
Database Type
Sélectionnez MongoDB.
Access Method
Sélectionnez Cloud Instance.
Instance Region
Sélectionnez la région où se trouve l'instance ApsaraDB for MongoDB source.
Replicate Data Across Alibaba Cloud Accounts
Dans cet exemple, une instance de base de données appartenant au compte Alibaba Cloud actuel est utilisée. Sélectionnez No.
Architecture
Sélectionnez Replica set architecture.
replica set architecture : modèle de déploiement utilisant plusieurs nœuds pour garantir la haute disponibilité et permettre la séparation lecture/écriture. Pour plus d'informations, consultez la rubrique replica set architecture.
sharded cluster architecture : modèle de déploiement composé des composants mongos, shard et ConfigServer. Vous pouvez personnaliser le nombre et les configurations des nœuds mongos et shard. Pour plus d'informations, consultez la rubrique sharded cluster architecture.
Migration Method
Sélectionnez une méthode de migration incrémentielle des données en fonction de vos besoins.
Oplog (recommandé) :
Cette option est disponible si Oplog est activé pour la base de données source.
RemarqueOplog est activé par défaut pour les bases de données MongoDB autogérées et les instances ApsaraDB for MongoDB. Cette méthode offre une latence plus faible pour la migration incrémentielle des données grâce à une extraction plus rapide des journaux. Par conséquent, nous vous recommandons de sélectionner Oplog.
ChangeStream : cette option est disponible si Change Streams sont activés pour la base de données source.
RemarqueSi la base de données source est une instance Amazon DocumentDB (cluster non élastique), vous ne pouvez sélectionner que ChangeStream.
Si vous définissez Architecture sur Sharded Cluster pour la base de données source, vous n'avez pas besoin de saisir un Shard account ni un Shard password.
Instance ID
Sélectionnez l'ID d'instance de l'instance ApsaraDB for MongoDB source.
Authentication Database Name
Saisissez le nom de la base de données à laquelle appartient le compte de base de données de l'instance ApsaraDB for MongoDB source. La valeur par défaut est admin.
Database Account
Saisissez le compte de base de données de l'instance ApsaraDB for MongoDB source. Pour connaître les exigences en matière d'autorisations, consultez la section Autorisations du compte de base de données.
Database Password
Saisissez le mot de passe du compte de base de données.
Encryption
DTS prend en charge trois méthodes de connexion : Non-encrypted, SSL-encrypted et Mongo Atlas SSL. Les options disponibles pour Encryption varient en fonction de la Access Method et de l'Architecture sélectionnées. Les options affichées dans la console font foi.
Remarque-
Une base de données MongoDB dont l'Architecture est Sharded Cluster et dont la Migration Method est Oplog ne prend pas en charge SSL-encrypted.
-
Si la source est une base de données MongoDB autogérée (Access Method n'est pas Alibaba Cloud Instance) avec une architecture Replica Set, et que vous sélectionnez SSL-encrypted, DTS vous permet également de télécharger un certificat CA pour vérifier la connexion.
Destination Database
Select Existing Connection
Pour utiliser une instance de base de données qui a été ajoutée au système (créée ou enregistrée), sélectionnez l'instance de base de données souhaitée dans la liste déroulante. Les informations de la base de données ci-dessous seront configurées automatiquement.
RemarqueDans la console DMS, ce paramètre est nommé Select a DMS database instance..
Si vous n'avez pas enregistré l'instance de base de données auprès du système, ou si vous n'avez pas besoin d'utiliser une instance enregistrée, configurez manuellement les informations de la base de données ci-dessous.
Database Type
Sélectionnez MongoDB.
Access Method
Sélectionnez Cloud Instance.
Instance Region
Sélectionnez la région où se trouve l'instance ApsaraDB for MongoDB de destination.
Replicate Data Across Alibaba Cloud Accounts
Dans cet exemple, une instance de base de données appartenant au compte Alibaba Cloud actuel est utilisée. Sélectionnez No.
Architecture
Sélectionnez une architecture en fonction de vos besoins métier. Valeurs possibles :
replica set architecture : modèle de déploiement utilisant plusieurs nœuds pour garantir la haute disponibilité et permettre la séparation lecture/écriture. Pour plus d'informations, consultez la rubrique replica set architecture.
sharded cluster architecture : modèle de déploiement composé des composants mongos, shard et ConfigServer. Vous pouvez personnaliser le nombre et les configurations des nœuds mongos et shard. Pour plus d'informations, consultez la rubrique sharded cluster architecture.
Instance ID
Sélectionnez l'ID d'instance de l'instance ApsaraDB for MongoDB de destination.
Authentication Database Name
Saisissez le nom de la base de données à laquelle appartient le compte de base de données de l'instance ApsaraDB for MongoDB de destination. La valeur par défaut est admin.
Database Account
Saisissez le compte de base de données de l'instance ApsaraDB for MongoDB de destination. Pour connaître les exigences en matière d'autorisations, consultez la section Autorisations du compte de base de données.
Database Password
Saisissez le mot de passe du compte de base de données.
Encryption
DTS prend en charge trois méthodes de connexion : Non-encrypted, SSL-encrypted et Mongo Atlas SSL. Les options disponibles pour Encryption varient en fonction de la Access Method et de l'Architecture sélectionnées. Les options affichées dans la console font foi.
Remarque-
Les bases de données MongoDB dont l'Architecture est Sharded Cluster ne prennent pas en charge SSL-encrypted.
-
Si la destination est une base de données MongoDB autogérée (Access Method n'est pas Alibaba Cloud Instance) avec une architecture Replica Set, et que vous sélectionnez SSL-encrypted, DTS vous permet également de télécharger un certificat CA pour vérifier la connexion.
-
Une fois la configuration terminée, cliquez sur Test Connectivity and Proceed en bas de la page.
RemarqueAssurez-vous que les plages CIDR des serveurs DTS ont été ajoutées aux paramètres de sécurité des bases de données source et de destination pour autoriser l'accès depuis les serveurs DTS. Cette opération peut être effectuée automatiquement ou manuellement. Pour plus d'informations, consultez la rubrique Ajouter les plages CIDR des serveurs DTS à une liste d'autorisation.
Si la base de données source ou de destination est une base de données autogérée (où la Access Method n'est pas Alibaba Cloud Instance), vous devez également cliquer sur Test Connectivity dans la boîte de dialogue CIDR Blocks of DTS Servers.
-
Configurez les objets de la tâche.
-
Sur la page Configure Objects, configurez les objets que vous souhaitez migrer.
Parameter
Description
Migration Types
Si vous devez uniquement effectuer une migration complète, sélectionnez à la fois Schema Migration et Full Data Migration.
Pour réaliser une migration sans interruption de service, sélectionnez Schema Migration, Full Data Migration et Incremental Data Migration.
RemarqueSi vous ne sélectionnez pas Schema Migration, vous devez vous assurer qu'une base de données et des tables destinées à recevoir les données existent dans la base de données de destination. Vous pouvez également utiliser la fonctionnalité de mappage des noms d'objets dans la zone Selected Objects selon vos besoins.
Si vous ne sélectionnez pas Incremental Data Migration, n'écrivez aucune nouvelle donnée dans l'instance source pendant la migration afin de garantir la cohérence des données.
Pour plus d'informations, consultez la section Types de migration.
Processing Mode of Conflicting Tables
Precheck and Report Errors : vérifie l'existence de collections portant le même nom dans la base de données de destination. Si aucune collection homonyme n'existe, la prévérification est validée. En cas de collision de noms, une erreur est signalée lors de la prévérification et la tâche de migration ne démarre pas.
RemarqueSi une collection de la base de données de destination porte le même nom mais ne peut pas être facilement supprimée ou renommée, vous pouvez modifier le nom de cette collection dans la base de données de destination. Pour en savoir plus, consultez la rubrique Mappage des noms d'objets.
Ignore Errors and Proceed : ignore la vérification des collections portant le même nom.
AvertissementLe choix de l'option Ignore Errors and Proceed peut entraîner des incohérences de données et présenter des risques pour votre activité. Par exemple :
Si un enregistrement de la base de données de destination possède la même valeur de clé primaire qu'un enregistrement de la base de données source, l'enregistrement de destination est conservé. L'enregistrement provenant de la source n'est pas migré vers la destination.
L'initialisation des données peut échouer, seule une partie des données peut être migrée ou la migration peut échouer complètement.
Capitalization of Object Names in Destination Instance
Vous pouvez configurer la règle de casse appliquée aux noms des bases de données et des collections migrés dans l'instance de destination. Par défaut, l'option DTS default policy est sélectionnée. Vous avez également la possibilité d'aligner la configuration sur les politiques par défaut de la base de données source ou de destination. Pour plus de détails, reportez-vous à la section Politique de casse des noms d'objets pour la destination.
Source Objects
Dans la zone Source Objects, cliquez sur un objet à migrer, puis cliquez sur l'icône
pour le déplacer vers la zone Selected Objects.RemarqueVous pouvez sélectionner des objets au niveau DATABASE ou COLLECTION pour la migration.
Selected Objects
Pour définir le nom d'un objet migré dans l'instance de destination, ou pour spécifier l'objet recevant les données dans cette instance, faites un clic droit sur l'objet de migration dans la zone Selected Objects afin d'effectuer les modifications nécessaires. Consultez la rubrique Mappage des noms d'objets pour plus d'informations.
Pour supprimer un objet de migration sélectionné, cliquez dessus dans la zone Selected Objects, puis cliquez sur
pour le renvoyer dans la zone Source Objects.
RemarquePour sélectionner les opérations de migration incrémentielle au niveau de la base de données ou de la collection, faites un clic droit sur l'objet de migration dans la zone Selected Objects et effectuez votre choix dans la boîte de dialogue qui s'affiche.
Pour définir des conditions de filtrage des données (pris en charge lors de la migration complète des données, mais pas lors de la migration incrémentielle), faites un clic droit sur la collection dans la zone Selected Objects et configurez les paramètres dans la boîte de dialogue correspondante. Suivez les instructions de la rubrique Définir des conditions de filtrage.
Si vous utilisez la fonctionnalité de mappage des noms d'objets pour désigner une base de données ou une collection comme réceptacle des données, la migration d'autres objets dépendants de cet objet risque d'échouer.
-
Cliquez sur Next: Advanced Settings pour configurer les paramètres avancés.
Parameter
Description
Dedicated Cluster for Task Scheduling
Par défaut, DTS planifie les tâches sur un cluster partagé. Aucune sélection n'est requise. Si vous souhaitez une stabilité accrue pour vos tâches, vous pouvez acheter un cluster dédié pour exécuter les tâches de migration DTS.
Retry Time for Failed Connections
Une fois la tâche de migration démarrée, si la connexion à la base de données source ou de destination échoue, DTS signale une erreur et tente immédiatement de rétablir la connexion. La durée de nouvelle tentative par défaut est de 720 minutes. Vous pouvez personnaliser cette durée entre 10 et 1 440 minutes. Il est recommandé de définir une durée supérieure à 30 minutes. Si DTS parvient à se reconnecter aux bases de données source et de destination dans le délai imparti, la tâche de migration reprend automatiquement. Dans le cas contraire, la tâche échoue.
RemarquePour plusieurs instances DTS partageant la même source ou la même destination, le temps de nouvelle tentative réseau est déterminé par le paramétrage de la dernière tâche créée.
Étant donné que la tâche est facturée pendant la période de nouvelle tentative de connexion, nous vous conseillons de personnaliser la durée de nouvelle tentative en fonction de vos besoins métier, ou de libérer l'instance DTS dès que possible après la libération des instances de base de données source et de destination.
Retry Time for Other Issues
Après le démarrage de la tâche de migration, si un problème autre qu'un défaut de connectivité survient dans la base de données source ou de destination (par exemple, une exception lors de l'exécution d'une instruction DDL ou DML), DTS signale une erreur et tente immédiatement de relancer l'opération. La durée de nouvelle tentative par défaut est de 10 minutes. Vous pouvez personnaliser cette durée entre 1 et 1 440 minutes. Il est recommandé de définir une durée supérieure à 10 minutes. Si les opérations concernées aboutissent dans le délai de nouvelle tentative spécifié, la tâche de migration reprend automatiquement. Sinon, la tâche échoue.
ImportantLa valeur du paramètre Retry Time for Other Issues doit être inférieure à celle du paramètre Retry Time for Failed Connections.
Enable Throttling for Full Data Migration
Lors de la migration complète, DTS consomme des ressources de lecture et d'écriture sur les bases de données source et de destination, ce qui peut augmenter leur charge. Si nécessaire, vous pouvez activer la limitation du débit pour la tâche de migration complète. Définissez les paramètres Queries per second (QPS) to the source database, RPS of Full Data Migration et Data migration speed for full migration (MB/s) afin de réduire la charge sur la base de données de destination.
RemarqueCet élément de configuration est disponible uniquement si vous sélectionnez l'option Full Data Migration pour le paramètre Migration Types.
Vous pouvez également ajuster la vitesse de migration complète une fois l'instance de migration en cours d'exécution.
Only one data type for primary key _id in a table of the data to be synchronized
Indique si le type de données de la clé primaire
_idest unique au sein d'une seule collection à migrer.ImportantSélectionnez une option en fonction de vos besoins. À défaut, des pertes de données pourraient survenir.
Ce paramètre est disponible uniquement si vous sélectionnez l'option Full Data Migration pour le paramètre Migration Types.
Yes : le type de données est unique. Lors de la migration complète des données, DTS n'analyse pas les types de données des clés primaires dans la base de données source. Au sein d'une seule collection, DTS migre uniquement les données correspondant à un seul type de données de clé primaire.
No : le type de données n'est pas unique. Lors de la migration complète des données, DTS analyse les types de données des clés primaires dans la base de données source et migre toutes les données.
Enable Throttling for Incremental Data Migration
Si nécessaire, vous pouvez également choisir de limiter la vitesse de la tâche de migration incrémentielle. Définissez les paramètres RPS of Incremental Data Migration et Data migration speed for incremental migration (MB/s) afin de réduire la charge sur la base de données de destination.
RemarqueCet élément de configuration est disponible uniquement si vous sélectionnez l'option Incremental Data Migration pour le paramètre Migration Types.
Vous pouvez également ajuster la vitesse de migration incrémentielle une fois l'instance de migration en cours d'exécution.
Environment Tag
Vous pouvez sélectionner un tag d'environnement pour identifier l'instance. Dans cet exemple, ce paramètre est facultatif.
Configure ETL
Selon vos besoins métier, choisissez ou non de configurer la fonctionnalité ETL pour traiter les données.
Yes : configure la fonctionnalité ETL. Vous devez également saisir des instructions de traitement des données dans la zone de texte.
No : ne configure pas la fonctionnalité ETL.
Monitoring and Alerting
Choisissez ou non de configurer des alertes et de recevoir des notifications d'alerte en fonction de vos besoins métier.
No : ne configure aucune alerte.
Yes : configurez les alertes en définissant un seuil d'alerte et des notifications d'alerte. En cas d'échec de la migration ou si la latence dépasse le seuil défini, le système envoie une notification d'alerte.
-
Cliquez sur Next: Data Validation pour configurer une tâche de validation des données.
Pour plus d'informations sur la fonctionnalité de validation des données, consultez la rubrique Configurer la validation des données.
-
-
Enregistrez la tâche et exécutez une prévérification.
Pour afficher les paramètres de configuration de cette instance lors de l'appel de l'opération API, placez le pointeur sur le bouton Next: Save Task Settings and Precheck et cliquez sur Preview OpenAPI parameters dans la bulle qui s'affiche.
Si vous n'avez pas besoin de consulter les paramètres API ou si vous avez terminé leur consultation, cliquez sur Next: Save Task Settings and Precheck en bas de la page.
RemarqueAvant le démarrage de la tâche de migration, DTS effectue une prévérification. La tâche ne démarre qu'après la réussite de cette étape.
Si la prévérification échoue, cliquez sur View Details à côté de l'élément ayant échoué, corrigez le problème selon les instructions, puis relancez la prévérification.
-
Si un avertissement est émis lors de la prévérification :
Pour les éléments de vérification qui ne peuvent pas être ignorés, cliquez sur View Details à côté de l'élément ayant échoué, corrigez le problème selon les instructions, puis relancez la prévérification.
Pour les éléments de vérification pouvant être ignorés, vous pouvez cliquer sur Confirm Alert Details, Ignore, OK et Precheck Again afin d'ignorer l'avertissement et de relancer la prévérification. Notez que l'ignorance d'un avertissement peut entraîner des problèmes tels que des incohérences de données et présenter des risques pour votre activité.
-
Achetez l'instance.
Lorsque le Success Rate atteint 100 %, cliquez sur Next: Purchase Instance.
-
Sur la page Purchase, sélectionnez la spécification de lien pour l'instance de migration des données. Pour plus d'informations, consultez le tableau ci-dessous.
Catégorie
Paramètre
Description
New Instance Class
Resource Group Settings
Sélectionnez le groupe de ressources auquel appartient l'instance. La valeur par défaut est le groupe de ressources par défaut. Pour plus d'informations, consultez Qu'est-ce que la gestion des ressources ?
Instance Class
DTS propose des spécifications de migration offrant différents niveaux de performance. La spécification du lien influence la vitesse de migration. Vous pouvez choisir une spécification adaptée à votre scénario métier. Pour plus d'informations, consultez Spécifications des liens de migration des données.
Une fois la configuration terminée, lisez et acceptez les Data Transmission Service (Pay-as-you-go) Service Terms.
-
Cliquez sur Buy and Start. Dans la boîte de dialogue OK qui s'affiche, cliquez sur OK.
Vous pouvez suivre la progression de la tâche de migration sur la page de liste Data Migration Tasks.
RemarqueSi la tâche de migration n'inclut pas de migration incrémentielle, elle s'arrête automatiquement une fois la migration complète terminée. Une fois la tâche arrêtée, son Status passe à Completed.
Si la tâche de migration inclut une migration incrémentielle, elle ne s'arrête pas automatiquement. La tâche de migration incrémentielle continue de s'exécuter. Pendant l'exécution de la tâche de migration incrémentielle, le Status de la tâche est Running.
FAQ
-
Pourquoi observez-vous une latence des tâches et une incohérence des données, même en l’absence d’écritures actives depuis les applications ?
-
Cause : Ce problème résulte d’un conflit entre le mécanisme de suppression automatique d’un
TTL indexsur unecollectionMongoDB et le mécanisme dedata synchronizationde DTS. Ce conflit engendre unetask latencyet unedata inconsistency.Les suppressions redondantes réduisent l’efficacité : Lorsque l’index TTL source supprime les données expirées, il inscrit une opération DELETE dans l’Oplog. DTS rejoue cette suppression sur la destination. Si l’index TTL de la destination a déjà supprimé ces mêmes données, MongoDB renvoie un nombre de lignes affectées inattendu, ce qui déclenche la gestion des exceptions et ralentit la migration.
-
Incohérence des données due à la suppression asynchrone par TTL : Les index TTL ne suppriment pas les données en temps réel. Il est possible que des données expirées soient encore présentes sur la source alors qu’elles ont déjà été supprimées sur la destination, provoquant ainsi une incohérence.
Exemple :
L’Oplog ou le ChangeStream de MongoDB n’enregistre que les champs modifiés lors d’une opération UPDATE, et non le document complet. Si une opération UPDATE ne trouve pas les données cibles sur la destination, DTS ignore l’opération.
|
**Moment**
|
**Instance source**
|
**Instance de destination**
| | --- | --- | --- | |
1
|
Le service insère des données
|
| |
2
|
|
DTS synchronise l’opération INSERT
| |
3
|
Les données ont expiré mais n’ont pas encore été supprimées par l’index TTL
|
| |
4
|
Le service met à jour les données (par exemple, il modifie le champ de l’index TTL pour changer l’heure d’expiration)
|
| |
5
|
|
L’index TTL supprime les données
| |
6
|
|
DTS synchronise l’opération UPDATE, mais les données sont introuvables. L’opération est ignorée.
|Par conséquent, ce document est absent de l’instance MongoDB de destination.
Solution : Pour résoudre ce problème, modifiez temporairement la durée d’expiration de l’
TTL indexsur latargetpendant lasynchronization/migration task. Cette approche garantit à la fois l’efficacité de la synchronisation et ladata consistency. Pour plus de détails, consultez la rubrique Bonnes pratiques pour la synchronisation ou la migration de collections avec des index TTL depuis une source MongoDB.
-