Retrouvez des solutions aux problèmes courants de Data Transmission Service (DTS) classées par catégorie, ou recherchez des codes d'erreur spécifiques dans la rubrique Erreurs courantes.
Catégories de problèmes
Les problèmes fréquents se classent dans les catégories suivantes :
-
Pour plus de détails sur le précontrôle, consultez la rubrique Éléments du précontrôle et méthodes pour corriger les échecs.
Problèmes de facturation
Comment fonctionne la facturation de DTS ?
DTS prend en charge la facturation par abonnement et le paiement à l'utilisation. Consultez la rubrique Vue d'ensemble de la facturation.
Comment consulter mes factures DTS ?
Pour consulter vos factures DTS, reportez-vous à la rubrique Consulter les factures.
Les instances suspendues sont-elles facturées ?
Les instances de migration de données suspendues ne sont pas facturées.
Pourquoi la synchronisation des données coûte-t-elle plus cher que la migration ?
La synchronisation des données offre des fonctionnalités avancées, telles que la modification en ligne des objets de synchronisation et la synchronisation bidirectionnelle entre bases de données MySQL. Elle utilise également une transmission via le réseau interne pour garantir une latence réduite.
Quelles sont les conséquences des retards de paiement ?
Consultez la rubrique Expiration ou retards de paiement.
Comment libérer une tâche par abonnement avant son échéance ?
Passez d'abord au mode de facturation par paiement à l'utilisation, puis libérez la tâche. Reportez-vous à la rubrique Changer de mode de facturation.
Puis-je passer une tâche d'un abonnement au paiement à l'utilisation ?
Oui. Consultez la rubrique Changer de mode de facturation.
Puis-je passer une tâche du paiement à l'utilisation à un abonnement ?
Oui, cette option est disponible pour les tâches de synchronisation des données ou de suivi des modifications. Reportez-vous à la rubrique Changer de mode de facturation.
Les tâches de migration de données prennent uniquement en charge le mode 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 est peut-être expirée. 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 mode paiement à l'utilisation sont générées quotidiennement. Vous êtes facturé pour la journée durant laquelle 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 mode 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 suspendue, mais exclut le temps de suspension d'une tâche de Incremental Data Migration. Consultez la rubrique Mode de facturation.
DTS facture-t-il le trafic ?
Certaines tâches DTS engendrent des frais de trafic sur le réseau public et de trafic 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 sur le réseau public si le paramètre Access Method de la base de données de destination est défini sur Public IP Address. Une tâche de validation complète en mode Full field validation by row sampling génère des frais de trafic de données proportionnels au volume de données validées. Reportez-vous à la rubrique Éléments facturables.
Problèmes de performances et de spécifications
Quelles sont les différences entre les types d'instances ?
Reportez-vous aux rubriques Spécifications des liens de migration de données et Spécifications des liens de synchronisation de données.
Puis-je mettre à niveau un type d'instance ?
Oui. Consultez la rubrique Mettre à niveau les spécifications de lien d'une instance.
Puis-je rétrograder un type d'instance ?
Actuellement, seules les instances de synchronisation de données peuvent être rétrogradées. Reportez-vous à la rubrique 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. Consultez la rubrique 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 ?
Cette opération n'est pas prise en charge.
Combien de temps faut-il pour synchroniser ou migrer des données ?
Il est impossible 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, source et de destination, le volume de données, la présence de tâches incrémentielles et les conditions réseau. Si vos exigences en matière de performances sont élevées, choisissez un type d'instance offrant une limite de performance supérieure. Consultez les rubriques 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 ?
Reportez-vous à la rubrique Consulter l'état et les performances d'un lien de migration incrémentielle ou Consulter l'état et les performances d'un lien de synchronisation.
Pourquoi ne trouve-je pas 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 All Resources.
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 de liste des tâches actuelle correspond au type de tâche de l'instance de destination. Par exemple, les instances de synchronisation apparaissent uniquement dans la liste Data Synchronization Tasks.
L'instance a été libérée en raison d'une expiration ou d'un retard de paiement. Lorsqu'une instance DTS expire ou présente un retard de paiement, la tâche s'arrête. Si le paiement n'est pas effectué dans les sept jours, le système libère et supprime l'instance. Consultez la rubrique Expiration ou retards de paiement.
Problèmes de précontrôle
Pourquoi l'élément de contrôle 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 risquent de devenir incohérentes par rapport à la source. Consultez la rubrique Introduction aux politiques d'éviction des données Redis.
Que faire si un élément de précontrôle lié aux journaux binaires échoue lors d'une migration incrémentielle ?
Vérifiez si les journaux binaires de la base de données source fonctionnent correctement. Reportez-vous à la rubrique Contrôle des journaux binaires 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. Consultez la rubrique Contrôle de 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. Reportez-vous à la rubrique Contrôle de 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 ?
Pour une tâche de migration de données, demandez un endpoint public pour l'instance de base de données, telle qu'une instance RDS MySQL, et utilisez 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. Consultez la rubrique 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 le type de connexion Public IP Address n'est pas disponible pour les instances de base de données.
Combien de temps faut-il à DTS pour détecter un changement de nom de domaine sur une instance source ou de destination ?
DTS détecte le changement d'association de nom de domaine sous 10 minutes et bascule automatiquement la tâche DTS vers la nouvelle adresse IP associée au nom de domaine. Pendant le changement de nom de domaine, assurez-vous que la relation de réplication des journaux binaires entre l'ancienne et la nouvelle instance 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, notamment les bases de données RDBMS, NoSQL et OLAP. Consultez la rubrique Vue d'ensemble des solutions de synchronisation de données.
Quelle est la différence entre la migration et la synchronisation des données ?
Le tableau suivant compare la migration et la synchronisation des données.
Une instance de base de données est classée comme base de données auto-gérée si son paramètre Access Method n'est pas défini sur Alibaba Cloud Instance lors de la configuration d'une instance DTS. Les bases de données auto-gérées incluent les instances de bases de données provenant de clouds tiers, les bases de données déployées sur des serveurs sur site et les bases de données déployées sur des instances ECS.
|
Élément |
Migration de données |
Synchronisation de données |
|
Scénarios |
Principalement utilisée pour la migration vers le cloud, par exemple la migration de bases de données sur site, de bases de données auto-gérées sur des instances ECS ou de bases de données cloud tierces 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. Adaptée aux scénarios tels que la géo-redondance active, la reprise après sinistre, la synchronisation transfrontalière, le déchargement des requêtes et rapports, l'intelligence d'affaires (BI) cloud et l'entreposage de données en temps réel. |
|
Bases de données prises en charge |
Vue d'ensemble des solutions de migration de données. Remarque
Pour certaines bases de données non prises en charge par la synchronisation, vous pouvez utiliser la migration afin d'obtenir une synchronisation des données. C'est le cas notamment des bases de données MongoDB à nœud unique et des bases de données OceanBase (mode MySQL). |
|
|
Emplacements de déploiement des bases de données pris en charge (types de connexion) |
|
Remarque
La synchronisation des données repose sur une transmission via le réseau interne, ce qui garantit une latence réseau réduite. |
|
Différences fonctionnelles |
|
|
|
Mode 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 engagés que pour les instances de migration incluant des tâches de migration incrémentielle. |
Oui. Les instances de synchronisation incluent par défaut des tâches de synchronisation incrémentielle et engendrent toujours des frais. |
|
Règle de facturation |
Vous êtes facturé uniquement lorsque la migration incrémentielle est en cours d'exécution. Aucune facturation n'est appliquée lorsque la migration incrémentielle est suspendue. La migration de schéma et la migration complète des données ne sont pas facturées. |
|
Comment fonctionne la synchronisation des données ?
Consultez la rubrique Architecture du service et fonctionnalités.
Comment la latence de synchronisation est-elle calculée ?
La latence de synchronisation correspond à la différence de temps, 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.
Une latence normale se situe en dessous de 1 000 millisecondes.
Puis-je modifier les objets de synchronisation d'une tâche de synchronisation ?
Oui. Consultez les rubriques Ajouter un objet de synchronisation et Supprimer un objet de synchronisation.
Puis-je ajouter une nouvelle table à une tâche de synchronisation ?
Oui. Reportez-vous à la rubrique Ajouter un objet de synchronisation.
Comment modifier les objets de synchronisation, tels que les tables et les champs, d'une tâche 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. Consultez les rubriques Ajouter un objet de synchronisation et Supprimer un objet de synchronisation.
Si je suspends une tâche de synchronisation et 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 subit des modifications pendant la suspension de la tâche de synchronisation, des incohérences peuvent survenir entre les bases de données source et de destination. Une fois la tâche redémarrée et les données incrémentielles synchronisées vers la destination, les données de la base de données de destination redeviennent cohérentes avec celles de la source.
Si je supprime des données de la base source d'une tâche de synchronisation incrémentielle, les données synchronisées dans la destination seront-elles supprimées ?
Si les opérations DML à synchroniser pour la tâche incrémentielle n'incluent pas 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 d'une 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 données ?
Oui. Utilisez la fonctionnalité de mappage pour filtrer les colonnes et spécifiez des conditions SQL WHERE pour filtrer les données. Consultez les rubriques 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. Il est impossible de convertir des tâches de types différents les unes aux 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 ?
Causes possibles :
Vous n'avez pas effacé les données de la destination lors de la configuration de la tâche ; la destination contient donc des données historiques.
Vous avez sélectionné uniquement la synchronisation incrémentielle, et non la synchronisation complète, lors de la configuration de la tâche.
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 sources ont changé après la fin de la tâche.
Des données ont été écrites dans la destination depuis des sources autres que la tâche DTS.
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 changer le nom de la base de données source dans la base de destination pour une tâche de synchronisation ?
Oui. Consultez la rubrique 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 relationnelles prend en charge les opérations DML (INSERT, UPDATE et DELETE) et DDL (CREATE, DROP, ALTER, RENAME et TRUNCATE).
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 la rubrique Vue d'ensemble des solutions de synchronisation de données et vérifiez les opérations DML ou DDL prises en charge dans le document de configuration spécifique au lien.
Une instance en lecture seule peut-elle servir d'instance source pour une tâche de synchronisation ?
Par défaut, les tâches de synchronisation incluent la synchronisation incrémentielle des données. Cela conduit 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 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 synchronisation des bases de données et tables partitionnées ?
Oui. Par exemple, vous pouvez fusionner plusieurs tables partitionné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 la source après une synchronisation ?
Si des données ont été filtrées pendant 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 la source une fois la synchronisation terminée.
Une tâche de synchronisation inter-comptes 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 partitionné) prennent en charge la synchronisation bidirectionnelle inter-comptes.
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.
Pour synchroniser les opérations DDL de la tâche de synchronisation inverse actuelle, vous pouvez inverser le sens de l'instance de synchronisation bidirectionnelle si votre activité 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 soit Running). Ensuite, localisez la tâche de synchronisation inverse et cliquez sur Configure Task.
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 (latence de 0 milliseconde).
DTS prend-il en charge les tâches de synchronisation bidirectionnelle transfrontalières ?
Non.
Pourquoi un enregistrement ajouté dans une base de données n'apparaît-il pas dans l'autre lors d'une synchronisation bidirectionnelle ?
Ce problème peut survenir si aucune tâche inverse n'a été configurée.
Pourquoi la tâche de synchronisation incrémentielle n'atteint-elle jamais 100 % ?
Une tâche de synchronisation incrémentielle synchronise en continu les modifications de la source vers la destination en temps réel et ne se termine pas d'elle-même. Il n'y a donc pas d'état d'achèvement à 100 %. Si vous n'avez plus besoin de la synchronisation en temps réel, vous pouvez arrêter la tâche dans la console DTS.
Pourquoi une tâche de synchronisation incrémentielle ne synchronise-t-elle pas les données ?
Si une instance DTS est configurée uniquement pour la synchronisation incrémentielle, DTS synchronise seulement 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ébut 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 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 :
Mettez à niveau les spécifications de l'instance de base de données source.
Suspendez la tâche DTS et redémarrez-la lorsque la charge sur la base de données source est faible.
Réduisez la vitesse de la tâche DTS. Consultez la rubrique Ajuster la vitesse de migration complète.
Pourquoi une instance de synchronisation avec une source PolarDB-X 1.0 n'affiche-t-elle pas la latence ?
Les informations de latence ne s'affichent pas pour les instances dont la source est PolarDB-X 1.0. Cela s'explique par le fait que l'instance s'exécute sous forme de tâche distribuée, et que les métriques surveillées par DTS n'existent que dans les sous-tâches. Pour consulter les informations de latence, cliquez sur l'ID de l'instance et accédez à la section Subtask Details de la page Task Management.
Pourquoi une tâche de fusion multi-tables génère-t-elle l'erreur DTS-071001 ?
Cette erreur peut survenir si vous avez exécuté 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 les modifications correspondantes n'ont pas été appliquées 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 synchronisation des données échoue en raison d'une opération DDL exécutée sur la base de données source pendant le processus ?
En fonction de l'opération DDL exécutée sur la base de données source, exécutez manuellement l'opération DDL sur la base de données de destination, puis 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, sous peine de provoquer l'échec de la synchronisation. Si aucune donnée autre que celles de DTS n'est écrite dans la base de données de destination, utilisez Data Management (DMS) pour effectuer des opérations DDL en ligne, ou modifiez les objets de synchronisation afin de supprimer les tables concernées. Remove a synchronization object.
Que faire si une tâche de synchronisation des données échoue en raison d'une opération DDL exécuté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, rendant la tâche anormale, appliquez l'une des deux solutions suivantes pour rétablir la tâche :
Solution 1 : Reconfigurez la tâche en veillant à ne pas sélectionner comme objet de synchronisation la base de données ou la table à l'origine de l'échec.
Solution 2 : Modifiez les objets de synchronisation pour retirer la base de données ou la table responsable de l'échec. Remove a synchronization object.
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 une fois libérée. Si vous reconfigurez la tâche sans sélectionner Full Data Synchronization, les données ajoutées entre la libération de la tâche initiale et le démarrage de la nouvelle tâche ne seront pas synchronisées vers la base de données de destination, ce qui compromet la cohérence des données. Si la précision des données est critique pour votre activité, supprimez les données de la base de données de destination, reconfigurez la tâche de synchronisation, puis sélectionnez à 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 ne progresse pas 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 lancer la synchronisation.
Lors de la synchronisation de données entre des tables portant le même nom, est-il possible de transférer les 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, définissez le paramètre Processing Mode of Conflicting Tables sur Ignore Errors and Proceed. Si les schémas de table sont identiques et qu'un enregistrement de la base de données source possède une valeur de clé primaire déjà présente dans la base de données de destination, cet enregistrement ne sera pas synchronisé lors de la synchronisation complète.
Comment configurer une tâche de synchronisation inter-comptes ?
Commencez par prendre connaissance des scénarios pour les tâches inter-comptes. Ensuite, utilisez le compte Alibaba Cloud auquel l'instance de base de données appartient pour configurer l'autorisation RAM pour une tâche inter-comptes Alibaba Cloud. Enfin, configurez la tâche inter-comptes 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 parvenez toujours pas à sélectionner l'instance, il se peut qu'il n'y en ait qu'une seule. Poursuivez alors la configuration des autres paramètres.
Une tâche de synchronisation avec une source 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 signale une erreur ?
Consultez la rubrique Common errors pour trouver une solution adaptée au message d'erreur rencontré.
Comment activer la fusion des points chauds pour une tâche de synchronisation ?
Reportez-vous à la rubrique Modify parameter values pour remplacer la valeur de trans.hot.merge.enable par true.
Comment effectuer une synchronisation lorsque la base de données source contient des déclencheurs ?
Lorsque l'objet de synchronisation est la base de données entière et qu'un déclencheur met à jour une table de cette base, des incohérences de données peuvent survenir. Configure a synchronization or migration job when the source database has triggers.
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.
Quand peut-on configurer la tâche inverse d'une tâche de synchronisation bidirectionnelle ?
La tâche inverse d'une synchronisation bidirectionnelle ne peut être configurée qu'une fois la tâche incrémentielle directe exempte de latence.
Lorsque PolarDB-X 1.0 est utilisé comme source, la mise à l'échelle des nœuds est-elle prise en charge pour la tâche de synchronisation ?
Non. Si la source PolarDB-X 1.0 subit une mise à l'échelle des nœuds, 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 données écrites dans Kafka sont ajoutées par concaténation, des doublons peuvent apparaître lors du redémarrage de la tâche DTS ou lors de récupérations répétées des journaux depuis la source. DTS assure l'idempotence des données, ce qui signifie qu'elles sont ordonnées et que la valeur la plus récente 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. Synchronize data from RDS for MySQL to AnalyticDB for MySQL 3.0.
Pourquoi une tâche de synchronisation entre instances Redis n'affiche-t-elle pas la synchronisation complète ?
La synchronisation entre instances Redis comprend à la fois la synchronisation complète et incrémentielle des données. Ces deux méthodes sont regroupées sous l'appellation Incremental Data Synchronization.
Peut-on ignorer la synchronisation complète ?
Oui. Après avoir ignoré 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.
Est-il possible de planifier une synchronisation automatique ?
Non, DTS ne permet pas actuellement de planifier le démarrage des tâches de synchronisation des données.
La fragmentation des tables est-elle synchronisée pendant le processus ?
Non.
Quelles précautions prendre lors d'une synchronisation de MySQL 8.0 vers MySQL 5.6 ?
Créez une base de données dans MySQL 5.6 avant d'effectuer l'opération de synchronisation. Nous vous recommandons d'utiliser des versions identiques pour les bases de données source et de destination, ou de synchroniser d'une version inférieure vers une version supérieure afin d'assurer la compatibilité. Une synchronisation d'une version supérieure vers une version inférieure risque d'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 de destination ?
Actuellement, seules les tâches de synchronisation entre instances ApsaraDB RDS for MySQL prennent en charge la synchronisation des comptes. Ce n'est pas le cas pour les autres tâches de synchronisation.
Peut-on configurer une tâche de synchronisation bidirectionnelle inter-comptes ?
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 partitionné) prennent en charge la synchronisation bidirectionnelle inter-comptes.
Pour les tâches ne disposant pas de l'élément de configuration Replicate Data Across Alibaba Cloud Accounts, utilisez CEN pour configurer la synchronisation bidirectionnelle inter-comptes. Access database resources across Alibaba Cloud accounts or regions.
Comment configurer les paramètres lorsque Message Queue for Apache Kafka est la destination ?
Configurez les paramètres selon vos besoins. Configure parameters for a Message Queue for Apache Kafka instance.
Comment résoudre l'erreur ERR invalid DB index lors de l'utilisation de DTS pour synchroniser ou migrer des données Redis ?
Cause : L'erreur ERR invalid DB index survient lorsque la base de données de 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 de destination. Si la base de données de destination utilise un proxy, vérifiez si celui-ci permet de lever la limite sur le nombre de databases.
Solution : Modifiez la configuration databases de la base de données de destination. Augmentez cette valeur pour qu'elle corresponde à celle de la base de données source, puis redémarrez la tâche DTS. Exécutez la commande suivante pour interroger la configuration databases de la base de données de 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é qu'aucune autre commande DDL n'est en cours pendant la période de latence, modifiez le paramètre d'instance sink.ignore.failed.ddl en le définissant sur true afin de filtrer toutes les exécutions DDL. Une fois le décalage de la synchronisation ou de la migration incrémentielle corrigé, remettez 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 de destination a-t-elle un effet concret ?
Pour éviter que les clés n'expirent pendant la synchronisation complète des données, prolongez la durée d'expiration des clés dans la base de données de 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 dans la base de données de destination est également libérée.
Après avoir défini une durée d'expiration étendue pour une clé dans la base de données de destination, si la clé expire dans la base de données source, la clé de la base de données de destination est-elle libérée immédiatement ?
Une clé dans la base de données de destination n'est pas nécessairement libérée immédiatement dès son expiration. Elle n'est libérée immédiatement que lorsque la clé correspondante dans la base de données source expire et est effacée.
Par exemple, si une clé de la base de données source doit expirer dans 5 secondes, mais que sa durée d'expiration dans la base de données de destination est de 30 secondes, la clé de la base de données de destination sera supprimée au moment où la clé source expire. Lorsque la clé de la base de données source expire, le système ajoute une opération de suppression au fichier AOF (Append-Only File). Cette requête est ensuite synchronisée vers la base de données de 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 l'utilisation de DTS pour synchroniser des données vers SelectDB ?
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 de la source dépasse la limite de longueur du champ correspondant dans la destination.
Solution : Si le champ est de type
STRING, augmentez le paramètre string_type_length_soft_limit_bytes dans la console SelectDB. La valeur doit être supérieure à laactual length(7241898).
Comment résoudre l'erreur column(xxx) values is null while columns is not nullable. lors de l'utilisation de DTS pour synchroniser des données vers SelectDB ?
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 valeursNULLy sont écrites.RemarqueScénario fréquent : Le format de date source contient des données invalides, telles que
0000-0000-0000, ce qui amène DTS à les convertir automatiquement en valeurNULLet déclenche 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 sources, puis supprimez la table dans la destination. Modifiez ensuite à nouveau l'objet de synchronisation pour rajouter la table, et relancez enfin la synchronisation complète et incrémentielle.
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 des données ?
DTS effectue la migration et la synchronisation des données en copiant les données d'une base de données source vers une base de données de 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. Overview of data migration solutions
Comment fonctionne la migration des données ?
Peut-on modifier les objets de migration d'une tâche de migration des données ?
Non.
Peut-on ajouter une nouvelle table à une tâche de migration des 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 suspends une tâche de migration et 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 subit des modifications pendant la suspension de la tâche de migration, des incohérences de données peuvent apparaître entre les bases de données source et de destination. Une fois la tâche de migration redémarrée et les données incrémentielles migrées vers la base de données de destination, les données de cette dernière redeviennent cohérentes avec celles de la base de données source.
Une tâche de migration peut-elle être convertie en tâche de synchronisation ?
Non. Les tâches de types différents ne peuvent pas être converties les unes aux autres.
Peut-on 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 Schema Migration.
Quelles sont les causes possibles d'incohérence des données entre la source et la destination d'une instance de migration des données ?
Causes possibles :
Vous n'avez pas effacé les données de la destination lors de la configuration de la tâche ; la destination contient donc des données historiques.
Vous avez sélectionné uniquement la migration incrémentielle, et non la migration complète, lors de la configuration de la tâche.
Vous avez sélectionné uniquement la migration complète, et non la migration incrémentielle, lors de la configuration de la tâche, et les données sources ont changé après la fin de la tâche.
Des données ont été écrites dans la destination par d'autres sources que la tâche DTS.
Les écritures incrémentielles subissent un délai, et toutes les données incrémentielles n'ont pas encore été écrites dans la destination.
Peut-on changer le nom de la base de données source dans la base de données de destination pour une tâche de migration des données ?
La migration de données au sein de la même instance est-elle prise en charge ?
Oui. Data synchronization or migration between different database names.
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.
Les opérations DML ou DDL prises en charge varient selon le scénario. Sélectionnez un lien correspondant à vos besoins métier dans la rubrique Overview of data migration solutions et vérifiez les opérations DML ou DDL prises en charge dans le document de configuration spécifique associé.
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 incrémentielle des données, vous pouvez utiliser une instance en lecture seule comme instance source. Si la tâche nécessite une migration incrémentielle des données, deux cas de figure se présentent :
Si l'instance est une instance en lecture seule qui enregistre les journaux de transactions, comme 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, comme une instance ApsaraDB RDS for MySQL 5.6, elle ne peut pas servir d'instance source.
DTS prend-il en charge la migration des données pour les bases de données et tables partitionnées ?
Oui. Par exemple, vous pouvez migrer des bases de données et tables partitionné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. Utilisez la fonctionnalité de mappage pour filtrer les colonnes et spécifiez des conditions SQL WHERE pour filtrer les données. Synchronize or migrate some columns et Filter data to be migrated.
Pourquoi le volume de données de l'instance de destination est-il inférieur à celui de l'instance source après la fin d'une tâche de migration ?
Si des données ont été filtrées pendant la migration, 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 migration terminée.
Pourquoi la valeur « Completed » est-elle supérieure au total dans une tâche de migration ?
Le total affiché est une valeur estimée. Une fois la tâche de migration terminée, le total sera ajusté à la valeur exacte.
À quoi sert la table increment_trx ajoutée à la base de données de 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 DTS dans l'instance de destination. Elle sert principalement à enregistrer le décalage de la migration incrémentielle et à résoudre le problème 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 de provoquer l'échec de celle-ci.
Une tâche de migration des données prend-elle en charge la reprise après interruption pendant la phase de migration complète ?
Oui. Si vous suspendez une tâche pendant la phase de migration complète puis la redémarrez, la tâche reprendra là où elle s'était arrêtée, sans recommencer depuis le début.
Comment migrer une instance hors Alibaba Cloud vers Alibaba Cloud ?
Comment migrer une base de données Oracle locale vers PolarDB ?
Peut-on suspendre une tâche de migration des données qui n'a pas terminé la phase de migration complète ?
Oui.
Comment migrer une partie des données de RDS for MySQL vers une base de données MySQL auto-gérée ?
Lors de la configuration de la tâche de migration, sélectionnez les objets à migrer dans la section Source Objects ou filtrez-les dans la section Selected Objects selon vos besoins. Les opérations de migration entre bases de données MySQL sont similaires. Migrate data from a self-managed MySQL database to an ApsaraDB RDS for MySQL instance.
Comment migrer des instances RDS sous le même compte Alibaba Cloud ?
DTS prend en charge la migration et la synchronisation entre instances RDS. Consultez les documents de configuration pertinents dans la rubrique Overview of data migration solutions.
Que faire si une alerte IOPS est déclenchée pour la base de données source après le démarrage d'une tâche de migration, et comment garantir la stabilité de l'activité 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, utilisez l'une des trois méthodes suivantes pour réduire l'impact de la tâche DTS sur la base de données source :
Augmentez les spécifications de l'instance de base de données source.
Suspendez la tâche DTS et redémarrez-la lorsque la charge de la base de données source est faible.
Réduisez la vitesse de la tâche DTS. Adjust the full migration rate.
Pourquoi une tâche de migration des données ne permet-elle pas de sélectionner une base de données nommée « test » ?
La migration des 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 par l'utilisateur pour la migration.
Pourquoi une instance de migration avec une source PolarDB-X 1.0 n'affiche-t-elle pas la latence ?
Les informations de latence ne s'affichent pas pour les instances dont la source est PolarDB-X 1.0. Cela s'explique par le fait que l'instance s'exécute sous forme de tâche distribuée, et que les métriques surveillées par DTS n'existent que dans les sous-tâches. Pour consulter 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 permet pas d'utiliser les bases de données admin et local de MongoDB comme source ou destination.
Pourquoi une tâche de fusion multi-tables génère-t-elle l'erreur DTS-071001 ?
Cette erreur peut survenir si vous avez exécuté 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 les modifications correspondantes n'ont pas été appliquées 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 des données échoue en raison d'une opération DDL exécutée sur la base de données source pendant le processus ?
En fonction du 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, sous peine de provoquer l'échec de la migration. Si aucune donnée autre que celles de DTS n'est écrite dans la base de données de destination, utilisez Data Management (DMS) pour effectuer des opérations DDL en ligne.
Que faire si une tâche de migration des données échoue en raison d'une opération DDL exécuté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, rendant la tâche anormale, reconfigurez la tâche en veillant à ne pas sélectionner comme objet de migration la base de données ou la table à l'origine de l'échec.
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 une fois libérée. 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, ce qui compromet la cohérence des données. Si une grande précision des données est requise, supprimez les données de la base de données de destination, reconfigurez la tâche de migration, puis sélectionnez 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 ne progresse pas 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 lancer la migration.
Lors de la migration de données entre des tables portant le même nom, est-il possible de transférer les 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, définissez le paramètre Processing Mode of Conflicting Tables sur Ignore Errors and Proceed. Si les schémas de table sont identiques, les enregistrements sources 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 prendre connaissance des scénarios pour les tâches inter-comptes. Ensuite, utilisez le compte Alibaba Cloud auquel l'instance de base de données appartient 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 des données se connecte-t-elle à une base de données locale ?
Définissez le paramètre Access Method de la base de données locale sur Public IP Address pour configurer la tâche de migration. Migrate data from a self-managed MySQL database to an ApsaraDB RDS for MySQL instance.
Que faire si une migration des données échoue avec l'erreur DTS-31008 ?
Selon le message d'erreur, cliquez sur View Cause ou reportez-vous à la rubrique Common errors.
Que faire si le réseau est déconnecté lors de la connexion à une base de données auto-gérée via une ligne louée ?
Vérifiez si la liste d'autorisation d'adresses IP liée à DTS est correctement configurée pour la ligne louée. Pour obtenir la liste des adresses IP à ajouter à la liste d'autorisation, consultez Add the IP address ranges of DTS servers to the IP address whitelist of a self-managed database.
Une tâche de migration avec une source 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. Consultez 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 les solutions aux erreurs courantes, voir Erreurs courantes.
La migration du schéma et la migration complète sont-elles gratuites ?
Ces opérations sont gratuites. Éléments de facturation.
Les données zset de la destination sont-elles écrasées lors d'une tâche de migration de données entre instances Redis ?
Oui, les données zset de la destination seront écrasées. Si une clé identique à celle de la source existe déjà dans la destination, DTS supprime d'abord le zset correspondant dans la destination, puis exécute zadd pour chaque objet de la collection zset source vers la destination.
Quel est l'impact de la migration complète sur la base de données source ?
Lors d'une migration complète DTS, les données sont d'abord segmentées, puis lues et écrites par segments. Concernant la base de données source, ses IOPS augmentent pendant le processus de segmentation. Durant 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 sont 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 mise à l'échelle des nœuds est-elle prise en charge pour une tâche de migration ?
Non. Si l'instance source PolarDB-X 1.0 subit une mise à l'échelle des nœuds, vous devez reconfigurer la tâche.
L'unicité des données migrées vers Kafka par DTS est-elle garantie ?
Non. Étant donné que les données écrites dans Kafka sont ajoutées par concaténation, des doublons peuvent apparaître lors du redémarrage de la tâche DTS ou lorsqu'elle récupère plusieurs fois les journaux de la source. DTS assure l'idempotence des données : celles-ci sont ordonnées et la valeur la plus récente des données dupliquées est placée à la fin.
Si je configure d'abord une tâche de migration complète, puis une tâche de migration incrémentielle, une incohérence des données peut-elle survenir ?
Oui, des incohérences de données peuvent survenir. Lorsqu'une tâche de migration incrémentielle est configurée séparément, elle ne commence à migrer les données qu'après son démarrage. Les données incrémentielles générées dans l'instance source avant le début de cette tâche ne seront pas synchronisées vers l'instance de destination. Pour effectuer une migration sans interruption de service, 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 vers l'instance de destination avant le début de la migration des données, par exemple la définition de la table A. 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 supérieur à celui de la base de données source lors d'une migration depuis une base de données auto-gérée vers RDS ?
Comme DTS effectue une migration logique, il encapsule les données à migrer dans des instructions SQL et les transfère vers l'instance RDS de destination. Des données de journal binaire sont alors générées dans l'instance RDS de destination. Par conséquent, l'espace de stockage utilisé par RDS pendant le processus de migration peut être supérieur à 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 ?
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 répliquée vers la base de données de destination par DTS.
La libération d'une tâche de migration terminée affecte-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 Vue d'ensemble 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 auto-gé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 DTS peut s'adapter aux changements tels que les modifications DNS et les basculements 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 auto-gé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 auto-gé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, une Elastic IP Address (EIP) doit être associée à l'instance ECS. Lors de la configuration de la tâche de migration, sélectionnez l'instance ECS comme instance source ; DTS utilisera automatiquement l'EIP de l'instance ECS pour accéder à la base de données.
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 lors de la migration complète et de la migration incrémentielle des données. Pendant ces phases, les tables de données de la source de migration restent accessibles normalement en lecture et en écriture.
Lors d'une migration RDS par DTS, les données proviennent-elles de la base de données RDS primaire ou secondaire ?
Lorsque DTS effectue une migration de données, il extrait les données de la base de données RDS primaire.
Puis-je planifier une migration automatique ?
Non, DTS ne prend actuellement pas 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 différents, utilise-t-il le réseau interne ou le réseau public pour les instances ECS et RDS ? Des frais de trafic s'appliquent-ils ?
Le réseau (interne ou public) utilisé par DTS pour les tâches de synchronisation ou de migration ne dépend pas du fait que la tâche soit inter-comptes. L'application de 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. En cas de migration interrégionale, 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 le 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 sont-elles supprimées après une migration via 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 sans affecter les données de la source.
Lors d'une migration de données entre instances RDS par DTS, puis-je spécifier le nom de la base de données de destination ?
Oui. Lors d'une migration de données entre instances RDS, utilisez la fonctionnalité de mappage de noms de bases 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 bases de données.
Que faire si la source d'une tâche de migration DTS ne parvient pas à se connecter à une instance ECS ?
L'instance ECS n'a peut-être 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 instances Redis n'affiche-t-elle pas la migration complète ?
Vous pouvez migrer des données entre instances Redis en utilisant la Incremental Data Migration, qui combine la migration complète et la migration incrémentielle des données.
Peut-on ignorer la migration complète ?
Oui. Après avoir ignoré la migration complète, la migration incrémentielle se poursuit, mais des erreurs peuvent survenir. Nous vous recommandons de ne pas ignorer la migration complète.
Une édition cluster de Redis prend-elle en charge la connexion à DTS via une adresse IP publique ?
Non. Actuellement, seule l'édition autonome de Redis prend en charge la connexion à une instance de migration DTS via une adresse IP publique.
À quoi faut-il prêter attention lors d'une migration de MySQL 8.0 vers MySQL 5.6 ?
Vous devez créer une base de données dans MySQL 5.6 avant d'effectuer l'opération de migration. Nous recommandons que les versions des bases de données source et de destination soient identiques, ou que vous migriez d'une version inférieure vers une version supérieure pour garantir la compatibilité. Une migration d'une version supérieure vers une version inférieure risque d'entraîner des problèmes de compatibilité.
Les comptes de la base de données source peuvent-ils être migrés vers la base de données de destination ?
Actuellement, seules les tâches de migration entre instances ApsaraDB RDS for MySQL prennent en charge la migration des comptes. Ce n'est pas le cas pour les autres tâches de migration.
Comment configurer les paramètres lorsque Message Queue for Apache Kafka est la destination ?
Configurez les paramètres selon vos besoins. Configurer les paramètres pour une instance Message Queue for Apache Kafka.
Comment effectuer une migration complète planifiée ?
Vous pouvez utiliser la politique de planification de la fonctionnalité d'intégration de données pour migrer périodiquement le schéma et les données historiques de la source vers la destination. Configurer une tâche d'intégration de données entre des instances ApsaraDB RDS for MySQL.
Est-il possible de migrer un SQL Server auto-géré sur une instance ECS vers un SQL Server auto-géré sur site ?
Oui. Le SQL Server auto-géré sur site doit être connecté à Alibaba Cloud. Vue d'ensemble des préparatifs.
La migration de bases de données PostgreSQL depuis d'autres clouds est-elle prise en charge ?
Oui, la migration de données via DTS est prise en charge lorsqu'une base de données PostgreSQL provenant d'un autre cloud autorise DTS à y accéder via le réseau public.
Si la version de PostgreSQL est antérieure à 10.0, la migration incrémentielle n'est pas prise en charge.
Problèmes liés à l'abonnement aux données
Comment fonctionne l'abonnement aux données ?
Le groupe de consommateurs est-il supprimé après l'expiration d'une tâche de suivi des modifications ?
Après l'expiration d'une tâche de suivi des modifications DTS, le groupe de consommateurs de données est conservé pendant sept jours. Si l'instance n'est pas renouvelée dans les sept jours suivant son expiration, elle sera libérée et le groupe de consommateurs correspondant sera également supprimé.
Une instance en lecture seule peut-elle être utilisée comme instance source pour une tâche de suivi ?
Deux situations peuvent se présenter :
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.
Comment consommer les données suivies ?
Pourquoi le format des données de date change-t-il après le transfert via la fonctionnalité de suivi des modifications ?
Le format de stockage des données de date par défaut pour DTS est YYYY:MM:DD. YYYY-MM-DD est le format d'affichage, mais le format de stockage réel est YYYY:MM:DD. Par conséquent, quel que soit le format des données transférées, elles seront finalement converties au format par défaut.
Comment dépanner une tâche de suivi ?
Que faire si le SDK se met soudainement en pause et ne peut plus suivre les données alors qu'il téléchargeait les données normalement ?
Vérifiez si l'interface ackAsConsumed est appelée dans le code SDK pour signaler l'offset du consommateur. Si ackAsConsumed n'est pas appelé pour signaler l'offset, les données dans l'espace de cache Record défini dans le SDK ne seront pas supprimées. Lorsque le cache est plein, les nouvelles données ne peuvent plus être extraites, ce qui provoque la mise en pause du SDK et l'impossibilité de suivre les données.
Que faire si le SDK ne parvient pas à suivre les données correctement après avoir été relancé ?
Avant de démarrer le SDK, modifiez l'offset du consommateur pour qu'il se situe dans la plage de données. Enregistrer et interroger les offsets du consommateur.
Comment un client spécifie-t-il un point dans le temps pour la consommation des données ?
Lorsque vous consommez des données suivies, vous pouvez renseigner le paramètre initCheckpoint pour spécifier un point dans le temps. Utiliser l'exemple de code SDK pour consommer les données suivies.
Comment réinitialiser l'offset si une tâche de suivi DTS présente une accumulation ?
-
Selon le mode d'utilisation du client SDK, ouvrez le fichier de code correspondant, tel que DTSConsumerAssignDemo.java ou DTSConsumerSubscribeDemo.java.
Dans la colonne Data Range de la liste des tâches de suivi, vous pouvez consulter la plage d'offsets modifiables 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 (paramètre initCheckpoint) dans le fichier de code.
Relancez le client.
Que faire si le client ne parvient pas à se connecter en utilisant l'adresse VPC de la tâche de suivi ?
La machine où se trouve le client n'est peut-être pas 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 de 1 minute, tandis que celle 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 dépasser 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 serveur distribue les données en aval à partir de l'instruction BEGIN de la transaction entière, ce qui permet de recevoir le contenu complet de la transaction.
Comment confirmer que 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 progresse régulièrement.
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é est-elle affectée lorsque la base de données RDS primaire d'une tâche de suivi des modifications est basculée ou redémarrée ?
Lorsqu'un basculement primaire/secondaire ou un redémarrage survient pour une instance ApsaraDB RDS for MySQL, ApsaraDB RDS for PostgreSQL, PolarDB for MySQL, PolarDB for PostgreSQL ou PolarDB-X 1.0 (dont le type de stockage est RDS for MySQL), DTS effectue un basculement adaptatif et l'activité n'est 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 vers un serveur local en temps réel.
Les données incrémentielles en temps réel du suivi des modifications concernent-elles uniquement les 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 toutes 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'a pas été acquitté (ACK) par le consommateur d'une tâche de suivi des modifications ?
Lorsqu'un message n'est pas acquitté par le SDK, le serveur termine l'envoi de tous les messages présents dans le tampon. Une fois cet envoi terminé, le SDK ne peut plus recevoir de messages. À ce stade, l'offset du consommateur enregistré par le serveur correspond au dernier message précédant celui non acquitté. Au redémarrage du SDK, afin de garantir qu'aucun message n'est perdu, le serveur renvoie les données à partir de l'offset correspondant au message précédant celui non acquitté. 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 avoir consommé chaque message, le SDK de suivi des modifications doit appeler ackAsConsumed pour envoyer un accusé de réception (ACK) au serveur. Après réception de l'ACK, le serveur met à jour l'offset du consommateur en mémoire, puis persiste cet offset toutes les 10 secondes. Si le SDK redémarre avant que le dernier ACK ne soit persisté, le serveur recommencera à envoyer les messages à partir du dernier offset persisté afin de garantir qu'aucun message n'est 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 survenir dans une instance de suivi des modifications ?
Non. Une tâche de suivi des modifications récupère uniquement les changements de la base de données source et n'implique pas d'incohérence de données. Si les données consommées par le client ne correspondent pas à vos attentes, vous devez procéder au dépannage vous-même.
Que faire lorsque UserRecordGenerator apparaît lors de la consommation de 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'offsets du module d'ingestion de données incrémentielles et vous assurer que le 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 comporte qu'une seule partition, assignée de manière fixe à la partition 0.
Le SDK de suivi des modifications prend-il en charge Go ?
Oui. Pour un exemple de code, consultez le dépôt dts-subscribe-demo.
Le SDK de suivi des modifications prend-il en charge Python ?
Oui. Pour un exemple de code, voir dts-subscribe-demo.
flink-dts-connector prend-il en charge la consommation simultanée multithread des données suivies ?
Non.
Problèmes de validation des données
Quelles sont les causes d'incohérence des données dans une tâche de validation des données ?
Les causes courantes sont les suivantes :
La tâche de migration ou de synchronisation présente un retard.
Une colonne avec une valeur par défaut a été ajoutée à la base de données source et la tâche accuse un retard.
Des données sont écrites dans la base de données de destination à partir de sources autres que DTS.
Une opération DDL a été effectuée sur la base de données source d'une tâche pour laquelle la fonctionnalité de fusion de tables multiples est activée.
La tâche de migration ou de synchronisation a utilisé la fonctionnalité de mappage de noms de bases de données, de tables et de colonnes.
Pourquoi une tâche de validation de schéma signale-t-elle une différence dans isRelHasoids ?
Dans les versions de PostgreSQL antérieures à la version 12, vous pouvez ajouter un champ d'identifiant d'objet unique global (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. Indépendamment du fait 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) ?
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>
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. Pendant la migration ou 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, une absence d'enregistrements de mise à jour ou d'autres situations qui finiront par faire échouer la tâche DTS. Toutefois, 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. Comme cette table ne fait pas partie des objets de migration ou de synchronisation, elle ne provoquera 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 risquent d'être écrasées par les données migrées ou synchronisées depuis la base de données source.
Peut-on é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 de données ?
Oui, mais si des données sont écrites dans la base de données de destination à partir de sources autres que DTS pendant l'exécution de l'instance DTS, cela peut rendre anormales les données de la base de données de destination ou 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 les détails de l'instance et modifiez le mot de passe du compte source ou de destination sous l'onglet Basic Information. Ensuite, accédez à l'onglet Task Management et redémarrez le module ayant signalé l'erreur dans la section Basic Information.
Pourquoi certaines bases de données sources ou de destination ne proposent-elles pas de 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 base de données MySQL, les tâches de migration et de suivi peuvent choisir de se connecter via une adresse IP publique, tandis que les tâches de synchronisation ne prennent pas en charge les connexions par IP publique.
La migration de données ou la synchronisation de données inter-comptes est-elle prise en charge ?
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 sont la même instance, utilisez la fonctionnalité de mappage pour isoler les données. Sinon, l'instance DTS risque d'échouer ou des données peuvent être perdues. Mappage de bases de données, de tables et de colonnes.
Pourquoi une tâche avec Redis comme destination signale-t-elle l'erreur « OOM command not allowed when used memory > 'maxmemory' » ?
Cela peut être dû à un espace de stockage insuffisant de l'instance Redis de destination. Si le type d'architecture de l'instance Redis de destination est cluster, il se peut également qu'un shard ait atteint sa limite de mémoire. Vous devez mettre à niveau les spécifications de l'instance de destination.
Qu'est-ce que la politique d'accès AliyunDTSRolePolicy et à quoi sert-elle ?
La politique AliyunDTSRolePolicy permet à DTS d'accéder aux ressources cloud telles que RDS et ECS sous le compte actuel ou entre comptes différents. Elle appelle les informations pertinentes sur les ressources cloud lorsque vous configurez une tâche de migration, de synchronisation ou de suivi. Accorder à DTS les permissions d'accès aux ressources cloud.
Comment effectuer l'autorisation de rôle RAM ?
Lors de votre première connexion à la console, DTS vous demandera d'autoriser le rôle AliyunDTSDefaultRole. Suivez les invites pour accéder à la page d'autorisation RAM. Accorder à DTS les permissions d'accès aux ressources cloud.
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 pour une tâche DTS. Cliquez sur l'ID de l'instance pour ouvrir la page des détails de l'instance. Sous l'onglet Basic Information, cliquez sur Change Password pour changer le mot de passe de la base de données source ou de destination.
Le mot de passe du compte système d'une tâche DTS ne peut pas être modifié.
Pourquoi une table MaxCompute porte-t-elle le suffixe « _base » ?
-
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
_baseaux noms des tables. Par exemple, si la table source estcustomer, la table dans MaxCompute devientcustomer_base. -
Synchronisation initiale complète des données.
DTS synchronise toutes les données historiques des tables de la base de données source vers les tables
_basedans MaxCompute. Ainsi, les données sont synchronisées depuis la tablecustomerde la base de données source vers la tablecustomer_basedans MaxCompute. Ces données servent de référence pour la synchronisation incrémentielle ultérieure.RemarqueCette table est également appelée table de référence complète.
-
Synchronisation incrémentielle des données.
DTS crée une table de journalisation incrémentielle dans MaxCompute. Le nom de cette table correspond au nom de la table de destination suivi du suffixe
_log, par exemplecustomer_log. DTS synchronise ensuite en temps réel les données incrémentielles depuis la base de données source vers cette table.RemarquePour plus d'informations sur la structure de la table de journalisation incrémentielle, consultez Schéma de la table de journalisation incrémentielle.
Que faire si je ne parviens pas à obtenir le topic Kafka ?
Le broker Kafka actuellement configuré peut ne pas disposer des informations relatives au topic. Exécutez la commande suivante pour vérifier la répartition des brokers pour ce topic :
./bin/kafka-topics.sh --describe --zookeeper zk01:2181/kafka --topic topic_name
Puis-je déployer une instance MySQL locale comme base de données secondaire pour une instance RDS ?
Oui, c'est possible. Utilisez la fonctionnalité de migration de données de Data Transmission Service (DTS) pour configurer une synchronisation en temps réel des données depuis RDS vers une instance MySQL auto-gérée locale, afin de mettre en place une architecture primaire-secondaire.
Comment copier des données d'une instance RDS vers une nouvelle instance RDS ?
Vous pouvez sélectionner 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 permet-il de dupliquer une base de données au sein d'une instance RDS pour créer une nouvelle base identique, seul le nom différant ?
Oui. La fonctionnalité de mappage des noms d'objets fournie par DTS permet de copier une base de données au sein d'une instance RDS afin de créer une nouvelle base identique, à l'exception du nom.
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 à l'aide de comptes différents, entraînant une charge élevée sur l'instance. Il est recommandé 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. Réorganisez vos activités et redémarrez 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.
RemarqueUn 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 les champs apparaissent tous en minuscules après une synchronisation ou une migration vers la base de données de destination dans l'ancienne console ?
Utilisez la nouvelle console ainsi que 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 suspendue peut-elle être reprise ?
En règle générale, une tâche DTS suspendue depuis moins de 24 heures peut reprendre normalement. Si le volume de données est faible, une tâche suspendue 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 zéro après la suspension 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 le traitement des 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 de la modification DDL sans verrouillage ?
Pour connaître les principes fondamentaux de la modification DDL sans verrouillage, consultez Principes fondamentaux.
DTS permet-il de suspendre la synchronisation ou la migration d'une table spécifique ?
Non, cette fonctionnalité n'est pas prise en charge.
Dois-je racheter une tâche si elle échoue ?
Non. Vous pouvez reconfigurer la tâche existante.
Que se passe-t-il si plusieurs tâches écrivent des données vers la même destination ?
Cela risque d'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, un certain délai est nécessaire pour son déverrouillage. Veuillez patienter.
Puis-je modifier le groupe de ressources d'une instance DTS ?
Oui. Sur la page Basic Information de l'instance, cliquez sur Modification en regard de Resource Group Name dans la section Basic Information.
DTS dispose-t-il d'un outil d'analyse des journaux binaires ?
Non, DTS ne fournit 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 ; sa 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 déjà créée ?
Cette opération n'est pas prise en charge.
Peut-on réduire la configuration de l'instance RDS for MySQL rattachée à PolarDB-X 1.0 dans une tâche DTS ?
La réduction de configuration est déconseillée. Elle déclenche un basculement primaire/secondaire susceptible d'entraîner une perte de données.
Peut-on mettre à niveau ou réduire la configuration de l'instance source ou de destination pendant l'exécution d'une tâche DTS ?
La mise à niveau ou la réduction de la configuration de l'instance source ou de destination pendant l'exécution d'une tâche DTS peut provoquer une latence 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 en cours d'exécution.
Quel est l'impact d'une tâche DTS sur les instances source et de destination ?
La synchronisation initiale complète des données consomme des ressources de lecture et d'écriture sur les bases de données source et de destination, ce qui peut augmenter leur charge. Nous vous recommandons d'exécuter 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 précisément car elle dépend de nombreux facteurs, tels que la charge 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
située dans le coin inférieur droit, puis cliquez sur
pour revenir à la version précédente de la console Data Transmission Service.
DTS prend-il en charge le chiffrement des données ?
DTS permet un accès sécurisé à la base de données source ou de destination via le chiffrement Secure Sockets Layer (SSL) pour lire les données depuis la source ou écrire vers la destination. Toutefois, il ne prend pas en charge le chiffrement des données en transit lors de la transmission.
DTS prend-il en charge ClickHouse comme source ou destination ?
Non, cette base de données n'est pas prise en charge.
DTS prend-il en charge AnalyticDB for MySQL 2.0 comme source ou destination ?
AnalyticDB for MySQL 2.0 est uniquement pris en charge en tant que destination. La solution utilisant 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 une tâche nouvellement créée n'apparaît-elle pas 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 des tâches correspondante, notamment la région et le groupe de ressources corrects.
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 et les seuils de latence ?
DTS offre des capacité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 d'échec d'une tâche en erreur depuis longtemps ?
Non. Si une tâche est en échec depuis une longue période (par exemple, plus de 7 jours), les journaux associés sont effacés et la cause de l'échec ne peut plus être consultée.
Une tâche en échec depuis longtemps peut-elle être restaurée ?
Non. Si une tâche est en échec depuis une longue période (par exemple, plus de 7 jours), les journaux associés sont effacé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, celui-ci a pu être créé par DTS. DTS crée un compte interne rdsdt_dtsacct dans certaines instances de base de données pour se connecter aux instances 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 éparses 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 :
-
Vérifiez 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); -
Vérifiez 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'); -
Vérifiez si des colonnes de clé primaire ne sont pas incluses dans l'index cluster :
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); -
Vérifiez 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; -
Vérifiez 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); -
Vérifiez la présence de tables contenant des colonnes éparses :
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 de destination sont incohérents ?
Essayez d'utiliser la fonctionnalité de mappage pour mapper les colonnes entre la source et la destination. Mappage de bases de données, tables et colonnes.
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, cette opération n'est pas prise en charge.
DTS permet-il de limiter la vitesse de lecture de la base de données source ?
Non. Vous devez évaluer les performances de la base de données source (notamment si les IOPS et la bande passante réseau répondent aux exigences) avant l'exécution de 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 shardé MongoDB ?
Vérifier la présence de documents orphelins
-
Connectez-vous à l'instance de cluster shardé MongoDB à l'aide du shell mongo.
Pour vous connecter à ApsaraDB for MongoDB, consultez Se connecter à une instance de cluster shardé via le shell mongo.
-
Exécutez la commande suivante pour basculer vers la base de données de destination.
use <db_name> -
Exécutez la commande suivante pour afficher les informations relatives aux documents orphelins.
db.<coll_name>.find().explain("executionStats")RemarqueConsultez les statistiques
executionStatsde chaque shard. Si le champchunkSkipsde l'étapeSHARDING_FILTERn'est pas égal à 0, cela indique la présence de documents orphelins sur le shard correspondant.L'exemple de sortie suivant indique que 102 documents (« nReturned » : 102) sont retournés lors de l'étape
FETCHavant l'étapeSHARDING_FILTER. Ensuite, deux documents orphelins (« chunkSkips » : 2) sont filtrés lors de l'étapeSHARDING_FILTER. Enfin, 100 documents (« nReturned » : 100) sont retourné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
Si vous possédez plusieurs bases de données, vous devez nettoyer les documents orphelins pour chacune d'elles.
ApsaraDB for MongoDB
L'exécution du script de nettoyage sur une instance dont la version majeure est antérieure à MongoDB 4.2 ou la version mineure antérieure à 4.0.6 provoque une erreur. Pour vérifier la version actuelle de votre instance, consultez Versions mineures de MongoDB. Pour mettre à niveau la version majeure ou mineure, consultez 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 qu'il s'agit de MongoDB 4.4 et versions ultérieures ou de MongoDB 4.2 et versions antérieures.
MongoDB 4.4 et versions ultérieures
-
Sur un serveur pouvant se connecter à votre instance de cluster shardé, créez un script JavaScript (JS) nommé
cleanupOrphaned.js.RemarqueCe script nettoie les documents orphelins de toutes les collections dans plusieurs bases de données 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
shardNamesetdatabasesToProcess:shardNames: tableau d'ID des shards dont vous souhaitez nettoyer les documents orphelins. Vous pouvez obtenir les ID des shards dans la liste des shards sur la page Basic Information de l'instance. Par exemple,d-bp15a3796d3a****.databasesToProcess: tableau des noms de bases de données dont vous souhaitez nettoyer les documents orphelins.
-
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.txtParamètre
Description
<Mongoshost>Adresse de connexion du nœud mongos de l'instance de cluster shardé. Exemple :
s-bp14423a2a51****.mongodb.rds.aliyuncs.com.<Primaryport>Numéro de port du nœud mongos de l'instance de cluster shardé. 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.txtFichier de sortie pour les résultats d'exécution.
MongoDB 4.2 et versions antérieures
-
Sur un serveur pouvant se connecter à votre instance de cluster shardé, créez un script JS nommé
cleanupOrphaned.js.RemarqueCe script nettoie les documents orphelins d'une collection spécifiée dans une base de données spécifiée sur plusieurs shards. Pour nettoyer les documents orphelins de plusieurs collections, vous pouvez modifier le paramètre
fullCollectionNameet exécuter le script plusieurs fois, ou modifier le script pour itérer 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
shardNamesetfullCollectionName:shardNames: tableau d'ID des shards dont vous souhaitez nettoyer les documents orphelins. Vous pouvez obtenir les ID des shards dans la liste des shards sur la page Basic Information de l'instance. Par exemple,d-bp15a3796d3a****.fullCollectionName: nom de la collection dont vous souhaitez nettoyer les documents orphelins, au formatdatabase.collection.
-
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.txtParamètre
Description
<Mongoshost>Adresse de connexion du nœud mongos de l'instance de cluster shardé. Exemple :
s-bp14423a2a51****.mongodb.rds.aliyuncs.com.<Primaryport>Numéro de port du nœud mongos de l'instance de cluster shardé. 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.txtFichier de sortie pour les résultats d'exécution.
MongoDB auto-géré
-
Sur un serveur pouvant 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" -
Modifiez le fichier de script cleanupOrphaned.js. Remplacez
testpar le nom de la base de données dont vous souhaitez nettoyer les documents orphelins.ImportantSi vous possédez 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); }); -
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.
RemarqueVous devez répéter cette étape pour chaque shard.
mongo --host <Shardhost> --port <Primaryport> --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.jsRemarque<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.
<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.jsmongo --host 172.16.1.11 --port 27021 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.jsmongo --host 172.16.1.12 --port 27024 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js
Dépannage
Si des curseurs inactifs existent sur le namespace d'un document orphelin, le processus de nettoyage risque de ne pas aboutir et le journal mongod contiendra 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 via le 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 pourrez ensuite tenter de nettoyer à nouveau 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 shardé ?
Vous pouvez activer la fonctionnalité Balancer et recourir au pré-sharding pour résoudre les problèmes de déséquilibre des données. Ce phénomène survient lorsque la majorité des écritures se concentre sur un seul shard.
Activer le Balancer
Si le Balancer est désactivé ou si la fenêtre d'activité du Balancer n'a pas encore débuté, vous avez la possibilité d'activer le Balancer ou de suspendre temporairement cette fenêtre afin de lancer immédiatement l'équilibrage des données.
Connectez-vous à l'instance de cluster shardé MongoDB.
-
Dans la fenêtre de commande du nœud mongos, basculez vers la base de données config.
use config -
Exécutez les commandes suivantes selon vos besoins.
-
Activer la fonctionnalité Balancer
sh.setBalancerState(true) -
Suspendre temporairement la fenêtre du Balancer
db.settings.updateOne( { _id : "balancer" }, { $unset : { activeWindow : true } } )
-
Pré-sharding
MongoDB prend en charge deux méthodes de sharding : par plage (range) et par hachage (hash). Le pré-sharding permet de répartir uniformément les chunks sur plusieurs nœuds shard. Cette approche favorise un équilibrage de charge optimal lors de la synchronisation ou de la migration des données via DTS.
Hash sharding
Le paramètre numInitialChunks permet de mettre en œuvre le pré-sharding. Sa valeur par défaut correspond à number of shards × 2 et peut atteindre au maximum number of shards × 8192. sh.shardCollection().
sh.shardCollection("phonebook.contacts", { last_name: "hashed" }, false, {numInitialChunks: 16384})
Range sharding
Lorsque la source MongoDB est un cluster shardé, exploitez les données de
config.chunkspour obtenir la plage de chunks de la table shardée. Utilisez ensuite cette plage comme référence pour la valeur<split_value>dans vos commandes de pré-sharding.-
Si la source MongoDB est un replica set, seule la commande
findpermet de déterminer la plage de la clé de sharding afin de définir un point de fractionnement approprié.# Get the minimum value of the sharding key db.<coll>.find().sort({<shardKey>:1}).limit(1) # Get the maximum value of the sharding key db.<coll>.find().sort({<shardKey>:-1).limit(1)
Format de la commande
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é-sharding terminée, exécutez la commande sh.status() sur le nœud mongos pour vérifier les résultats obtenus.
Comment définir le nombre d'instances affichées par page dans la liste des tâches de la console ?
Les étapes ci-dessous prennent une instance de synchronisation comme exemple.
-
Accédez à la page de la liste des tâches de synchronisation de la région de destination. Deux méthodes sont disponibles :
Depuis la console DTS
Connectez-vous à la console Data Transmission Service (DTS).
Dans le volet de navigation de gauche, cliquez sur Data Synchronization.
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
RemarqueLes opérations réelles peuvent varier selon le mode et la disposition de la console DMS. Pour plus d'informations, reportez-vous à Mode simple et Personnaliser la disposition et le style de l'interface DMS.
Connectez-vous à Data Management (DMS).
Dans la barre de menu supérieure, choisissez .
À droite de Data Synchronization Tasks, sélectionnez la région où se trouve l'instance de synchronisation.
Faites défiler jusqu'au bas de la page.
-
Dans le coin inférieur droit de la page, sélectionnez Items per page.
RemarqueVous pouvez définir Items per page sur 10, 20 ou 50.
Que faire si une instance DTS signale un délai d'expiration de connexion ZooKeeper ?
Essayez de redémarrer l'instance pour rétablir la connexion. Pour obtenir des instructions sur le redémarrage d'une instance, reportez-vous à Démarrer une instance DTS.
Pourquoi un bloc CIDR DTS est-il automatiquement rajouté après avoir été supprimé dans CEN ?
Cette situation peut se produire lorsque 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 s'apparente à celui en Python. Reportez-vous à l'Exemple d'appel SDK Python. Rendez-vous sur la page SDK Data Transmission Service DTS, sélectionnez le langage de programmation souhaité dans All Languages, puis consultez l'exemple de code.
Comment utiliser une API pour configurer la fonctionnalité ETL d'une tâche de synchronisation ou de migration ?
Configurez cette fonctionnalité à l'aide de paramètres courants tels que etlOperatorCtl et etlOperatorSetting dans le paramètre Reserve. ConfigureDtsJob et Description du paramètre Reserve.
DTS prend-il en charge Azure SQL Database ?
Oui. Pour utiliser Azure SQL Database comme base de données source, définissez SQL Server Incremental Synchronization Mode sur Polling and querying CDC instances for incremental synchronization.
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 de ces données, vous pouvez les supprimer manuellement.
Le débit peut-il être ajusté pendant l'exécution d'une instance de synchronisation ou de migration ?
DTS permet-il d'effectuer un échantillonnage des données par période pour la synchronisation ou la migration ?
Non.
Faut-il créer manuellement les tables de données dans la base de données de destination lors d'une synchronisation ou d'une migration ?
Pour les instances DTS prenant 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), aucune création manuelle n'est requise dans la base de données de destination si Schema Synchronization est sélectionné pour Synchronization Types ou si Schema Migration est sélectionné pour Migration Types.
Les réseaux des bases de données source et de destination doivent-ils être interconnectés pour synchroniser ou migrer des données ?
Non, ce n'est pas nécessaire.
Faut-il configurer une autorisation RAM lors de la configuration d'une tâche DTS multi-comptes via le réseau public ?
Non. Lors de la configuration d'une tâche DTS, vous pouvez définir le Access Method de l'instance de base de données sur Public IP Address, puis terminer la configuration.
Les tâches de synchronisation de 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 de données écrase-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 associés sont les suivants :
Comportement par défaut de DTS
Si un conflit de clé primaire ou de clé unique survient pendant l'exécution d'une tâche de synchronisation :
-
Lorsque 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 unique qu'un enregistrement de la base de données source :
Pendant 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 remplace celui de la base de données de destination.
Si les schémas de table diffèrent, la synchronisation initiale des données risque d'échouer. Cela peut entraîner la synchronisation partielle des colonnes ou un échec total de la synchronisation. Faites preuve de prudence.
Paramètres associés
Durant le processus de configuration de la tâche, le paramètre Processing Mode of Conflicting Tables permet de contrôler la manière dont DTS traite les tables existantes.
-
Precheck and Report Errors : Vérifie si une table portant le même nom existe dans la base de données de destination. En l'absence de table homonyme, la pré-vérification réussit. Si une table du même nom existe déjà, la pré-vérification échoue et la tâche de synchronisation des données ne démarre pas.
RemarqueS'il est impossible de supprimer ou de renommer la table homonyme dans la base de données de destination, vous pouvez la mapper vers un nom de table différent. Pour plus d'informations, reportez-vous à Mapper les noms de tables et de colonnes.
-
Ignore Errors and Proceed : Ignore la vérification des doublons de noms de table dans la base de données de destination.
AvertissementLa sélection de Ignore Errors and Proceed peut provoquer des incohérences de données et mettre votre activité en péril. Par exemple :
-
Lorsque 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 unique qu'un enregistrement de la base de données source :
Pendant 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 remplace celui de la base de données de destination.
Si les schémas de table diffèrent, la synchronisation initiale des données risque d'échouer. Cela peut entraîner la synchronisation partielle des colonnes ou un échec total de la synchronisation. Faites preuve de prudence.
-
Recommandation
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.