Tous les produits
Search
Centre de documentation

:FAQ

Dernière mise à jour :Aug 31, 2026

Trouvez des solutions aux problèmes courants liés au service Data Transmission Service (DTS) par catégorie, ou recherchez des codes d'erreur spécifiques dans Erreurs courantes.

Catégories de problèmes

Les problèmes fréquents se répartissent dans les catégories suivantes :

Problèmes de facturation

Comment DTS est-il facturé ?

DTS prend en charge la facturation par abonnement et le paiement à l'utilisation. Aperçu de la facturation.

Comment consulter les factures DTS ?

Pour consulter les factures DTS, reportez-vous à Consulter les factures.

Les instances en pause sont-elles facturées ?

  • Les instances de migration de données en pause ne sont pas facturées.

  • Lors de la suspension d'une instance de synchronisation de données, la facturation continue de s'appliquer, que la base de données source ou de destination soit accessible ou non. En effet, durant cette période, DTS interrompt uniquement l'écriture des données dans la base de données de destination, mais continue de consommer des ressources telles que le CPU et la mémoire pour maintenir les connexions persistantes avec la base de données et extraire les journaux de la base de données source, permettant ainsi une reprise rapide de l'instance après son redémarrage.

Pourquoi la synchronisation des données est-elle plus coûteuse que la migration des données ?

La synchronisation des données offre des fonctionnalités plus avancées, telles que la modification en ligne des objets de synchronisation et la synchronisation bidirectionnelle entre les bases de données MySQL. Elle utilise également la transmission via le réseau interne pour réduire la latence.

Quelles sont les conséquences des impayés ?

Consultez Expiration ou paiements en retard.

Comment résilier anticipativement une tâche par abonnement ?

Commencez par basculer la méthode de facturation vers le paiement à l'utilisation, puis libérez la tâche. Basculer entre les méthodes de facturation.

Puis-je passer la méthode de facturation d'une tâche de l'abonnement au paiement à l'utilisation ?

Oui. Basculer entre les méthodes de facturation.

Puis-je passer la méthode de facturation d'une tâche du paiement à l'utilisation à l'abonnement ?

Oui, cela est possible pour les tâches de synchronisation des données ou de suivi des modifications. Basculer entre les méthodes de facturation.

Remarque

Les tâches de migration de données prennent uniquement en charge la méthode de facturation par paiement à l'utilisation.

Pourquoi ma tâche DTS a-t-elle soudainement commencé à générer des frais ?

La période d'essai gratuit de l'instance a peut-être expiré. DTS propose des essais gratuits pour les tâches dont la destination est un moteur de base de données développé par Alibaba Cloud. Une fois l'essai terminé, la facturation standard s'applique.

Pourquoi suis-je toujours facturé pour une tâche libérée ?

Les factures DTS en paiement à l'utilisation sont générées quotidiennement. Vous êtes facturé pour le jour où vous libérez la tâche, car vous avez utilisé le service DTS ce jour-là.

Comment fonctionne la facturation par paiement à l'utilisation ?

Une tâche en paiement à l'utilisation n'est facturée que lorsqu'elle est en cours d'exécution. Cette période inclut le temps pendant lequel une tâche de Incremental Data Synchronization est en pause, mais n'inclut pas le temps pendant lequel une tâche de Incremental Data Migration est en pause. Méthode de facturation.

DTS facture-t-il le trafic ?

Certaines tâches DTS engendrent des frais pour le trafic réseau public et le transfert de données, indépendamment des régions des bases de données source et de destination. Une tâche de migration entraîne des frais de trafic réseau public si la Access Method pour la base de données de destination est définie sur Public IP Address. Une tâche de validation complète en mode Full field validation by row sampling entraîne des frais de trafic de données en fonction du volume de données validées. Éléments facturables.

Problèmes de performances et de spécifications

Quelles sont les différences entre les types d'instances ?

Consultez Spécifications des liens de migration de données et Spécifications des liens de synchronisation de données.

Puis-je mettre à niveau le type d'instance ?

Oui. Mettre à niveau les spécifications de lien d'une instance.

Puis-je rétrograder le type d'instance ?

Actuellement, seules les instances de synchronisation de données peuvent être rétrogradées. Rétrograder les spécifications d'une instance de synchronisation de données.

Puis-je rétrograder le type d'instance d'une tâche DTS ?

Vous pouvez rétrograder les spécifications de lien pour les tâches DTS éligibles. Rétrograder les spécifications de lien d'une instance.

Puis-je rétrograder une tâche DTS vers une spécification inférieure à moyenne ?

Non pris en charge.

Combien de temps faut-il pour synchroniser ou migrer les données ?

Il n'est pas possible d'estimer avec précision la durée d'une tâche DTS. Les performances dépendent de nombreux facteurs, tels que la charge des instances DTS, de la base de données source et de la base de données de destination, le volume de données, l'existence de tâches incrémentales et les conditions réseau. Si vous avez des exigences élevées en matière de performances, choisissez un type d'instance avec une limite de performance supérieure. Consultez Spécifications des liens de migration de données et Spécifications des liens de synchronisation de données.

Comment consulter les informations de performance d'une tâche de migration ou de synchronisation de données ?

Consultez Afficher l'état et les performances d'un lien de migration incrémentale ou Afficher l'état et les performances d'un lien de synchronisation.

Pourquoi ne puis-je pas trouver une instance DTS spécifique dans la console ?

Cause possible : L'instance DTS spécifiée est une instance par abonnement qui a expiré et a été libérée.

  • Le groupe de ressources sélectionné est incorrect. Nous vous recommandons de sélectionner Toutes les ressources.

  • La région sélectionnée est incorrecte. Assurez-vous d'avoir sélectionné la région où réside l'instance de destination.

  • Le type de tâche sélectionné pour l'instance est incorrect. Vérifiez que la page actuelle de la liste des tâches correspond au type de tâche de l'instance de destination. Par exemple, les instances de synchronisation ne s'affichent que dans la liste Data Synchronization Tasks.

  • L'instance a été libérée en raison d'une expiration ou d'un paiement en retard. Lorsqu'une instance DTS expire ou présente un impayé, la tâche s'arrête. Si le paiement n'est pas effectué dans un délai de sept jours, le système libère et supprime l'instance. Expiration ou paiements en retard.

Problèmes de précontrôle

Pourquoi l'élément de vérification de la politique d'éviction Redis génère-t-il une alerte ?

Si la politique d'éviction des données (maxmemory-policy) de la base de données de destination est définie sur une valeur autre que noeviction, les données de destination peuvent devenir incohérentes avec celles de la source. Présentation des politiques d'éviction des données Redis.

Que faire si un élément de précontrôle lié à la journalisation binaire échoue lors de la migration incrémentale des données ?

Vérifiez si les journaux binaires de la base de données source fonctionnent correctement. Vérification de la journalisation binaire de la base de données source.

Problèmes de connexion à la base de données

Que faire si la connexion à la base de données source échoue ?

Vérifiez si les informations et les paramètres de la base de données source sont corrects. Vérification de la connectivité de la base de données source.

Que faire si la connexion à la base de données de destination échoue ?

Vérifiez si les informations et les paramètres de la base de données de destination sont corrects. Vérification de la connectivité de la base de données de destination.

Que faire si l'instance source ou de destination se trouve dans une région non prise en charge par DTS et que je souhaite effectuer une migration et une synchronisation des données ?

  • Pour une tâche de migration de données, vous pouvez demander un endpoint public pour l'instance de base de données, telle qu'une instance RDS MySQL, et utiliser le type de connexion Public IP Address. Cela nécessite de sélectionner une région prise en charge par DTS pour l'instance et d'ajouter les blocs CIDR des serveurs DTS de cette région à la liste d'autorisation de l'instance. Ajouter les blocs CIDR des serveurs DTS à la liste d'autorisation IP.

  • DTS ne prend pas en charge la synchronisation des données dans ces régions, car il ne prend pas en charge le type de connexion Public IP Address pour les instances de base de données.

Combien de temps faut-il à DTS pour détecter un changement de nom de domaine pour une instance source ou de destination ?

DTS détecte le changement de liaison de nom de domaine dans un délai de 10 minutes et bascule automatiquement la tâche DTS vers la nouvelle adresse IP liée au nom de domaine. Lors du changement de nom de domaine, assurez-vous que la relation de réplication de journalisation binaire entre les anciennes et les nouvelles instances est maintenue pendant plus de 10 minutes.

Problèmes de synchronisation des données

Quelles instances de base de données DTS prend-il en charge pour la synchronisation ?

DTS prend en charge la synchronisation entre diverses sources de données, y compris les bases de données RDBMS, NoSQL et OLAP. Aperçu des solutions de synchronisation de données.

Quelle est la différence entre la migration des données et la synchronisation des données ?

Le tableau suivant compare la migration des données et la synchronisation des données.

Remarque

Une instance de base de données est classée comme base de données autogérée si sa Access Method n'est pas définie sur Alibaba Cloud Instance lors de la configuration d'une instance DTS. Les bases de données autogérées incluent les instances de base de données provenant de clouds tiers, les bases de données déployées sur des serveurs locaux et les bases de données déployées sur des instances ECS.

Élément

Migration des données

Synchronisation des données

Scénarios

Principalement utilisée pour la migration vers le cloud, par exemple pour migrer des bases de données locales, des bases de données autogérées sur des instances ECS ou des bases de données de clouds tiers vers des bases de données Alibaba Cloud.

Principalement utilisée pour la synchronisation de données en temps réel entre deux sources de données. Elle convient aux scénarios tels que la redondance géographique active, la reprise après sinistre des données, la synchronisation transfrontalière des données, le déchargement des requêtes et des rapports, la business intelligence (BI) dans le cloud et l'entreposage de données en temps réel.

Bases de données prises en charge

Aperçu des solutions de migration de données.

Remarque

Pour certaines bases de données non prises en charge par la synchronisation des données, vous pouvez utiliser la migration des données pour réaliser la synchronisation. C'est le cas des bases de données MongoDB à nœud unique et des bases de données OceanBase (mode MySQL).

Aperçu des solutions de synchronisation de données.

Emplacements de déploiement de base de données pris en charge (types de connexion)

  • Instance Alibaba Cloud

  • Base de données autogérée avec une adresse IP publique

  • Base de données autogérée connectée via Database Gateway (DG)

  • Base de données autogérée connectée via Cloud Enterprise Network (CEN)

  • Base de données autogérée sur une instance ECS

  • Base de données autogérée connectée via une ligne louée, VPN Gateway ou Smart Access Gateway

  • Instance Alibaba Cloud

  • Base de données autogérée connectée via DG

  • Base de données autogérée connectée via CEN

  • Base de données autogérée sur une instance ECS

  • Base de données autogérée connectée via une ligne louée, VPN Gateway ou Smart Access Gateway

Remarque

La synchronisation des données repose sur la transmission via le réseau interne, ce qui garantit une latence réseau plus faible.

Différences de fonctionnalités

  • Prend en charge le mappage de noms d'objets à trois niveaux pour les bases de données, les tables et les colonnes.

  • Permet de filtrer les données à migrer.

  • Permet de sélectionner les types d'opérations SQL à migrer, par exemple migrer uniquement les opérations INSERT.

  • Permet de lire les VPC sous d'autres comptes Alibaba Cloud. Cette fonctionnalité vous permet de migrer des bases de données autogérées dans des VPC across différents comptes Alibaba Cloud.

  • Prend en charge le mappage de noms d'objets à trois niveaux pour les bases de données, les tables et les colonnes.

  • Permet de filtrer les données à synchroniser.

  • Permet de modifier les objets de synchronisation en ligne.

  • Prend en charge la synchronisation bidirectionnelle entre les bases de données, telles que MySQL.

  • Permet de sélectionner les types d'opérations SQL à synchroniser, par exemple synchroniser uniquement les opérations INSERT.

Méthode de facturation

Prend uniquement en charge le paiement à l'utilisation.

Prend en charge le paiement à l'utilisation et l'abonnement.

S'agit-il d'un service payant ?

Oui, mais des frais ne sont facturés que pour les instances de migration qui incluent des tâches de migration incrémentale.

Oui. Les instances de synchronisation incluent par défaut des tâches de synchronisation incrémentale et entraînent toujours des frais.

Règle de facturation

Vous êtes facturé uniquement lorsque la migration incrémentale des données est en cours d'exécution. Vous n'êtes pas facturé lorsque la migration incrémentale des données est en pause. La migration du schéma ou la migration complète des données ne sont pas facturées.

  • Pour le paiement à l'utilisation, vous êtes facturé uniquement lorsque la synchronisation incrémentale des données est en cours d'exécution. Cela inclut la période pendant laquelle la synchronisation incrémentale des données est en pause. La synchronisation du schéma ou la synchronisation complète des données ne sont pas facturées.

  • Pour la méthode de facturation par abonnement, vous payez des frais uniques basés sur la configuration et la quantité que vous sélectionnez lors de l'achat.

Comment fonctionne la synchronisation des données ?

Architecture et fonctionnalités du service.

Comment la latence de synchronisation est-elle calculée ?

La latence de synchronisation correspond à la différence de temps, exprimée en millisecondes, entre l'horodatage des dernières données synchronisées vers la base de données de destination et l'horodatage actuel de la base de données source.

Remarque

Une latence normale se situe dans une fourchette inférieure à 1 000 millisecondes.

Puis-je modifier les objets de synchronisation d'une tâche de synchronisation des données ?

Oui. Ajouter un objet de synchronisation et Supprimer un objet de synchronisation.

Puis-je ajouter une nouvelle table à une tâche de synchronisation des données ?

Oui. Ajouter un objet de synchronisation.

Comment modifier les objets de synchronisation, tels que les tables et les champs, d'une tâche de synchronisation en cours d'exécution ?

