Comment résoudre les problèmes de discordance des données entre les bases de données source et cible dans AWS DMS ?

Dernière mise à jour : 12/09/2022

J'ai une tâche AWS Database Migration Service (AWS DMS) à l'étape de chargement complet terminé ou de réplication continue. Toutefois, les données en aval de la base de données cible ne correspondent pas aux données de la source. Comment résoudre les problèmes de discordance des données entre les bases de données source et cible ?

Brève description

Plusieurs raisons peuvent expliquer que les données ne correspondent pas lorsque vous migrez vos données dans un environnement hétérogène à l'aide d'AWS DMS. Par exemple :

  • Si vous n'utilisez pas les bons paramètres LOB, les données sont tronquées conformément au paramètre de tâche MaxLobSize. Ainsi, la colonne LOB cible ne contient pas exactement les mêmes données que la source.
  • Lors d'une migration hétérogène, AWS DMS convertit le type de données sources en un type de données internes. Ensuite, AWS DMS convertit les données internes en type de données cibles. Toutefois, étant donné que certains types de données sources et cibles ne sont pas entièrement pris en charge par AWS DMS, vous risquez de constater une discordance des données entre la source et la cible.
  • Si des erreurs ou des exceptions se produisent lors de la réplication de la capture des données modifiées (CDC), la transaction DML peut échouer dans la base de données cible.

Solution

Effectuer des vérifications initiales avant de procéder

Avant de résoudre le problème en suivant les étapes de cet article, effectuez les vérifications initiales suivantes :

  • Si vous utilisez une tâche de chargement complet uniquement, assurez-vous que la migration est terminée et que la tâche est dans un état arrêté.
  • Si vous utilisez une tâche de chargement complet ou CDC uniquement, vérifiez les métriques Amazon CloudWatch CDCLatencySource et CDCLatencyTarget. Vérifiez qu'il n'y a aucune latence.
  • Vérifiez qu'aucune autre application n'est connectée aux bases de données source ou cible. Cela peut entraîner la manipulation des données. Par exemple, si vous exécutez une tâche de chargement complet uniquement et que les données de la source sont modifiées par une autre application, vous pouvez constater une discordance des données au niveau de la cible. Ou, si la base de données cible comporte des déclencheurs DML ou si une autre application écrit des données dans la table cible migrée, vous observerez également une discordance des données entre la cible et la source.

Interroger la table awsdms_validation_failures_v1 sur la cible

Lorsque la cohérence des données est votre objectif principal, veillez à activer la validation lorsque vous créez la tâche AWS DMS.

Résoudre les problèmes lorsque la validation est activée

Si la validation est activée, vous pouvez vérifier la table awsdms_Validation_failures_v1 dans votre base de données cible. Si un enregistrement passe à l'état ValidationSuspended ou ValidationFailed pendant la migration, AWS DMS écrit les informations de diagnostic dans awsdms_validation_failures_V1. Interrogez cette table pour résoudre les erreurs de validation en exécutant une commande similaire à celle-ci :

select * from awsdms_validation_failures_v1 where TASK_NAME = 'ABC123FGJASHKNA345';

Consultez la colonne des détails de la sortie pour obtenir des informations sur l'échec. Utilisez la colonne Key (Clé) pour comparer les données d'enregistrement entre votre source et votre cible. Pour plus d'informations, consultez la section Troubleshooting (Dépannage) de la documentation sur la validation des données AWS DMS.

Résoudre les problèmes lorsque la validation est désactivée

Si vous n'avez pas activé la validation de votre tâche AWS DMS, créez une tâche de validation uniquement :

  • Pour une migration ponctuelle, utilisez la fonctionnalité de validation de chargement complet uniquement pour comparer rapidement toutes les lignes entre la source et la cible.
  • Pour une réplication continue, utilisez la tâche de validation CDC uniquement. Une tâche de validation CDC uniquement valide les lignes existantes entre les tables source et cible. La tâche se poursuit avec les modifications continues au fur et à mesure qu'elles apparaissent et signale tout échec de validation des données.

Vérifier les limites des données sources et cibles

Après avoir identifié les données non concordantes, vérifiez la source et la cible pour connaître les limites associées à leurs types de données. Par exemple, lorsque vous utilisez PostgreSQL comme source, vous ne pouvez pas migrer les types de données ENUM.

Rechercher les erreurs dans le journal des tâches

Recherchez la présence d'erreurs dans le journal des tâches au moment de l'échec de la validation. Vous pouvez également consulter les tables de contrôle pour voir si des exceptions ont été enregistrées pendant la phase de réplication des données.

Résoudre les données non concordantes causées par la troncature

Lorsque vous utilisez le mode LOB limité, AWS DMS préalloue de la mémoire dans l'instance de réplication. Ensuite, il charge les données LOB en bloc à l'aide du paramètre de tâche LoBMaxSize. AWS DMS tronque tous les LOB qui dépassent la taille maximale de LOB, puis publie un avertissement dans le fichier journal.

Vérifiez les messages d'avertissement indiquant que les données ont été tronquées dans les fichiers journaux, puis vérifiez la longueur maximale de la colonne LOB correspondante. Définissez une LobMaxSize supérieure à la longueur de la colonne LOB afin que les données ne soient pas tronquées. Utilisez le script de support de diagnostic pour savoir quelles tables contiennent des données LOB, puis interrogez en conséquence.

Si la taille maximale de la colonne LOB est supérieure à 100 Mo, utilisez le mode LOB complet ou LOB en ligne pour arrêter la troncature des données de la colonne LOB.


Cet article vous a-t-il été utile ?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?