Vous pouvez modifier les objets de synchronisation une fois la synchronisation complète terminée et la synchronisation incrémentielle démarrée. Ajouter un objet de synchronisation et Supprimer un objet de synchronisation.

Si je mets en pause une tâche de synchronisation puis la redémarre après un certain temps, cela entraînera-t-il une incohérence des données ?

Si la base de données source est modifiée pendant la mise en pause de la tâche de synchronisation, des incohérences peuvent apparaître entre les bases de données source et de destination. Après le redémarrage de la tâche et la synchronisation des données incrémentielles vers la destination, les données de la base de destination redeviennent cohérentes avec celles de la base source.

Si je supprime des données de la base de données source d'une tâche de synchronisation incrémentielle, les données synchronisées dans la base de données de destination seront-elles supprimées ?

Si les opérations DML à synchroniser pour la tâche de synchronisation incrémentielle n'incluent pas l'opération delete, les données de la base de destination ne sont pas supprimées. Dans le cas contraire, les données synchronisées dans la base de destination sont supprimées.

Les données de l'instance Redis de destination seront-elles écrasées lors de la synchronisation entre instances Redis ?

Oui, les données partageant la même clé sont écrasées. DTS vérifie la destination lors de la phase de précontrôle. Si la destination n'est pas vide, une erreur est signalée.

Une tâche de synchronisation peut-elle filtrer certains champs ou certaines données ?

Oui. Vous pouvez utiliser la fonctionnalité de mappage pour filtrer les colonnes et spécifier des conditions SQL WHERE pour filtrer les données. Synchroniser ou migrer certaines colonnes et Filtrer les données à l'aide de conditions SQL.

Une tâche de synchronisation peut-elle être convertie en tâche de migration ?

Non. Les tâches de types différents ne peuvent pas être converties les unes en les autres.

Puis-je synchroniser uniquement les données sans synchroniser le schéma ?

Oui. Lors de la configuration de la tâche de synchronisation, ne sélectionnez pas Schema Synchronization.

Quelles sont les causes possibles d'incohérence des données entre la source et la destination d'une instance de synchronisation des données ?

Causes possibles :

  1. Vous n'avez pas effacé les données de la destination lors de la configuration de la tâche, si bien que la destination contient des données historiques.

  2. Lors de la configuration de la tâche, vous avez sélectionné uniquement la synchronisation incrémentielle et non la synchronisation complète.

  3. Vous avez sélectionné uniquement la synchronisation complète et non la synchronisation incrémentielle lors de la configuration de la tâche, et les données source ont changé après l'achèvement de la tâche.

  4. Des données ont été écrites dans la destination depuis des sources autres que la tâche DTS.

  5. Les écritures incrémentielles subissent un délai et toutes les données incrémentielles n'ont pas encore été écrites dans la destination.

Puis-je modifier le nom de la base de données source dans la base de données de destination pour une tâche de synchronisation des données ?

Oui. Définir le nom d'un objet de synchronisation dans l'instance de destination.

La synchronisation en temps réel des opérations DML ou DDL est-elle prise en charge ?

Oui. La synchronisation des données pour les données relationnelles prend en charge les opérations DML (INSERT, UPDATE et DELETE) et DDL (CREATE, DROP, ALTER, RENAME et TRUNCATE).

Remarque

Les opérations DML ou DDL prises en charge varient selon le scénario. Sélectionnez un lien correspondant à vos besoins métier dans Présentation des solutions de synchronisation des données et consultez les opérations DML ou DDL prises en charge dans le document de configuration spécifique au lien choisi.

Une instance en lecture seule peut-elle être utilisée comme instance source pour une tâche de synchronisation ?

Par défaut, les tâches de synchronisation incluent la synchronisation des données incrémentielles. Cela donne lieu aux deux scénarios suivants :

  • Si l'instance est une instance en lecture seule qui enregistre les journaux de transactions, telle qu'une instance ApsaraDB RDS for MySQL 5.7 ou 8,0, elle peut être utilisée comme instance source.

  • Si l'instance est une instance en lecture seule qui n'enregistre pas les journaux de transactions, telle qu'une instance ApsaraDB RDS for MySQL 5.6, elle ne peut pas être utilisée comme instance source.

DTS prend-il en charge la synchronisation des données pour les bases de données et tables fragmentées (sharding) ?

Oui. Par exemple, vous pouvez fusionner plusieurs tables fragmentées en les synchronisant depuis MySQL et PolarDB for MySQL vers AnalyticDB for MySQL.

Pourquoi le volume de données de l'instance de destination est-il inférieur à celui de l'instance source après l'achèvement d'une tâche de synchronisation ?

Si des données ont été filtrées lors de la synchronisation ou si l'instance source contient de nombreux fragments de table, le volume de données de l'instance de destination peut être inférieur à celui de l'instance source une fois la synchronisation terminée.

Une tâche de synchronisation des données intercomptes prend-elle en charge la synchronisation bidirectionnelle ?

Oui, mais actuellement, seules les tâches de synchronisation bidirectionnelle entre instances ApsaraDB RDS for MySQL, entre clusters PolarDB for MySQL, entre instances Tair (Enterprise Edition), entre instances ApsaraDB for MongoDB (ReplicaSet) ou entre instances ApsaraDB for MongoDB (cluster fragmenté) prennent en charge la synchronisation bidirectionnelle intercomptes.

La synchronisation inverse d'une instance de synchronisation bidirectionnelle prend-elle en charge la synchronisation DDL ?

Non. Seule la tâche de synchronisation directe (de la base de données source vers la base de données de destination) prend en charge la synchronisation DDL. La tâche de synchronisation inverse (de la base de données de destination vers la base de données source) ne prend pas en charge la synchronisation DDL et filtre automatiquement les opérations DDL.

Remarque

Pour synchroniser les opérations DDL de la tâche de synchronisation inverse actuelle, vous pouvez inverser la direction de l'instance de synchronisation bidirectionnelle si votre activité métier le permet.

Dois-je configurer manuellement une tâche de synchronisation inverse ?

Oui. Attendez que la tâche de synchronisation directe termine son initialisation (jusqu'à ce que le Status passe à Running). Localisez ensuite la tâche de synchronisation inverse et cliquez sur Configure Task.

Remarque

Nous vous recommandons de configurer la tâche de synchronisation inverse une fois que la tâche de synchronisation directe ne présente plus de latence (la latence est de 0 milliseconde).

DTS prend-il en charge les tâches de synchronisation bidirectionnelle transfrontalières ?

Non.

Pourquoi un enregistrement ajouté à une base de données dans le cadre d'une tâche de synchronisation bidirectionnelle n'est-il pas ajouté à l'autre base de données ?

Ce problème peut survenir si aucune tâche inverse n'a été configurée.

Pourquoi une tâche de synchronisation incrémentielle n'atteint-elle jamais 100 % ?

Une tâche de synchronisation incrémentielle synchronise continuellement les modifications de la source vers la destination en temps réel et ne se termine pas d'elle-même. Il n'existe donc pas d'état d'achèvement à 100 %. Si vous n'avez plus besoin de la synchronisation en temps réel, vous pouvez mettre fin à la tâche dans la console DTS.

Pourquoi une tâche de synchronisation incrémentielle ne parvient-elle pas à synchroniser les données ?

Si une instance DTS est configurée uniquement pour la synchronisation incrémentielle, DTS ne synchronise que les données incrémentielles générées après le démarrage de la tâche. Cela signifie que les données générées avant le démarrage de la tâche ne sont pas synchronisées vers la base de données de destination. Pour garantir la cohérence des données, nous vous recommandons de sélectionner Incremental Data Synchronization, Schema Synchronization et Full Data Synchronization lors de la configuration de la tâche.

La synchronisation complète des données depuis une base de données RDS affecte-t-elle les performances de l'instance RDS source ?

Oui, cela affecte les performances de requête de la base de données source. Vous pouvez utiliser l'une des trois méthodes suivantes pour réduire l'impact de la tâche DTS sur la base de données source :

  1. Mettez à niveau les spécifications de l'instance de base de données source.

  2. Mettez en pause la tâche DTS et redémarrez-la lorsque la charge de la base de données source est faible.

  3. Réduisez le débit de la tâche DTS. Ajuster le débit de migration complète.

Pourquoi une instance de synchronisation dont la source est PolarDB-X 1,0 n'affiche-t-elle pas la latence ?

Les informations de latence ne sont pas affichées pour les instances dont la source est PolarDB-X 1,0. En effet, l'instance s'exécute sous forme de tâche distribuée et les métriques surveillées par DTS existent uniquement au niveau des sous-tâches. Pour afficher les informations de latence, cliquez sur l'ID de l'instance et accédez à la section Subtask Details sur la page Task Management.

Pourquoi une tâche de fusion multi-tables renvoie-t-elle l'erreur DTS-071001 ?

Cette erreur peut survenir si vous avez effectué des opérations DDL en ligne sur la base de données source pendant l'exécution de la tâche de fusion multi-tables. Ces opérations ont modifié le schéma de la table de la base de données source, mais vous n'avez pas apporté les modifications correspondantes dans la base de données de destination.

Que faire si l'ajout d'une liste d'autorisation échoue lors de la configuration d'une tâche dans l'ancienne console ?

Vous pouvez utiliser la nouvelle console pour configurer la tâche.

Que faire si une tâche de synchronisation des données échoue en raison d'une opération DDL effectuée sur la base de données source pendant le processus ?

Selon l'opération DDL effectuée sur la base de données source, exécutez manuellement l'opération DDL sur la base de données de destination et redémarrez la tâche. Pendant la synchronisation des données, n'utilisez pas d'outils tels que pt-online-schema-change pour effectuer des opérations DDL en ligne sur les objets de synchronisation de la base de données source. Sinon, la synchronisation échouera. Si aucune donnée autre que les données DTS n'est écrite dans la base de données de destination, vous pouvez utiliser Data Management (DMS) pour effectuer des opérations DDL en ligne, ou modifier les objets de synchronisation pour supprimer les tables concernées. Supprimer un objet de synchronisation.

Que faire si une tâche de synchronisation des données échoue en raison d'une opération DDL effectuée sur la base de données de destination pendant le processus ?

Si une base de données ou une table de la base de données de destination est supprimée pendant la synchronisation incrémentielle, ce qui provoque une anomalie de la tâche, vous pouvez utiliser l'une des deux solutions suivantes pour restaurer la tâche :

  • Méthode 1 : Reconfigurez la tâche et ne sélectionnez pas la base de données ou la table à l'origine de l'échec comme objet de synchronisation.

  • Méthode 2 : Modifiez les objets de synchronisation pour supprimer la base de données ou la table à l'origine de l'échec. Supprimer un objet de synchronisation.

Une tâche de synchronisation peut-elle être restaurée après sa libération ? La reconfiguration de la tâche garantit-elle la cohérence des données ?

Une tâche de synchronisation ne peut pas être restaurée après sa libération. Si vous reconfigurez la tâche sans sélectionner Full Data Synchronization, toutes les données ajoutées entre la libération de la tâche d'origine et le démarrage de la nouvelle tâche ne seront pas synchronisées vers la base de données de destination et la cohérence des données ne pourra pas être garantie. Si l'exactitude des données est cruciale pour votre activité, vous pouvez supprimer les données de la base de données de destination, reconfigurer la tâche de synchronisation et sélectionner à la fois Schema Synchronization et Full Data Synchronization dans la section Task Stages. L'option Incremental Data Synchronization est sélectionnée par défaut.

Que faire si une tâche de synchronisation complète DTS n'affiche aucune progression pendant une longue période ?

Si la table à synchroniser ne possède pas de clé primaire, la synchronisation complète sera très lente. Nous vous recommandons d'ajouter une clé primaire à la table à synchroniser dans la base de données source avant de démarrer la synchronisation.

Lors de la synchronisation des données entre des tables portant le même nom, puis-je configurer le transfert des données de la table source uniquement si elles n'existent pas dans la table de destination ?

Oui. Lors de la configuration de la tâche, vous pouvez définir le paramètre Processing Mode of Conflicting Tables sur Ignore Errors and Proceed. Si les schémas de table sont cohérents et qu'un enregistrement de la base de données source possède une valeur de clé primaire déjà existante dans la base de données de destination, cet enregistrement ne sera pas synchronisé lors d'une synchronisation complète.

Comment configurer une tâche de synchronisation intercomptes ?

Commencez par comprendre les scénarios pour les tâches intercomptes. Utilisez ensuite le compte Alibaba Cloud auquel appartient l'instance de base de données pour configurer l'autorisation RAM pour une tâche intercomptes Alibaba Cloud. Enfin, configurez la tâche intercomptes Alibaba Cloud.

Que faire si je ne peux pas sélectionner une instance DMS LogicDB ?

Vérifiez que la région de l'instance est correcte. Si vous ne pouvez toujours pas sélectionner l'instance, il se peut qu'il n'y ait qu'une seule instance disponible. Vous pouvez continuer à configurer les autres paramètres.

Une tâche de synchronisation dont la source est SQL Server prend-elle en charge la synchronisation des fonctions ?

Non. Si la granularité de l'objet de synchronisation est définie sur « table », les autres objets tels que les vues, les déclencheurs et les procédures stockées ne seront pas synchronisés vers la base de données de destination.

Que faire si une tâche de synchronisation des données renvoie une erreur ?

Vous pouvez trouver une solution dans la rubrique Erreurs courantes en vous basant sur le message d'erreur.

Comment activer la fusion des points chauds (hot spot merge) pour une tâche de synchronisation ?

Consultez la rubrique Modifier les valeurs des paramètres pour changer la valeur de trans.hot.merge.enable en true.

Comment procéder à la synchronisation lorsque la base de données source contient des déclencheurs ?

Lorsque l'objet de synchronisation correspond à la base de données entière et qu'un déclencheur met à jour une table au sein de celle-ci, des incohérences de données peuvent survenir. Configurer une tâche de synchronisation ou de migration lorsque la base de données source contient des déclencheurs.

DTS prend-il en charge la synchronisation de la base de données sys et des bases de données système ?

Non.

DTS prend-il en charge la synchronisation des bases de données admin et local de MongoDB ?

Non. DTS ne permet pas d'utiliser les bases de données admin et local de MongoDB comme source ou destination.

À quel moment puis-je configurer la tâche inverse d'une tâche de synchronisation bidirectionnelle ?

La configuration de la tâche inverse d'une synchronisation bidirectionnelle n'est possible qu'une fois que la tâche incrémentielle directe ne présente plus de latence.

Lorsque PolarDB-X 1,0 sert de source, le nœud source PolarDB-X 1,0 d'une tâche de synchronisation prend-il en charge la mise à l'échelle des nœuds ?

Non. Si le nœud source PolarDB-X 1,0 subit une mise à l'échelle, vous devez reconfigurer la tâche.

L'unicité des données synchronisées vers Kafka par DTS est-elle garantie ?

Non. Étant donné que les écritures dans Kafka s'effectuent par ajout séquentiel, des doublons peuvent apparaître lors du redémarrage d'une tâche DTS ou lorsque celle-ci extrait plusieurs fois les journaux depuis la source. DTS garantit l'idempotence des données : celles-ci sont ordonnées et la dernière valeur des données dupliquées est placée à la fin.

DTS prend-il en charge la synchronisation des données de RDS for MySQL vers AnalyticDB for MySQL ?

Oui. Synchroniser les données de RDS for MySQL vers AnalyticDB for MySQL 3.0.

Pourquoi une tâche de synchronisation entre instances Redis n'affiche-t-elle pas de synchronisation complète ?

La synchronisation entre instances Redis inclut à la fois la synchronisation complète et la synchronisation incrémentielle. Ces deux méthodes sont affichées conjointement sous l'intitulé Incremental Data Synchronization.

Est-il possible d'ignorer la synchronisation complète ?

Oui. Si vous ignorez la synchronisation complète, la synchronisation incrémentielle se poursuit, mais des erreurs peuvent survenir. Nous vous recommandons de ne pas ignorer la synchronisation complète.

Puis-je planifier une synchronisation automatique ?

Non, DTS ne prend actuellement pas en charge la planification du démarrage des tâches de synchronisation des données.

La fragmentation des tables est-elle synchronisée durant le processus ?

Non.

Quelles précautions prendre lors de la synchronisation de MySQL 8.0 vers MySQL 5.6 ?

Vous devez créer une base de données dans MySQL 5.6 avant d'exécuter l'opération de synchronisation. Pour garantir la compatibilité, nous vous recommandons d'utiliser des versions identiques pour les bases de données source et destination, ou de synchroniser d'une version inférieure vers une version supérieure. Une synchronisation d'une version supérieure vers une version inférieure peut entraîner des problèmes de compatibilité de la base de données.

Les comptes de la base de données source peuvent-ils être synchronisés vers la base de données destination ?

Actuellement, seules les tâches de synchronisation entre instances ApsaraDB RDS for MySQL prennent en charge la synchronisation des comptes. Les autres tâches de synchronisation ne le permettent pas.

Puis-je configurer une tâche de synchronisation bidirectionnelle intercomptes ?

Oui, mais actuellement, seules les tâches de synchronisation bidirectionnelle entre instances ApsaraDB RDS for MySQL, entre clusters PolarDB for MySQL, entre instances Tair (Enterprise Edition), entre instances ApsaraDB for MongoDB (ReplicaSet) ou entre instances ApsaraDB for MongoDB (sharded cluster) prennent en charge la synchronisation bidirectionnelle intercomptes.

Remarque

Pour les tâches qui ne disposent pas de l'option de configuration Replicate Data Across Alibaba Cloud Accounts, utilisez CEN pour configurer la synchronisation bidirectionnelle intercomptes. Accéder aux ressources de base de données entre différents comptes ou régions Alibaba Cloud.

Comment configurer les paramètres lorsque Message Queue for Apache Kafka sert de destination ?

Configurez les paramètres selon vos besoins. Configurer les paramètres d'une instance Message Queue for Apache Kafka.

Comment résoudre l'erreur ERR invalid DB index lors de la synchronisation ou de la migration de données Redis avec DTS ?

Cause : L'erreur ERR invalid DB index survient lorsque la base de données destination exécute l'opération SELECT DB. Cela est généralement dû à un nombre insuffisant de databases dans la base de données destination. Si la base de données destination utilise un proxy, vérifiez si ce dernier peut lever la limite imposée au nombre de databases.

Solution : Modifiez la configuration databases de la base de données destination. Augmentez la valeur pour qu'elle corresponde à celle de la base de données source, puis redémarrez la tâche DTS. Vous pouvez exécuter la commande suivante pour interroger la configuration databases de la base de données destination :

CONFIG GET databases;

Comment résoudre l'erreur IDENTIFIER CLUSTERED lors de la synchronisation ou de la migration de données SQL Server vers AnalyticDB for PostgreSQL ?

Cause : Lors de la synchronisation ou de la migration de données SQL Server vers AnalyticDB for PostgreSQL, la tâche échoue car la commande CREATE CLUSTERED INDEX n'est pas prise en charge.

Solution : Après avoir confirmé l'absence d'autres commandes DDL durant la période de latence, modifiez le paramètre d'instance sink.ignore.failed.ddl en définissant sa valeur sur true afin de filtrer toutes les exécutions DDL. Une fois que le décalage de la synchronisation incrémentielle ou de la migration a avancé, rétablissez la valeur de sink.ignore.failed.ddl sur false.

Dans une tâche de synchronisation ou de migration Redis, l'extension de la durée d'expiration d'une clé dans la base de données destination a-t-elle un effet concret ?

Pour éviter l'expiration des clés durant la synchronisation complète des données, vous pouvez prolonger leur durée d'expiration dans la base de données destination. Pour les tâches DTS impliquant une synchronisation ou une migration incrémentielle, si une clé expire et est supprimée dans la base de données source, la clé correspondante est également libérée dans la base de données destination.

Après avoir défini une durée d'expiration étendue pour une clé dans la base de données destination, la clé sera-t-elle libérée immédiatement si la clé source expire ?

La libération d'une clé dans la base de données destination n'est pas nécessairement immédiate à son expiration. Elle intervient uniquement lorsque la clé correspondante dans la base de données source expire et est effacée.

Par exemple, si une clé dans la base de données source est configurée pour expirer dans 5 secondes, tandis que sa durée d'expiration dans la base de données destination est de 30 secondes, la clé destination sera supprimée dès l'expiration de la clé source. Lorsque la clé source expire, le système ajoute une opération de suppression au fichier Append-Only File (AOF). Cette requête est ensuite synchronisée vers la base de données destination et exécutée.

Comment résoudre l'erreur column_name[xxx], the length of input string is too long than vec schema lors de la synchronisation de données vers SelectDB avec DTS ?

  • Message d'erreur détaillé : Reason: The input string for column_name[xxx] is longer than the length specified in the vector schema. First 32 bytes of the input string: [01a954b4-xxx-xxx-xxx-95b675b9]. Schema length: 2147483643. Limit length: 1048576. Actual length: 7241898. Source line: [].

  • Cause : La taille des données incrémentielles dans le champ xxx source dépasse la limite de longueur du champ destination correspondant.

  • Solution : Si le champ est de type STRING, vous pouvez augmenter le paramètre string_type_length_soft_limit_bytes dans la console SelectDB. La valeur doit être supérieure à la actual length (7241898).

Comment résoudre l'erreur column(xxx) values is null while columns is not nullable. lors de la synchronisation de données vers SelectDB avec DTS ?

  • Message d'erreur détaillé : Reason: column(xxx) values is null while columns is not nullable. src line [ xxx ];

  • Cause : Le champ xxx dans la destination est défini comme NOT NULL, mais des valeurs NULL y sont écrites.

    Remarque

    Scénario courant : le format de date source contient des données non valides, telles que 0000-0000-0000, ce qui amène DTS à les convertir automatiquement en valeur NULL et à déclencher l'erreur.

  • Solution :

    • Modifiez le type de champ dans la destination pour autoriser les valeurs NULL.

    • Modifiez l'objet de synchronisation : retirez la table problématique, corrigez les données source, puis supprimez la table dans la destination. Ensuite, modifiez à nouveau l'objet de synchronisation pour rajouter la table, et enfin relancez la synchronisation complète et incrémentielle.

Comment corriger un mappage incorrect du nom de la table destination ?

Sur la page de configuration de la tâche DTS, développez la base de données destination dans la section Selected Objects, repérez la table dont le mappage est incorrect et cliquez sur le bouton Edit situé à droite. Dans la boîte de dialogue qui s'affiche, remplacez le nom de la table destination par le nom correct et enregistrez la modification.

Comment remplir rétroactivement les données historiques après l'ajout d'une nouvelle colonne ?

DTS ne remplit pas automatiquement les données historiques pour les colonnes nouvellement ajoutées. Cette règle s'applique à tous les types de bases de données destination, pas seulement à SelectDB. Pour effectuer ce remplissage rétroactif, suivez les étapes ci-dessous :

  1. Ajoutez manuellement le nouveau champ à la table destination.

  2. Dans la console DTS, modifiez les objets de synchronisation afin de retirer la table de la liste de synchronisation.

  3. Exécutez TRUNCATE pour vider les données de la table destination et garantir la cohérence des données.

  4. Rajoutez la table aux objets de synchronisation. Cela déclenche à la fois la synchronisation complète et incrémentielle des données afin de migrer les données historiques vers la destination.

Problèmes liés à la migration des données

Les données de la base de données source subsistent-elles après l'exécution d'une tâche de migration ?

DTS effectue la migration et la synchronisation des données en copiant les informations d'une base de données source vers une base de données destination, sans affecter la source.

Quelles instances de base de données DTS prend-il en charge pour la migration ?

DTS prend en charge la migration entre diverses sources de données, notamment les bases de données RDBMS, NoSQL et OLAP. Présentation des solutions de migration des données

Comment fonctionne la migration des données ?

Architecture et fonctionnalités du service.

Puis-je modifier les objets de migration d'une tâche de migration de données ?

Non.

Puis-je ajouter une nouvelle table à une tâche de migration de données ?

Non.

Comment modifier les objets de migration, tels que les tables et les champs, d'une tâche de migration en cours d'exécution ?

Les tâches de migration ne permettent pas de modifier les objets de migration.

Si je mets en pause une tâche de migration puis la redémarre après un certain temps, cela provoquera-t-il une incohérence des données ?

Si la base de données source évolue pendant la mise en pause de la tâche de migration, des incohérences peuvent apparaître entre les bases de données source et destination. Après le redémarrage de la tâche et la migration des données incrémentielles vers la destination, les données de cette dernière redeviennent cohérentes avec celles de la source.

Une tâche de migration peut-elle être convertie en tâche de synchronisation ?

Non. Les tâches de types différents ne sont pas interchangeables.

Puis-je migrer uniquement les données sans migrer le schéma ?

Oui. Lors de la configuration de la tâche de migration, ne sélectionnez pas l'option Schema Migration.

Quelles sont les causes possibles d'incohérence des données entre la source et la destination d'une instance de migration de données ?

Causes possibles :

  1. Vous n'avez pas vidé les données de la destination lors de la configuration de la tâche, si bien que celle-ci contient des données historiques.

  2. Lors de la configuration de la tâche, vous avez sélectionné uniquement la migration incrémentielle et non la migration complète.

  3. Vous avez sélectionné uniquement la migration complète et non la migration incrémentielle, et les données source ont changé après l'achèvement de la tâche.

  4. Des données ont été écrites dans la destination depuis des sources autres que la tâche DTS.

  5. Les écritures incrémentielles présentent un délai et toutes les données incrémentielles n'ont pas encore été écrites dans la destination.

Puis-je modifier le nom de la base de données source dans la base de données destination pour une tâche de migration de données ?

Oui. Mappage de bases de données, de tables et de colonnes.

La migration de données au sein d'une même instance est-elle prise en charge ?

Oui. Synchronisation ou migration de données entre différents noms de bases de données.

La migration en temps réel des opérations DML ou DDL est-elle prise en charge ?

Oui. Les opérations DML prises en charge pour les données entre bases de données relationnelles sont INSERT, UPDATE et DELETE. Les opérations DDL prises en charge sont CREATE, DROP, ALTER, RENAME et TRUNCATE.

Remarque

Les opérations DML ou DDL prises en charge varient selon le scénario. Sélectionnez un lien répondant à vos besoins métier dans Présentation des solutions de migration des données et consultez les opérations DML ou DDL prises en charge dans le document de configuration spécifique au lien choisi.

Une instance en lecture seule peut-elle servir d'instance source pour une tâche de migration ?

Si une tâche de migration ne nécessite pas de migration de données incrémentielles, vous pouvez utiliser une instance en lecture seule comme instance source. Si la migration incrémentielle est requise, deux scénarios se présentent :

  • Si l'instance est une instance en lecture seule qui enregistre les journaux de transactions, telle qu'une instance ApsaraDB RDS for MySQL 5.7 ou 8,0, elle peut servir d'instance source.

  • Si l'instance est une instance en lecture seule qui n'enregistre pas les journaux de transactions, telle qu'une instance ApsaraDB RDS for MySQL 5.6, elle ne peut pas servir d'instance source.

DTS prend-il en charge la migration de données pour les bases de données et tables fragmentées (sharding) ?

Oui. Par exemple, vous pouvez migrer des bases de données et tables fragmentées dans MySQL et PolarDB for MySQL vers AnalyticDB for MySQL afin de fusionner plusieurs tables.

Une tâche de migration peut-elle filtrer certains champs ou certaines données ?

Oui. Vous pouvez utiliser la fonctionnalité de mappage pour filtrer les colonnes et spécifier des conditions SQL WHERE pour filtrer les données. Synchroniser ou migrer certaines colonnes et Filtrer les données à migrer.

Pourquoi le volume de données de l'instance destination est-il inférieur à celui de l'instance source après l'achèvement d'une tâche de migration ?

Si des données ont été filtrées durant la migration ou si l'instance source contient de nombreux fragments de table, le volume de données de l'instance destination peut s'avérer inférieur à celui de l'instance source une fois la migration terminée.

Pourquoi la valeur « Terminé » est-elle supérieure au total dans une tâche de migration ?

Le total affiché constitue une estimation. Une fois la tâche de migration achevée, le total est ajusté pour refléter la valeur exacte.

À quoi sert la table increment_trx ajoutée à la base de données destination lors de la migration des données ?

La table increment_trx est une table de décalage créée par la migration incrémentielle de DTS dans l'instance destination. Elle sert principalement à enregistrer le décalage de la migration incrémentielle et à résoudre les problèmes de reprise après interruption suite à un redémarrage anormal de la tâche. Ne la supprimez pas pendant le processus de migration, sous peine d'échec de celle-ci.

Une tâche de migration de données prend-elle en charge la reprise après interruption durant la phase de migration complète ?

Oui. Si vous mettez en pause une tâche durant la phase de migration complète puis la redémarrez, elle reprendra là où elle s'était arrêtée, sans recommencer depuis le début.

Comment migrer une instance non Alibaba Cloud vers Alibaba Cloud ?

Migrer des données d'un cloud tiers vers Alibaba Cloud.

Comment migrer une base de données Oracle locale vers PolarDB ?

Migrer des données d'une base de données Oracle autogérée vers une base de données PolarDB for PostgreSQL (compatible avec Oracle).

Une tâche de migration de données dont la phase de migration complète n'est pas achevée peut-elle être mise en pause ?

Oui.

Comment migrer une partie des données de RDS for MySQL vers une base de données MySQL autogérée ?

Lors de la configuration de la tâche de migration, vous pouvez sélectionner les objets à migrer dans la section Source Objects ou les filtrer dans la section Selected Objects selon vos besoins. Les opérations de migration entre bases de données MySQL sont similaires. Migrer des données d'une base de données MySQL autogérée vers une instance ApsaraDB RDS for MySQL.

Comment migrer des instances RDS appartenant au même compte Alibaba Cloud ?

DTS prend en charge la migration et la synchronisation entre instances RDS. Consultez les documents de configuration pertinents dans Présentation des solutions de migration des données.

Que faire si une alerte IOPS se déclenche pour la base de données source après le démarrage d'une tâche de migration, et comment garantir la stabilité des activités de la base de données source ?

Si la charge de l'instance de base de données source est élevée lors de l'exécution d'une tâche DTS, vous pouvez utiliser l'une des trois méthodes suivantes pour réduire l'impact de la tâche DTS sur la base de données source :

  1. Mettez à niveau les spécifications de l'instance de base de données source.

  2. Suspendez la tâche DTS et redémarrez-la lorsque la charge de la base de données source est faible.

  3. Réduisez le débit de la tâche DTS. Ajuster le débit de la migration complète.

Pourquoi une tâche de migration de données ne peut-elle pas sélectionner une base de données nommée « test » ?

La migration de données DTS ne prend pas en charge la migration des bases de données système. Vous devez sélectionner une base de données créée pour les besoins métier afin d'effectuer la migration.

Pourquoi une instance de migration dont la source est PolarDB-X 1,0 n'affiche-t-elle pas la latence ?

Les informations de latence ne sont pas affichées pour les instances dont la source est PolarDB-X 1,0. En effet, l'instance s'exécute sous forme de tâche distribuée, et les métriques surveillées par DTS existent uniquement dans les sous-tâches. Pour afficher les informations de latence, cliquez sur l'ID de l'instance et accédez à la section Subtask Details de la page Task Management.

Pourquoi DTS ne peut-il pas migrer une base de données MongoDB ?

Cela peut être dû au fait que la base de données à migrer est « local » ou « admin ». DTS ne prend pas en charge l'utilisation des bases de données admin et local de MongoDB comme source ou destination.

Pourquoi une tâche de fusion multi-tables renvoie-t-elle l'erreur DTS-071001 ?

Cette erreur peut survenir si vous avez effectué des opérations DDL en ligne sur la base de données source pendant l'exécution de la tâche de fusion multi-tables. Ces opérations ont modifié le schéma de table de la base de données source, mais vous n'avez pas apporté les modifications correspondantes dans la base de données de destination.

Que faire si l'ajout d'une liste d'autorisation échoue lors de la configuration d'une tâche dans l'ancienne console ?

Utilisez la nouvelle console pour configurer la tâche.

Que faire si une tâche de migration de données échoue en raison d'une opération DDL effectuée sur la base de données source pendant le processus ?

Selon le contenu DDL exécuté sur la base de données source, exécutez manuellement l'opération DDL sur la destination, puis redémarrez la tâche. Pendant la migration des données, n'utilisez pas d'outils tels que pt-online-schema-change pour effectuer des opérations DDL en ligne sur les objets de migration de la base de données source. Sinon, la migration échouera. Si aucune donnée autre que les données DTS n'est écrite dans la base de données de destination, vous pouvez utiliser Data Management (DMS) pour effectuer des opérations DDL en ligne.

Que faire si une tâche de migration de données échoue en raison d'une opération DDL effectuée sur la base de données de destination pendant le processus ?

Si une base de données ou une table de la base de données de destination est supprimée pendant la migration incrémentielle, ce qui entraîne une anomalie de la tâche, vous pouvez reconfigurer la tâche et ne pas sélectionner la base de données ou la table ayant provoqué l'échec comme objet de migration.

Une tâche de migration peut-elle être restaurée après sa libération ? La reconfiguration de la tâche garantit-elle la cohérence des données ?

Une tâche de migration ne peut pas être restaurée après sa libération. Si vous reconfigurez la tâche sans sélectionner Full Data Migration, les données ajoutées après la libération de la tâche ne seront pas migrées vers la base de données de destination, et la cohérence des données ne pourra pas être garantie. Si une grande précision des données est requise, vous pouvez supprimer les données de la base de données de destination, reconfigurer la tâche de migration et sélectionner Schema Migration, Incremental Data Migration et Full Data Migration dans la section Task Stages.

Que faire si une tâche de migration complète DTS n'affiche aucune progression pendant une longue période ?

Si la table à migrer ne possède pas de clé primaire, la migration complète sera très lente. Nous vous recommandons d'ajouter une clé primaire à la table à migrer dans la base de données source avant de démarrer la migration.

Lors de la migration de données entre des tables portant le même nom, puis-je configurer le transfert des données de la table source uniquement si elles n'existent pas dans la table de destination ?

Oui, c'est possible. Lors de la configuration de la tâche, vous pouvez définir le paramètre Processing Mode of Conflicting Tables sur Ignore Errors and Proceed. Si les schémas de table sont cohérents, les enregistrements source dont les clés primaires existent déjà dans la base de données de destination ne seront pas migrés lors de la migration complète.

Comment configurer une tâche de migration inter-comptes ?

Commencez par comprendre les scénarios des tâches inter-comptes. Ensuite, utilisez le compte Alibaba Cloud auquel appartient l'instance de base de données pour configurer l'autorisation RAM pour une tâche inter-comptes Alibaba Cloud. Enfin, configurez la tâche inter-comptes Alibaba Cloud.

Comment une tâche de migration de données se connecte-t-elle à une base de données locale ?

Définissez la Access Method de la base de données locale sur Public IP Address pour configurer la tâche de migration. Migrer des données d'une base de données MySQL autogérée vers une instance ApsaraDB RDS for MySQL.

Que faire si une migration de données échoue avec l'erreur DTS-31008 ?

Selon le message d'erreur, cliquez sur View Cause ou reportez-vous aux Erreurs courantes.

Que faire si la connexion est interrompue lors de la connexion à une base de données autogérée via une liaison louée ?

Vérifiez si la liste d'autorisation d'adresses IP liée à DTS est correctement configurée pour la liaison louée. Pour obtenir la liste des adresses IP à ajouter à la liste d'autorisation, consultez la rubrique Ajouter les plages d'adresses IP des serveurs DTS à la liste d'autorisation d'adresses IP d'une base de données autogérée.

Une tâche de migration dont la source est SQL Server prend-elle en charge la migration des fonctions ?

Non. Si la granularité de l'objet de migration est définie sur table, les autres objets tels que les vues, les déclencheurs et les procédures stockées ne seront pas migrés vers la base de données de destination.

Que faire si une migration complète DTS est lente ?

La migration des données peut prendre un certain temps. Vous pouvez consulter la progression de la migration dans le module Full Data Migration des détails de la tâche, sur la page Task Management.

Que faire si la migration du schéma signale une erreur ?

Cliquez sur l'ID de l'instance pour accéder à la page des détails de la tâche. Consultez le message d'erreur dans le module de migration du schéma sur la page Task Management et résolvez l'erreur en conséquence. Pour connaître les solutions aux erreurs courantes, consultez la rubrique Erreurs courantes.

La migration du schéma et la migration complète sont-elles gratuites ?

Oui, elles sont gratuites. Éléments de facturation.

Les données zset de la destination seront-elles écrasées lors d'une tâche de migration de données entre des instances Redis ?

Oui, les zset de la destination seront écrasés. Si une clé identique à celle de la source existe déjà dans la destination, DTS supprimera d'abord le zset de la clé correspondante dans la destination, puis ajoutera chaque objet de la collection zset source à la destination à l'aide de la commande zadd.

Quel est l'impact de la migration complète sur la base de données source ?

Le processus de migration complète DTS consiste d'abord à segmenter les données, puis à lire et écrire les données au sein des segments. Pour la base de données source, les IOPS augmenteront pendant le processus de segmentation des données. Lors de la lecture des données au sein des segments, les IOPS, le CachePool et la bande passante sortante de la base de données source seront affectés dans une certaine mesure. Selon l'expérience pratique de DTS, ces impacts sont négligeables.

Lorsque PolarDB-X 1,0 est la source, la source PolarDB-X 1,0 d'une tâche de migration prend-elle en charge la mise à l'échelle des nœuds ?

Non. Si la source PolarDB-X 1,0 subit une mise à l'échelle des nœuds, vous devez reconfigurer la tâche.

Les données migrées vers Kafka par DTS peuvent-elles être garanties uniques ?

Non. Étant donné que les données écrites dans Kafka sont ajoutées à la fin, il peut y avoir des données en double lorsque la tâche DTS est redémarrée ou lorsqu'elle extrait de manière répétée les journaux depuis la source. DTS garantit l'idempotence des données, ce qui signifie que les données sont organisées dans l'ordre et que la dernière valeur des données en double sera placée à la fin.

Si je configure d'abord une tâche de migration complète, puis une tâche de migration de données incrémentielles, une incohérence des données se produira-t-elle ?

Oui, une incohérence des données peut se produire. Lorsqu'une tâche de migration de données incrémentielles est configurée séparément, la tâche commence à migrer les données uniquement après son démarrage. Les données incrémentielles générées dans l'instance source avant le démarrage de la tâche de migration incrémentielle ne seront pas synchronisées avec l'instance de destination. Pour effectuer une migration sans temps d'arrêt, nous vous recommandons de sélectionner la migration du schéma, la migration complète des données et la migration incrémentielle des données comme types de migration lors de la configuration de la tâche.

Dois-je sélectionner la migration du schéma lors de la configuration d'une tâche de migration incrémentielle ?

La migration du schéma consiste à migrer les définitions des objets de migration vers l'instance de destination avant le début de la migration des données, par exemple en migrant la définition de la table A vers l'instance de destination. Pour effectuer une migration incrémentielle, nous vous recommandons de sélectionner la migration du schéma, la migration complète des données et la migration incrémentielle des données afin de garantir la cohérence des données.

Pourquoi l'espace de stockage utilisé par RDS est-il plus important que celui de la base de données source lors de la migration d'une base de données autogérée vers RDS ?

Étant donné que DTS effectue une migration logique, il encapsule les données à migrer dans des instructions SQL et les migre vers l'instance RDS de destination. À ce stade, des données de journal binaire seront générées dans l'instance RDS de destination, de sorte que l'espace de stockage utilisé par RDS pendant le processus de migration peut être plus important que celui de la base de données source.

DTS prend-il en charge la migration de MongoDB dans un VPC ?

Oui. DTS prend actuellement en charge l'utilisation d'ApsaraDB for MongoDB dans un VPC comme base de données source pour la migration.

Qu'advient-il des données migrées si la base de données source change pendant la migration des données ?

Si la tâche de migration est configurée avec la migration du schéma, la migration complète et la migration incrémentielle, toute modification de données survenant dans la base de données source pendant la migration sera migrée vers la base de données de destination par DTS.

La libération d'une tâche de migration terminée affectera-t-elle l'utilisation de la base de données migrée ?

Non. Vous pouvez libérer une tâche de migration en toute sécurité uniquement lorsqu'elle est terminée, c'est-à-dire lorsque son Status est Completed.

DTS prend-il en charge la migration incrémentielle pour MongoDB ?

Oui. Consultez les exemples de configuration pertinents dans la rubrique Présentation des solutions de migration de données.

Quelle est la différence entre l'utilisation d'une instance RDS et d'une instance de base de données autogérée avec une adresse IP publique comme source pour une tâche de migration ?

Si vous sélectionnez une instance RDS lors de la configuration d'une tâche de migration, la tâche de migration DTS peut s'adapter aux modifications telles que les modifications DNS et les changements de type de réseau de l'instance RDS, ce qui garantit efficacement la fiabilité de la liaison.

DTS prend-il en charge la migration d'une base de données autogérée sur une instance ECS dans un VPC vers une instance RDS ?

Oui.

  • Si l'instance ECS source et l'instance RDS de destination se trouvent dans la même région, DTS peut accéder directement à la base de données autogérée sur l'instance ECS dans le VPC.

  • Si l'instance ECS source et l'instance RDS de destination se trouvent dans des régions différentes, l'instance ECS doit être associée à une adresse IP élastique (EIP). Lors de la configuration de la tâche de migration, sélectionnez l'instance ECS comme instance source, et DTS utilisera automatiquement l'EIP de l'instance ECS pour accéder à la base de données sur l'instance ECS.

DTS verrouille-t-il les tables pendant la migration ? Cela affecte-t-il la base de données source ?

DTS ne verrouille pas les tables de la base de données source pendant la migration complète des données et la migration incrémentielle des données. Pendant la migration complète et incrémentielle des données, les tables de données de la source de migration peuvent être accessibles normalement en lecture et en écriture.

Lors d'une migration RDS par DTS, les données sont-elles extraites de la base de données RDS principale ou secondaire ?

Lorsque DTS effectue une migration de données, il extrait les données de la base de données RDS principale.

Puis-je planifier une migration automatique ?

Non, DTS ne prend pas actuellement en charge la planification du démarrage des tâches de migration de données.

DTS prend-il en charge la migration de données pour les instances RDS en mode VPC ?

Oui, vous pouvez spécifier l'ID de l'instance RDS lors de la configuration d'une tâche de migration.

Lorsque DTS effectue une migration ou une synchronisation pour le même compte ou entre comptes, utilise-t-il le réseau interne ou le réseau public pour les instances ECS et RDS ? Des frais de trafic sont-ils facturés ?

Le réseau (interne ou public) utilisé par DTS pour les tâches de synchronisation ou de migration n'est pas lié au caractère inter-comptes de la tâche. La facturation des frais de trafic dépend du type de tâche.

  • Réseau utilisé

    • Tâche de migration : Si la migration de données est effectuée au sein de la même région, DTS utilise le réseau interne pour se connecter aux instances ECS et RDS. Si la migration est effectuée entre régions, DTS utilise le réseau public pour se connecter à l'instance source (ECS ou RDS) et le réseau interne pour se connecter à l'instance RDS de destination.

    • Tâche de synchronisation : utilise le réseau interne.

  • Frais de trafic

    • Pour les tâches de migration, des frais de trafic sortant sur le réseau public sont facturés si la Access Method de l'instance de base de données de destination est Public IP Address. Les autres types d'instances DTS n'engendrent pas de frais de trafic.

    • Tâche de synchronisation : aucun frais de trafic n'est facturé.

Les données de la base de données source seront-elles supprimées après la migration à l'aide de DTS ?

Non. Lorsque DTS effectue une migration de données, il copie les données de la base de données source vers la base de données de destination et n'affecte pas les données de la base de données source.

Lors d'une migration de données entre des instances RDS par DTS, puis-je spécifier le nom de la base de données de destination ?

Oui. Lors de la migration de données entre des instances RDS, utilisez la fonctionnalité de mappage de noms de base de données pour spécifier le nom de la base de données de destination. Synchronisation ou migration de données entre différents noms de base de données.

Que faire si la source d'une tâche de migration DTS ne peut pas se connecter à une instance ECS ?

Il se peut que l'instance ECS n'ait pas d'adresse IP publique exposée. Associez une EIP à l'instance ECS et réessayez. Elastic IP Address.

Pourquoi une tâche de migration entre des instances Redis n'affiche-t-elle pas la migration complète ?

Vous pouvez migrer des données entre des instances Redis à l'aide de la fonction Incremental Data Migration ### La migration des données de MySQL vers Mycat est-elle prise en charge ? Oui. Vous pouvez connecter Mycat à Alibaba Cloud en tant que base de données MySQL autogérée, puis utiliser DTS pour migrer les données.

.

de la liste des tâches de suivi, vous pouvez afficher la plage d'offset modifiable pour l'instance de suivi de destination.

  • Sélectionnez un nouvel offset de consommateur selon vos besoins et convertissez-le en horodatage UNIX.

  • Utilisez le nouvel offset de consommateur converti pour remplacer l'ancien offset de consommateur (paramètre initCheckpoint) dans le fichier de code.

  • Relancez le client.

  • Que faire si le client ne peut pas se connecter en utilisant l'adresse VPC de la tâche de suivi ?

    La machine sur laquelle se trouve le client peut ne pas être dans le VPC spécifié lors de la configuration de la tâche de suivi (par exemple, le VPC du client a été modifié). Vous devez reconfigurer la tâche.

    Pourquoi l'offset du consommateur dans la console est-il supérieur à la valeur maximale de la plage de données ?

    Cela s'explique par le fait que la fréquence de mise à jour de la plage de données du canal de suivi est d'une minute, tandis que la fréquence de mise à jour de l'offset du consommateur est de 10 secondes. Ainsi, si vous consommez en temps réel, la valeur de l'offset du consommateur peut être supérieure à la valeur maximale de la plage de données du canal de suivi.

    Comment DTS garantit-il que les données suivies par le SDK constituent une transaction complète ?

    DTS recherche la transaction complète correspondant à l'offset du consommateur fourni. Le côté serveur distribue les données en aval à partir de l'instruction BEGIN de l'ensemble de la transaction, de sorte que le contenu complet de la transaction puisse être reçu.

    Comment confirmer si les données sont consommées normalement ?

    Si les données sont consommées normalement, l'offset du consommateur dans la console Data Transmission Service avancera normalement.

    Que signifie usePublicIp=true dans le SDK de suivi des modifications ?

    Dans la configuration du SDK de suivi des modifications, usePublicIp=true signifie que le SDK accède au canal de suivi DTS via le réseau public.

    L'activité commerciale sera-t-elle affectée lorsque la base de données RDS principale d'une tâche de suivi des modifications est basculée ou redémarrée ?

    Lorsqu'un basculement principal/secondaire ou un redémarrage se produit pour une instance ApsaraDB RDS for MySQL, ApsaraDB RDS for PostgreSQL, PolarDB for MySQL, PolarDB for PostgreSQL ou PolarDB-X 1,0 (type de stockage RDS for MySQL), DTS effectuera un basculement adaptatif et l'activité commerciale ne sera pas affectée.

    RDS fournit-il un outil pour le téléchargement automatique des journaux binaires vers un serveur local ?

    La fonctionnalité de suivi des modifications de DTS prend en charge le suivi en temps réel des journaux binaires RDS. Vous pouvez activer le service de suivi des modifications DTS et utiliser le SDK DTS pour suivre les données des journaux binaires RDS et les synchroniser avec un serveur local en temps réel.

    Les données incrémentielles en temps réel du suivi des modifications font-elles référence uniquement aux nouvelles données ou incluent-elles également les données modifiées ?

    Les données incrémentielles pouvant être suivies par le suivi des modifications DTS incluent tous les ajouts, suppressions, modifications et changements de schéma (DDL).

    Pourquoi le SDK reçoit-il des données en double après un redémarrage si un enregistrement n'est pas accusé de réception (ACK) par l'extrémité consommateur d'une tâche de suivi des modifications ?

    Lorsqu'un message n'est pas accusé de réception (ACK) par le SDK, le côté serveur termine la poussée de tous les messages dans le tampon. Une fois la poussée terminée, le SDK ne peut plus recevoir de messages. À ce stade, l'offset du consommateur enregistré par le côté serveur correspond à l'offset du dernier message précédant celui non accusé de réception. Lorsque le SDK redémarre, afin de garantir qu'aucun message ne soit perdu, le côté serveur repoussera les données à partir de l'offset correspondant au message précédant celui non accusé de réception. Par conséquent, le SDK recevra certains messages en double.

    À quelle fréquence l'offset du consommateur de suivi des modifications est-il mis à jour, et pourquoi le SDK reçoit-il parfois des données en double lors de son redémarrage ?

    Après que le SDK de suivi des modifications a consommé chaque message, il doit appeler ackAsConsumed pour envoyer un accusé de réception (ACK) au côté serveur. Après réception de l'ACK, le côté serveur met à jour l'offset du consommateur en mémoire, puis persiste l'offset du consommateur toutes les 10 secondes. Si le SDK est redémarré avant que le dernier ACK ne soit persisté, le côté serveur commencera à pousser les messages à partir du dernier offset du consommateur persisté afin de garantir qu'aucun message ne soit perdu. Dans ce cas, le SDK recevra des messages en double.

    Une instance de suivi des modifications peut-elle suivre plusieurs instances RDS ?

    Non. Actuellement, une instance de suivi des modifications ne peut suivre qu'une seule instance RDS.

    Une incohérence des données peut-elle se produire dans une instance de suivi des modifications ?

    Non. Une tâche de suivi des modifications obtient uniquement les modifications de la base de données source et n'implique pas d'incohérence des données. Si les données consommées par le client sont incohérentes avec vos attentes, vous devez effectuer le dépannage vous-même.

    Que faire lorsque UserRecordGenerator apparaît lors de la consommation des données d'abonnement ?

    Lorsque vous consommez des données suivies, si vous voyez un message tel que UserRecordGenerator: haven't receive records from generator for 5s, vous devez vérifier si l'offset du consommateur se situe dans la plage d'offset du module d'ingestion de données incrémentielles et vous assurer que l'extrémité consommateur fonctionne normalement.

    Plusieurs partitions peuvent-elles être créées pour un seul topic ?

    Non. Pour garantir l'ordre global des messages, chaque topic de suivi dans DTS ne possède qu'une seule partition, qui est assignée de manière fixe à la partition 0.

    Le SDK de suivi des modifications prend-il en charge Go ?

    Oui. Pour l'exemple de code, consultez le dépôt dts-subscribe-demo.

    Le SDK de suivi des modifications prend-il en charge Python ?

    Oui. Pour l'exemple de code, consultez dts-subscribe-demo.

    flink-dts-connector prend-il en charge la consommation simultanée multithread des données suivies ?

    Non.

    Puis-je configurer à la fois une tâche de suivi des modifications et une tâche de synchronisation de données pour la même instance RDS ?

    Oui. Les deux tâches n'interfèrent pas l'une avec l'autre. Une tâche de suivi des modifications et une tâche de synchronisation de données sont deux types de tâches indépendants qui peuvent coexister sur la même instance RDS sans interférence mutuelle.

    Problèmes de validation des données

    Quelles sont les causes de l'incohérence des données dans une tâche de validation des données ?

    Les causes courantes sont les suivantes :

    1. La tâche de migration ou de synchronisation présente un retard.

    2. Une colonne avec une valeur par défaut a été ajoutée à la base de données source et la tâche présente un retard.

    3. Des données ont été écrites dans la base de données de destination à partir de sources autres que DTS.

    4. Une opération DDL a été effectuée sur la base de données source d'une tâche avec la fonctionnalité de fusion multi-table activée.

    5. La tâche de migration ou de synchronisation a utilisé la fonctionnalité de mappage des noms de base de données, de tables et de colonnes.

    Pourquoi une tâche de validation de schéma signale-t-elle une différence pour isRelHasoids ?

    Dans les versions de PostgreSQL antérieures à 12, vous pouvez ajouter un champ d'identifiant d'objet globalement unique (OID) en spécifiant WITH OIDS lors de la création d'une table. Si la source d'une tâche de validation de structure contient des tables créées avec WITH OIDS et que la destination est une version ultérieure de PostgreSQL qui ne prend pas en charge WITH OIDS, une différence isRelHasoids est détectée.

    Dois-je prêter attention à une différence isRelHasoids signalée par une tâche de validation de schéma ?

    Non.

    DTS synchronisera-t-il ou migrera-t-il le champ identifiant d'objet (OID) ?

    Le champ identifiant d'objet (OID) est généré automatiquement en spécifiant WITH OIDS. Que la destination prenne en charge ce champ ou non, DTS ne synchronisera ni ne migrera ces données.

    Comment vérifier si une table possède un champ identifiant d'objet (OID) ?

    Remarque

    Dans la commande, remplacez <table_name> par le nom de la table à interroger.

    • Commande SQL : SELECT relname AS table_name, relhasoids AS has_oids FROM pg_class WHERE relname = '<table_name>' AND relkind = 'r';

    • Commande client : \d+ <table_name>

    Comment dépanner les incohérences de données dans le rapport de vérification complète des données ?

    Vous pouvez résoudre le problème en suivant les étapes ci-dessous :

    1. Vérifiez les valeurs source et destination des colonnes correspondantes dans le rapport de vérification pour identifier les champs et valeurs spécifiques incohérents.

    2. Sur la base du rapport de vérification, connectez-vous manuellement aux bases de données source et de destination et comparez les différentes valeurs pour déterminer si elles sont attendues.

    3. Confirmez qu'aucune donnée n'est écrite dans les bases de données source ou de destination pendant la vérification. Si cela ne peut pas être garanti, nous vous recommandons de suspendre les écritures dans la base de données source pendant les heures creuses et de relancer la vérification.

    4. Si l'incohérence persiste, activez temporairement Data Range (paiement à l'utilisation) sur les bases de données source et de destination pour vérifier si les champs correspondants ont été modifiés en examinant les journaux d'audit.

    5. Les différences concernant certains attributs, tels que SECURITY_TYPE), sont un comportement attendu et ne nécessitent aucune action.

    6. Une vérification complète des données réussie prouve la cohérence des données après des modifications backend non standard.

    7. Les incohérences de vérification complète des données sont généralement sans rapport avec les différences structurelles. Nous vous recommandons d'exécuter manuellement count(*) pour comparer le nombre d'enregistrements dans les bases de données source et de destination pour une vérification supplémentaire.

    Pourquoi la progression de la tâche DTS indique-t-elle toujours un état incomplet (par exemple 41 %) après la fin du transfert de données ?

    Le pourcentage de progression de la tâche DTS comprend deux phases : le transfert de données (migration complète des données) et la vérification des données. Une fois la migration complète des données terminée, le pourcentage de progression restant représente le processus de vérification des données en cours. La vérification des données est une phase de contrôle de cohérence indépendante qui s'exécute après le transfert complet des données. La tâche globale n'est terminée que lorsque la progression de la vérification atteint 100 %.

    Si vous devez vérifier les données immédiatement après la fin du transfert, vous pouvez vous connecter manuellement à la base de données de destination pour vérifier les données sans attendre que la progression de la vérification atteigne 100 %.

    Causes et solutions des requêtes SQL lentes lors de la vérification complète des données

    Cause : DTS lit les données des grandes tables par fragments en utilisant l'ID de clé primaire lors de la vérification complète des données. Lorsque le volume de données est important, les requêtes par fragment peuvent prendre beaucoup de temps, ce qui peut entraîner des requêtes SQL lentes sur la base de données source.

    Solution :

    1. Vérifiez d'abord si la tâche de vérification complète des données s'est arrêtée. Si la tâche de vérification s'est arrêtée, de telles requêtes ne devraient plus être générées.

    2. Si la tâche de vérification est toujours en cours et affecte votre activité, nous vous recommandons d'exécuter la vérification complète des données pendant les heures creuses, ou de mettre en pause la tâche de vérification et de la relancer pendant les heures creuses.

    Autres problèmes

    Quel est l'impact de la modification des données dans la base de données de destination pendant l'exécution d'une tâche de synchronisation ou de migration de données ?

    • La modification des données dans la base de données de destination peut entraîner l'échec de la tâche DTS. Lors de la migration ou de la synchronisation des données, si vous effectuez des opérations sur les objets à migrer ou à synchroniser dans la base de données de destination, cela peut provoquer des conflits de clés primaires, l'absence d'enregistrements de mise à jour ou d'autres situations, ce qui entraînera finalement l'échec de la tâche DTS. Cependant, vous pouvez effectuer des opérations qui n'interrompront pas la tâche DTS, telles que la création d'une table dans l'instance de destination et l'écriture de données dans celle-ci. Étant donné que cette table ne fait pas partie des objets de migration ou de synchronisation, elle n'entraînera pas l'échec de la tâche DTS.

    • Étant donné que DTS lit les informations de la base de données de l'instance source et migre ou synchronise ses données complètes, ses données de schéma et ses données incrémentielles vers l'instance de destination, les données modifiées dans la base de données de destination pendant la tâche peuvent être écrasées par les données migrées ou synchronisées depuis la base de données source.

    Est-il possible d'écrire des données simultanément dans les bases de données source et de destination pendant l'exécution d'une tâche de synchronisation ou de migration ?

    Oui. Toutefois, si des données sont écrites dans la base de données de destination par d'autres sources que DTS pendant l'exécution de l'instance DTS, cela peut provoquer une anomalie au niveau des données de la base de destination ou de l'instance DTS elle-même.

    Que se passe-t-il si je modifie le mot de passe de la base de données source ou de destination pendant l'exécution d'une instance DTS ?

    L'instance DTS signale une erreur et s'interrompt. Cliquez sur l'ID de l'instance pour afficher ses détails, puis modifiez le mot de passe du compte source ou de destination dans l'onglet SQL Insight. Accédez ensuite à l'onglet Basic Information et redémarrez le module ayant signalé l'erreur dans la section Task Management.

    Pourquoi certaines bases de données source ou de destination ne proposent-elles pas le type de connexion par IP publique ?

    Cela dépend du type de connexion de la base de données source ou de destination, du type de tâche et du type de base de données. Par exemple, pour une source de type MySQL, les tâches de migration et de suivi permettent de choisir une connexion via une adresse IP publique, tandis que les tâches de synchronisation ne prennent pas en charge les connexions par IP publique.

    La migration ou la synchronisation de données entre comptes est-elle prise en charge ?

    Oui. Configurer une tâche inter-comptes Alibaba Cloud.

    Les bases de données source et de destination peuvent-elles être la même instance de base de données ?

    Oui. Si la source et la destination correspondent à la même instance, utilisez la fonctionnalité de mappage pour isoler les données. À défaut, l'instance DTS risque d'échouer ou des pertes de données peuvent survenir. Mappage de bases de données, de tables et de colonnes.

    Pourquoi une tâche ayant Redis comme destination signale-t-elle l'erreur « OOM command not allowed when used memory > 'maxmemory' » ?

    Cela peut indiquer que l'espace de stockage de l'instance Redis de destination est insuffisant. Si l'architecture de l'instance Redis de destination est de type cluster, il est également possible qu'un shard ait atteint sa limite mémoire. Vous devez alors mettre à niveau les spécifications de l'instance de destination.

    Qu'est-ce que la stratégie d'accès AliyunDTSRolePolicy et à quoi sert-elle ?

    La stratégie AliyunDTSRolePolicy autorise DTS à accéder aux ressources cloud telles que RDS et ECS sous le compte actuel ou entre différents comptes. Elle appelle les informations relatives aux ressources cloud pertinentes lors de la configuration d'une tâche de migration, de synchronisation ou de suivi. Accorder à DTS les autorisations d'accès aux ressources cloud.

    Comment effectuer l'autorisation de rôle RAM ?

    Lors de votre première connexion à la console, DTS vous demande d'autoriser le rôle AliyunDTSDefaultRole. Suivez les instructions pour accéder à la page d'autorisation RAM. Accorder à DTS les autorisations d'accès aux ressources cloud.

    Important

    Vous devez vous connecter à la console avec un compte Alibaba Cloud pour effectuer cette opération.

    Le mot de passe du compte saisi pour une tâche DTS peut-il être modifié ?

    Vous pouvez modifier le mot de passe du compte de base de données associé à une tâche DTS. Cliquez sur l'ID de l'instance pour ouvrir la page des détails de l'instance. Dans l'onglet Basic Information, cliquez sur Basic Information pour changer le mot de passe de la base de données source ou de destination.

    Important

    Le mot de passe du compte système d'une tâche DTS ne peut pas être modifié.

    Pourquoi une table MaxCompute comporte-t-elle le suffixe « _base » ?

    1. Synchronisation initiale du schéma.

      DTS synchronise les définitions de schéma des tables à synchroniser depuis la base de données source vers MaxCompute. Lors de l'initialisation, DTS ajoute le suffixe _base aux noms des tables. Par exemple, si la table source est customer, la table dans MaxCompute devient customer_base.

    2. Synchronisation initiale des données complètes.

      DTS synchronise toutes les données historiques des tables de la base de données source vers les tables _base dans MaxCompute. Par exemple, les données sont synchronisées de la table customer de la base source vers la table customer_base dans MaxCompute. Ces données servent de référence de base pour la synchronisation incrémentielle ultérieure.

      Remarque

      Cette table est également appelée table de référence complète.

    3. Synchronisation incrémentielle des données.

      DTS crée une table de journal incrémentiel dans MaxCompute. Le nom de la table correspond au nom de la table de destination avec le suffixe _log, par exemple customer_log. DTS synchronise ensuite les données incrémentielles de la base de données source vers cette table en temps réel.

      Remarque

      Pour plus d'informations sur la structure de la table de journal incrémentiel, consultez Schéma de la table de journal incrémentiel.

    Que faire si je ne parviens pas à obtenir le topic Kafka ?

    Le broker Kafka actuellement configuré peut ne pas contenir d'informations sur le topic. Exécutez la commande suivante pour vérifier la distribution du broker du topic :

    ./bin/kafka-topics.sh --describe --zookeeper zk01:2181/kafka --topic topic_name

    Puis-je créer une instance MySQL locale en tant que base de données secondaire pour une instance RDS ?

    Oui. Utilisez la fonctionnalité de migration de données de Data Transmission Service (DTS) pour configurer une synchronisation de données en temps réel de RDS vers une instance MySQL autogérée locale, afin de mettre en place une architecture primaire-secondaire.

    Comment copier les données d'une instance RDS vers une nouvelle instance RDS ?

    Sélectionnez la migration de schéma, la migration complète et la migration incrémentielle comme types de migration. Migration de données entre instances ApsaraDB RDS.

    DTS prend-il en charge la copie d'une base de données au sein d'une instance RDS pour créer une nouvelle base de données identique, à l'exception du nom ?

    Oui. La fonctionnalité de mappage de noms d'objets fournie par DTS permet de copier une base de données au sein d'une instance RDS pour créer une nouvelle base de données identique, seul le nom de la base de données changeant.

    Que faire si une instance DTS affiche constamment un retard ?

    Les causes possibles sont les suivantes :

    • Plusieurs tâches DTS ont été créées pour l'instance de base de données source en utilisant différents comptes, ce qui a entraîné une charge élevée sur l'instance. Il convient d'utiliser le même compte pour créer les tâches.

    • L'instance de base de données de destination manque de mémoire. Planifiez une intervention pour redémarrer l'instance de base de données de destination. Si le problème persiste, mettez à niveau les spécifications de l'instance de destination ou effectuez un basculement primaire/secondaire.

      Remarque

      Un basculement primaire/secondaire peut provoquer une déconnexion transitoire. Assurez-vous que votre application dispose d'un mécanisme de reconnexion automatique.

    Que faire si tous les champs apparaissent en minuscules après la synchronisation ou la migration vers la base de données de destination dans l'ancienne console ?

    Utilisez la nouvelle console et la fonctionnalité de politique de casse des noms d'objets de la base de données de destination. Politique de casse des noms d'objets de la base de données de destination.

    Une tâche DTS mise en pause peut-elle être reprise ?

    En général, une tâche DTS mise en pause depuis moins de 24 heures peut être reprise normalement. Si le volume de données est faible, une tâche mise en pause depuis moins de 7 jours peut également être reprise. Nous vous recommandons de ne pas suspendre une tâche pendant plus de 6 heures.

    Pourquoi la progression repart-elle de 0 après la mise en pause et le redémarrage d'une tâche ?

    Après le redémarrage d'une tâche, DTS interroge à nouveau les données déjà traitées avant de continuer à traiter les données restantes. Durant ce processus, la progression affichée peut différer de la progression réelle en raison de la latence.

    Quel est le principe du changement DDL sans verrouillage ?

    Pour connaître les principes principaux du changement DDL sans verrouillage, consultez Principes principaux.

    DTS prend-il en charge la mise en pause de la synchronisation ou de la migration d'une table spécifique ?

    Non.

    Dois-je racheter une tâche si elle échoue ?

    Non. Vous pouvez reconfigurer la tâche d'origine.

    Que se passe-t-il si plusieurs tâches écrivent des données dans la même destination ?

    Cela peut entraîner une incohérence des données.

    Pourquoi l'instance reste-t-elle verrouillée après le renouvellement ?

    Après le renouvellement d'une instance DTS verrouillée, le déblocage de l'instance prend un certain temps. Veuillez patienter.

    Puis-je modifier le groupe de ressources d'une instance DTS ?

    Oui. Sur la page Change Password de l'instance, cliquez sur Basic Information à côté de Modification dans la zone Resource Group Name.

    DTS dispose-t-il d'un outil d'analyse des journaux binaires ?

    Non, DTS ne propose pas d'outil d'analyse des journaux binaires.

    Est-il normal qu'une tâche incrémentielle affiche toujours 95 % ?

    Oui. Une tâche incrémentielle est continue et ne se termine jamais. La progression n'atteindra donc pas 100 %.

    Pourquoi une tâche DTS n'a-t-elle pas été libérée après plus de 7 jours ?

    Il arrive occasionnellement qu'une tâche gelée soit conservée pendant plus de 7 jours.

    Puis-je modifier le port d'une tâche créée ?

    Cette opération n'est pas prise en charge.

    L'instance RDS for MySQL montée sous PolarDB-X 1,0 dans une tâche DTS peut-elle faire l'objet d'un déclassement (downgrade) ?

    Le déclassement n'est pas recommandé. Il déclenche un basculement primaire/secondaire, ce qui peut entraîner une perte de données.

    L'instance source ou de destination peut-elle être mise à niveau ou faire l'objet d'un déclassement pendant l'exécution d'une tâche DTS ?

    La mise à niveau ou le déclassement de l'instance source ou de destination pendant l'exécution d'une tâche DTS peut provoquer un retard de la tâche ou une perte de données. Nous vous déconseillons de modifier les spécifications de l'instance source ou de destination.

    Quel est l'impact d'une tâche DTS sur les instances source et de destination ?

    La synchronisation initiale des données complètes consomme certaines ressources de lecture et d'écriture des bases de données source et de destination, ce qui peut augmenter la charge de la base de données. Nous vous recommandons d'effectuer les tâches complètes pendant les heures creuses.

    Quelle est la latence approximative d'une tâche DTS ?

    La latence d'une tâche DTS ne peut pas être estimée, car elle dépend de nombreux facteurs, tels que la charge d'exécution de l'instance source, la bande passante du réseau de transmission, la latence réseau et les performances d'écriture de l'instance de destination.

    Si la console Data Transmission Service redirige automatiquement vers la console Data Management DMS, comment revenir à l'ancienne console Data Transmission Service ?

    Dans la console DMS, cliquez sur l'icône chatbot située en bas à droite, puis cliquez sur Return to the previous version pour revenir à la version précédente de la console Data Transmission Service.

    DTS prend-il en charge le chiffrement des données ?

    DTS prend en charge l'accès sécurisé à la base de données source ou de destination via le chiffrement SSL (Secure Sockets Layer) pour lire les données de la source ou écrire dans la destination, mais il ne prend pas en charge le chiffrement des données en transit pendant la transmission.

    DTS prend-il en charge ClickHouse en tant que source ou destination ?

    Non.

    DTS prend-il en charge AnalyticDB for MySQL 2,0 en tant que source ou destination ?

    AnalyticDB for MySQL 2,0 est pris en charge uniquement en tant que destination, et la solution avec AnalyticDB for MySQL 2,0 comme destination n'est pas encore disponible dans la nouvelle console. Elle ne peut être configurée que dans l'ancienne console.

    Pourquoi ne vois-je pas une tâche nouvellement créée dans la console ?

    Vous avez peut-être sélectionné la mauvaise liste de tâches ou appliqué des filtres incorrects. Sélectionnez les options de filtrage appropriées dans la liste de tâches correspondante, telles que la région et le groupe de ressources corrects.

    Vérifiez que la liste déroulante de portée des ressources Basic Information et la liste déroulante de sélection de la région All Resources (par exemple Region) dans la barre de navigation supérieure de la console sont correctement définies. Des paramètres de portée de ressources ou de région inappropriés peuvent rendre les tâches nouvellement créées invisibles.

    Les éléments de configuration grisés d'une tâche créée peuvent-ils être modifiés ?

    Cette opération n'est pas prise en charge.

    Comment configurer les alertes de latence et les seuils ?

    DTS propose des fonctionnalités de surveillance et d'alerte. Définissez des règles d'alerte pour les métriques importantes afin de suivre l'état d'exécution. Configurer la surveillance et les alertes.

    Puis-je consulter la cause de l'échec d'une tâche qui a échoué depuis longtemps ?

    Non. Si une tâche a échoué depuis longtemps (par exemple, plus de 7 jours), les journaux associés sont supprimés et la cause de l'échec ne peut plus être consultée.

    Une tâche qui a échoué depuis longtemps peut-elle être restaurée ?

    Non. Si une tâche a échoué depuis longtemps (par exemple, plus de 7 jours), les journaux associés sont supprimés et ne peuvent pas être restaurés. Vous devez reconfigurer la tâche.

    Qu'est-ce que le compte rdsdt_dtsacct ?

    Si vous n'avez pas créé le compte rdsdt_dtsacct, il a peut-être été créé par DTS. DTS crée un compte intégré nommé rdsdt_dtsacct dans certaines instances de base de données pour se connecter aux instances de base de données source et de destination.

    Comment afficher les informations sur les tables heap, les tables sans clé primaire, les tables compressées, les tables avec colonnes calculées et les tables avec colonnes sparse dans SQL Server ?

    Exécutez les instructions SQL suivantes pour vérifier si la base de données source contient des tables correspondant à ces scénarios :

    1. Vérifier la présence de tables heap dans la base de données source :

      SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.indexes WHERE index_id = 0);
    2. Vérifier la présence de tables sans clé primaire :

      SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id NOT IN (SELECT parent_object_id FROM sys.objects WHERE type = 'PK');
    3. Vérifier la présence de colonnes de clé primaire non incluses dans l'index clusterisé :

      SELECT s.name schema_name, t.name table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id WHERE t.type = 'U' AND s.name NOT IN('cdc', 'sys') AND t.name NOT IN('systranschemas') AND t.object_id IN ( SELECT pk_colums_counter.object_id AS object_id FROM (select pk_colums.object_id, sum(pk_colums.column_id) column_id_counter from (select sic.object_id object_id, sic.column_id FROM sys.index_columns sic, sys.indexes sis WHERE sic.object_id = sis.object_id AND sic.index_id = sis.index_id AND sis.is_primary_key = 'true') pk_colums group by object_id) pk_colums_counter inner JOIN ( select cluster_colums.object_id, sum(cluster_colums.column_id) column_id_counter from (SELECT sic.object_id object_id, sic.column_id FROM sys.index_columns sic, sys.indexes sis WHERE sic.object_id = sis.object_id AND sic.index_id = sis.index_id AND sis.index_id = 1) cluster_colums group by object_id ) cluster_colums_counter ON pk_colums_counter.object_id = cluster_colums_counter.object_id and pk_colums_counter.column_id_counter != cluster_colums_counter.column_id_counter);
    4. Vérifier la présence de tables compressées dans la base de données source :

      SELECT s.name AS schema_name, t.name AS table_name FROM sys.objects t, sys.schemas s, sys.partitions p WHERE s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id = p.object_id AND p.data_compression != 0;
    5. Vérifier la présence de tables contenant des colonnes calculées :

      SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.columns WHERE is_computed = 1);
    6. Vérifier la présence de tables contenant des colonnes sparse :

      SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.columns WHERE is_sparse = 1);

    Que faire si les schémas source et destination sont incohérents ?

    Vous pouvez utiliser la fonctionnalité de mappage pour aligner les colonnes entre la source et la destination. Mappage de bases de données, tables et colonnes.

    Remarque

    La modification du type de colonne n'est pas prise en charge.

    Le mappage de bases de données, tables et colonnes permet-il de modifier le type de colonne ?

    Non.

    DTS prend-il en charge la limitation de la vitesse de lecture de la base de données source ?

    Non. Vous devez évaluer les performances de la base de données source (par exemple, vérifier que les IOPS et la bande passante réseau répondent aux exigences) avant d'exécuter la tâche. Nous vous recommandons également d'exécuter la tâche pendant les heures creuses.

    Comment nettoyer les documents orphelins dans une instance de cluster fragmenté MongoDB ?

    Vérifier la présence de documents orphelins

    1. Connectez-vous à l'instance de cluster fragmenté MongoDB à l'aide du shell mongo.

      Pour vous connecter à ApsaraDB for MongoDB, consultez Se connecter à une instance de cluster fragmenté à l'aide du shell mongo.

    2. Exécutez la commande suivante pour basculer vers la base de données de destination.

      use <db_name>
    3. Exécutez la commande suivante pour afficher les informations relatives aux documents orphelins.

      db.<coll_name>.find().explain("executionStats")
      Remarque

      Consultez les executionStats de chaque shard. Si le champ chunkSkips de l'étape SHARDING_FILTER n'est pas égal à 0, cela signifie qu'il existe des documents orphelins sur le shard correspondant.

      L'exemple de sortie suivant indique que 102 documents (« nReturned » : 102) sont renvoyés lors de l'étape FETCH précédant l'étape SHARDING_FILTER . Ensuite, deux documents orphelins (« chunkSkips » : 2) sont filtrés lors de l'étape SHARDING_FILTER . Enfin, 100 documents (« nReturned » : 100) sont renvoyés.

      "stage" : "SHARDING_FILTER",
      "nReturned" : 100,
      ......
      "chunkSkips" : 2,
      "inputStage" : {
          "stage" : "FETCH",
          "nReturned" : 102,

      Pour en savoir plus sur l'étape SHARDING_FILTER , consultez le Manuel MongoDB.

    Nettoyer les documents orphelins

    Important

    Si vous disposez de plusieurs bases de données, vous devez nettoyer les documents orphelins pour chacune d'elles.

    ApsaraDB for MongoDB

    Remarque

    L'exécution du script de nettoyage sur une instance dont la version majeure est antérieure à MongoDB 4.2 ou dont la version mineure est antérieure à 4.0.6 génère une erreur. Pour consulter la version actuelle de votre instance, reportez-vous à la rubrique Versions mineures de MongoDB. Pour mettre à niveau la version majeure ou mineure, consultez les rubriques Mettre à niveau la version majeure d'une base de données et Mettre à niveau la version mineure d'une base de données.

    Utilisez la commande cleanupOrphaned pour nettoyer les documents orphelins. La procédure diffère légèrement selon que vous utilisez MongoDB 4.4 (et versions ultérieures) ou MongoDB 4.2 (et versions antérieures).

    MongoDB 4.4 et versions ultérieures

    1. Sur un serveur capable de se connecter à votre instance de cluster fragmenté, créez un script JavaScript (JS) nommé cleanupOrphaned.js .

      Remarque

      Ce script nettoie les documents orphelins de toutes les collections de plusieurs bases de données réparties sur plusieurs shards. Si vous devez nettoyer les documents orphelins d'une collection spécifique, vous pouvez modifier le script JS.

      // List of shard names
      var shardNames = ["shardName1", "shardName2"];
      // List of databases
      var databasesToProcess = ["database1", "database2", "database3"];
      shardNames.forEach(function(shardName) {
          // Iterate over the specified list of databases
          databasesToProcess.forEach(function(dbName) {
              var dbInstance = db.getSiblingDB(dbName);
              // Get the names of all collections in the database instance
              var collectionNames = dbInstance.getCollectionNames();
              // Iterate over each collection
              collectionNames.forEach(function(collectionName) {
                  // The full collection name
                  var fullCollectionName = dbName + "." + collectionName;
                  // Build the cleanupOrphaned command
                  var command = {
                      runCommandOnShard: shardName,
                      command: { cleanupOrphaned: fullCollectionName }
                  };
                  // Execute the command
                  var result = db.adminCommand(command); 
                  if (result.ok) {
                      print("Cleaned up orphaned documents for collection " + fullCollectionName + " on shard " + shardName);
                      printjson(result);
                  } else {
                      print("Failed to clean up orphaned documents for collection " + fullCollectionName + " on shard " + shardName);
                  }
              });
          });
      });

      Dans le script, modifiez les valeurs des paramètres shardNames et databasesToProcess :

      • shardNames : tableau d'identifiants des shards dont vous souhaitez nettoyer les documents orphelins. Vous pouvez obtenir les identifiants des shards dans la liste des shards de la page Informations de base de l'instance. Par exemple, d-bp15a3796d3a**** .

      • databasesToProcess : tableau des noms des bases de données dont vous souhaitez nettoyer les documents orphelins.

    2. Dans le répertoire contenant le script cleanupOrphaned.js , exécutez la commande suivante pour nettoyer les documents orphelins.

      mongo --host <Mongoshost> --port <Primaryport>  --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txt

      Paramètre

      Description

      <Mongoshost>

      Adresse de connexion du nœud mongos de l'instance de cluster fragmenté. Exemple : s-bp14423a2a51****.mongodb.rds.aliyuncs.com .

      <Primaryport>

      Numéro de port du nœud mongos de l'instance de cluster fragmenté. La valeur par défaut est 3717.

      <database>

      Nom de la base de données d'authentification. Il s'agit de la base de données à laquelle appartient le compte de base de données.

      <username>

      Compte de base de données.

      <password>

      Mot de passe du compte de base de données.

      output.txt

      Fichier de sortie contenant les résultats de l'exécution.

    MongoDB 4.2 et versions antérieures

    1. Sur un serveur capable de se connecter à votre instance de cluster fragmenté, créez un script JS nommé cleanupOrphaned.js .

      Remarque

      Ce script nettoie les documents orphelins d'une collection spécifiée dans une base de données donnée sur plusieurs shards. Pour nettoyer les documents orphelins de plusieurs collections, vous pouvez modifier le paramètre fullCollectionName et exécuter le script plusieurs fois, ou bien modifier le script pour qu'il itère sur les collections.

      function cleanupOrphanedOnShard(shardName, fullCollectionName) {
          var nextKey = { };
          var result;
          while ( nextKey != null ) {
              var command = {
                  runCommandOnShard: shardName,
                  command: { cleanupOrphaned: fullCollectionName, startingFromKey: nextKey }
              };
              result = db.adminCommand(command);
              printjson(result);
              if (result.ok != 1 || !(result.results.hasOwnProperty(shardName)) || result.results[shardName].ok != 1 ) {
                  print("Unable to complete at this time: failure or timeout.")
                  break
              }
              nextKey = result.results[shardName].stoppedAtKey;
          }
          print("cleanupOrphaned done for coll: " + fullCollectionName + " on shard: " + shardName)
      }
      var shardNames = ["shardName1", "shardName2", "shardName3"]
      var fullCollectionName = "database.collection"
      shardNames.forEach(function(shardName) {
          cleanupOrphanedOnShard(shardName, fullCollectionName);
      });

      Dans le script, modifiez les valeurs des paramètres shardNames et fullCollectionName :

      • shardNames : tableau d'identifiants des shards dont vous souhaitez nettoyer les documents orphelins. Vous pouvez obtenir les identifiants des shards dans la liste des shards de la page Informations de base de l'instance. Par exemple, d-bp15a3796d3a**** .

      • fullCollectionName : nom de la collection dont vous souhaitez nettoyer les documents orphelins, au format database.collection .

    2. Dans le répertoire contenant le script cleanupOrphaned.js , exécutez la commande suivante pour nettoyer les documents orphelins.

      mongo --host <Mongoshost> --port <Primaryport>  --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txt

      Paramètre

      Description

      <Mongoshost>

      Adresse de connexion du nœud mongos de l'instance de cluster fragmenté. Exemple : s-bp14423a2a51****.mongodb.rds.aliyuncs.com .

      <Primaryport>

      Numéro de port du nœud mongos de l'instance de cluster fragmenté. La valeur par défaut est 3717.

      <database>

      Nom de la base de données d'authentification. Il s'agit de la base de données à laquelle appartient le compte de base de données.

      <username>

      Compte de base de données.

      <password>

      Mot de passe du compte de base de données.

      output.txt

      Fichier de sortie contenant les résultats de l'exécution.

    MongoDB auto-géré

    1. Sur un serveur capable de se connecter à votre base de données MongoDB auto-gérée, téléchargez le fichier de script cleanupOrphaned.js .

      wget "https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/120562/cn_zh/1564451237979/cleanupOrphaned.js"
    2. Modifiez le fichier de script cleanupOrphaned.js . Remplacez test par le nom de la base de données dont vous souhaitez nettoyer les documents orphelins.

      Important

      Si vous disposez de plusieurs bases de données, vous devez répéter les étapes 2 et 3 pour chacune d'elles.

      function cleanupOrphaned(coll) {
        var nextKey = { };
        var result;
        while ( nextKey != null ) {
          result = db.adminCommand( { cleanupOrphaned: coll, startingFromKey: nextKey } );
          if (result.ok != 1)
             print("Unable to complete at this time: failure or timeout.")
          printjson(result);
          nextKey = result.stoppedAtKey;
        }
      }
      var dbName = "test"
      db = db.getSiblingDB(dbName)
      db.getCollectionNames().forEach(function(collName) {
              cleanupOrphaned(dbName + "." + collName);
      });
    3. Exécutez la commande suivante pour nettoyer les documents orphelins de toutes les collections de la base de données spécifiée sur un shard.

      Remarque

      Vous devez répéter cette étape pour chaque shard.

      mongo --host <Shardhost> --port <Primaryport>  --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js
      Remarque
      • <Shardhost> : adresse IP du shard.

      • <Primaryport> : port de service du nœud primaire du shard.

      • <database> : nom de la base de données d'authentification. Il s'agit de la base de données à laquelle appartient le compte de base de données.

      • <username> : compte de base de données.

      • <password> : mot de passe du compte.

      Exemple :

      Dans cet exemple, la base de données MongoDB auto-gérée comporte trois shards. Vous devez exécuter la commande pour chaque shard afin de nettoyer les documents orphelins.

      mongo --host 172.16.1.10 --port 27018  --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js
      mongo --host 172.16.1.11 --port 27021 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js
      mongo --host 172.16.1.12 --port 27024  --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js

    Gestion des exceptions

    Si des curseurs inactifs existent dans l'espace de noms d'un document orphelin, le processus de nettoyage risque de ne pas aboutir et le journal mongod affichera les informations suivantes :

    Deletion of DATABASE.COLLECTION range [{ KEY: VALUE1 }, { KEY: VALUE2 }) will be scheduled after all possibly dependent queries finish

    Vous pouvez vous connecter à une instance mongod à l'aide du shell mongo et exécuter la commande suivante pour vérifier la présence de curseurs inactifs sur le shard actuel. Si des curseurs inactifs existent, vous devez les supprimer à l'aide de la commande restart mongod ou killCursors . Vous pouvez ensuite tenter à nouveau de nettoyer les documents orphelins. Consultez le ticket JIRA .

    db.getSiblingDB("admin").aggregate( [{ $currentOp : { allUsers: true, idleCursors: true } },{ $match : { type: "idleCursor" } }] )

    Comment gérer une distribution inégale des données dans un cluster MongoDB partitionné ?

    Vous pouvez activer la fonctionnalité Balancer et utiliser le pré-partitionnement pour résoudre les déséquilibres de données. Un déséquilibre se produit lorsque la majorité des données est écrite sur un seul shard.

    Activer le Balancer

    Si le Balancer est désactivé ou si la période active de la fenêtre du Balancer n'a pas commencé, vous pouvez l'activer ou annuler temporairement la fenêtre du Balancer pour démarrer immédiatement l'équilibrage des données.

    1. Connectez-vous à l'instance de cluster partitionné MongoDB.

    2. Dans la fenêtre de commande du nœud mongos, basculez vers la base de données config.

      use config
    3. Exécutez les commandes suivantes selon vos besoins.

      • Activer la fonctionnalité Balancer

        sh.setBalancerState(true)
      • Annuler temporairement la fenêtre du Balancer

        db.settings.updateOne( { _id : "balancer" }, { $unset : { activeWindow : true } } )

    Pré-découpage

    MongoDB prend en charge deux méthodes de partitionnement : le partitionnement par plage et le partitionnement par hachage. Le pré-partitionnement répartit uniformément les chunks sur plusieurs nœuds shard. Cela permet d'obtenir un équilibrage de charge optimal lors de la synchronisation ou de la migration des données avec DTS.

    Partitionnement par hachage

    Vous pouvez utiliser le paramètre numInitialChunks pour mettre en œuvre le pré-partitionnement. La valeur de ce paramètre est par défaut égale à nombre de shards × 2 et peut être définie jusqu'à un maximum de nombre de shards × 8192. sh.shardCollection().

    sh.shardCollection("phonebook.contacts", { last_name: "hashed" }, false, {numInitialChunks: 16384})

    Partitionnement par plage

    • Si la source MongoDB est un cluster partitionné, vous pouvez utiliser les données de config.chunks pour récupérer la plage de chunks de la table partitionnée. Vous pouvez ensuite utiliser cette plage comme référence pour la valeur <split_value> dans vos commandes de pré-partitionnement.

    • Si la source MongoDB est un ensemble de réplicas, vous ne pouvez utiliser que la commande find pour déterminer la plage de la clé de partitionnement, puis définir un point de découpage approprié.

      # Get the minimum value of the shard key
      db.<coll>.find().sort({<shardKey>:1}).limit(1)
      # Get the maximum value of the shard key
      db.<coll>.find().sort({<shardKey>:-1).limit(1)

    Format de la commande

    Remarque

    L'exemple suivant utilise la commande splitAt . Consultez également sh.splitAt(), sh.splitFind() et Split Chunks in a Sharded Cluster.

    sh.splitAt("<db>.<coll>", {"<shardKey>":<split_value>})

    Exemple d'instruction

    sh.splitAt("test.test", {"id":0})
    sh.splitAt("test.test", {"id":50000})
    sh.splitAt("test.test", {"id":75000})

    Une fois l'opération de pré-partitionnement terminée, vous pouvez exécuter la commande sh.status() sur le nœud mongos pour vérifier les résultats du pré-partitionnement.

    Comment définir le nombre d'instances affichées par page dans la liste des tâches de la console ?

    Remarque

    Les étapes suivantes utilisent une instance de synchronisation à titre d'exemple.

    1. Accédez à la page de liste des tâches de synchronisation de la région de destination. Vous pouvez utiliser l'une des deux méthodes suivantes :

      Depuis la console DTS

      1. Connectez-vous à la console Data Transmission Service (DTS).

      2. Dans le volet de navigation de gauche, cliquez sur China (Hangzhou).

      3. Dans le coin supérieur gauche de la page, sélectionnez la région où se trouve l'instance de synchronisation.

      Depuis la console DMS

      Remarque

      Les opérations réelles peuvent varier en fonction du mode et de la disposition de la console DMS. Pour plus d'informations, consultez Simple mode et Customize the layout and style of the DMS interface.

      1. Connectez-vous à Data Management (DMS).

      2. Dans la barre de menu supérieure, choisissez Data Synchronization > Data + AI > Data Transmission (DTS).

      3. À droite de Data Synchronization, sélectionnez la région où se trouve l'instance de synchronisation.

    2. Faites défiler la page jusqu'en bas.

    3. Dans le coin inférieur droit de la page, sélectionnez Items per page.

      Remarque

      Vous pouvez définir Items per page sur 10, 20 ou 50.

    Que faire si une instance DTS signale un délai d'expiration de la connexion ZooKeeper ?

    Essayez de redémarrer l'instance pour rétablir la connexion. Pour obtenir des instructions sur le redémarrage d'une instance, consultez Start a DTS instance.

    Pourquoi un bloc CIDR DTS est-il automatiquement rajouté après sa suppression dans CEN ?

    Cela peut se produire si vous utilisez un routeur de transit Basic Edition de Cloud Enterprise Network (CEN) pour connecter votre base de données à DTS. Si vous créez une instance DTS utilisant cette base de données, DTS ajoute automatiquement la plage d'adresses IP du serveur au routeur correspondant, même si vous supprimez le bloc CIDR DTS dans CEN.

    Les tâches DTS peuvent-elles être exportées ?

    Non pris en charge.

    Comment utiliser Java pour appeler une OpenAPI ?

    L'appel d'une OpenAPI en Java est similaire à Python. Reportez-vous à l'exemple d'appel du SDK Python. Vous pouvez accéder à la page Data Transmission Service DTS SDK, sélectionner le langage de programmation souhaité dans All Languages et consulter l'exemple de code.

    Comment utiliser une API pour configurer la fonctionnalité ETL pour une tâche de synchronisation ou de migration ?

    Configurez cette fonctionnalité à l'aide des paramètres courants tels que etlOperatorCtl et etlOperatorSetting dans le paramètre Reserve. ConfigureDtsJob et Reserve parameter description.

    DTS prend-il en charge Azure SQL Database ?

    Oui. Pour utiliser Azure SQL Database comme base de données source, définissez Data Synchronization Tasks sur SQL Server Incremental Synchronization Mode.

    Les données de la base de données source sont-elles conservées après la fin de la synchronisation ou de la migration DTS ?

    Oui. DTS ne supprime pas les données de la base de données source. Si vous n'avez plus besoin des données de la base de données source, vous pouvez les supprimer manuellement.

    Le débit peut-il être ajusté après le démarrage d'une instance de synchronisation ou de migration ?

    Oui. Adjust the migration rate.

    DTS prend-il en charge l'échantillonnage des données pour la synchronisation ou la migration par période ?

    Non.

    Dois-je créer manuellement les tables de données dans la base de données de destination lors de la synchronisation ou de la migration des données ?

    Pour les instances DTS qui prennent en charge les tâches de schéma de base de données et de table (synchronisation de schéma ou migration de schéma), si Learn About DTS Features est sélectionné pour Schema Synchronization ou si Synchronization Types est sélectionné pour Schema Migration, vous n'avez pas besoin de créer manuellement les tables de données dans la base de données de destination.

    Les réseaux des bases de données source et de destination doivent-ils être connectés lors de la synchronisation ou de la migration des données ?

    Non.

    Dois-je configurer l'autorisation RAM lors de la configuration d'une tâche DTS inter-comptes via le réseau public ?

    Non. Lors de la configuration d'une tâche DTS, vous pouvez définir la Migration Types de l'instance de base de données sur Access Method , puis terminer la configuration.

    Remarque

    Les tâches de synchronisation des données ne prennent pas en charge la connexion à une instance de base de données via la méthode Public IP Address .

    L'utilisation de DTS pour la synchronisation ou la migration des données écrasera-t-elle les données existantes dans la destination ?

    Pour la synchronisation des données, le comportement par défaut de DTS et les paramètres pertinents sont les suivants :

    Comportement par défaut de DTS

    Si un conflit de clé primaire ou de clé unique se produit pendant l'exécution d'une tâche de synchronisation :

    • Si les schémas de table sont identiques et qu'un enregistrement de la base de données de destination possède la même valeur de clé primaire ou de clé unique qu'un enregistrement de la base de données source :

      • Lors de la synchronisation complète, DTS conserve l'enregistrement dans le cluster de destination. L'enregistrement correspondant de la base de données source n'est pas synchronisé.

      • Lors de la synchronisation incrémentielle, l'enregistrement de la base de données source écrase l'enregistrement de la base de données de destination.

    • Si les schémas de table sont différents, la synchronisation initiale des données peut échouer. Cela peut entraîner la synchronisation partielle des données de colonne ou un échec complet de la synchronisation. Procédez avec prudence.

    Paramètres associés

    Pendant le processus de configuration de la tâche, vous pouvez utiliser le paramètre Public IP Address pour contrôler la manière dont DTS gère les tables existantes.

    • Processing Mode of Conflicting Tables : vérifie si une table portant le même nom existe dans la base de données de destination. Si aucune table portant le même nom n'existe, le précontrôle réussit. Si une table portant le même nom existe, le précontrôle échoue et la tâche de synchronisation des données ne démarre pas.

      Remarque

      Si vous ne pouvez pas supprimer ou renommer la table portant le même nom dans la base de données de destination, vous pouvez la mapper vers un nom de table différent. Pour plus d'informations, consultez Map table and column names.

    • Precheck and Report Errors : ignore la vérification des noms de table en double dans la base de données de destination.

      Avertissement

      La sélection de Ignore Errors and Proceed peut provoquer une incohérence des données et mettre votre activité à risque. Par exemple :

      • Si les schémas de table sont identiques et qu'un enregistrement de la base de données de destination possède la même valeur de clé primaire ou de clé unique qu'un enregistrement de la base de données source :

        • Lors de la synchronisation complète, DTS conserve l'enregistrement dans le cluster de destination. L'enregistrement correspondant de la base de données source n'est pas synchronisé.

        • Lors de la synchronisation incrémentielle, l'enregistrement de la base de données source écrase l'enregistrement de la base de données de destination.

      • Si les schémas de table sont différents, la synchronisation initiale des données peut échouer. Cela peut entraîner la synchronisation partielle des données de colonne ou un échec complet de la synchronisation. Procédez avec prudence.

    Suggestion

    Pour garantir la cohérence des données, nous vous recommandons de supprimer la table de destination avant de configurer la tâche DTS, si vos opérations métier le permettent.

    Si les données existantes dans les bases de données source et de destination n'entrent pas du tout en conflit (par exemple, lors de la migration de données de plusieurs bases de données vers une seule base de données), vous pouvez configurer la tâche de migration sans sélectionner Ignore Errors and Proceed . Toutefois, vous devez vous assurer que les clés primaires et les clés uniques des bases de données source et de destination n'entrent pas en conflit et qu'il n'y a pas de tables sans clés primaires. Dans ce scénario, la fonctionnalité data verification ne fonctionnera pas correctement car les données des bases de données source et de destination sont déjà incohérentes.