Passer au contenu

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

Lecture de 5 minute(s)
0

J'ai une tâche AWS Database Migration Service (AWS DMS) à l’étape de migration terminée à chargement complet ou en cours de réplication. Toutefois, les données de la base de données cible ne correspondent pas à celles de la source.

Brève description

Lorsque vous utilisez AWS DMS pour migrer des données dans un environnement hétérogène, vous pouvez observer une incompatibilité de données pour les raisons suivantes :

  • Paramètres LOB (Large Binary Object, objet binaire de grande taille) incorrects
  • Le type de données source ou cible n'est pas pris en charge
  • Des erreurs ou des exceptions survenant lors de la réplication de la capture de données modifiées (CDC) entraînent l'échec de la transaction en langage de manipulation des données (DML) dans la base de données cible

Si vous n'utilisez pas les paramètres LOB adéquats, les données sont tronquées en fonction du paramètre de tâche LobMaxSize. 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 source en un type de données interne. Puis, AWS DMS convertit les données internes en type de données cible. Étant donné que certains types de données source et cible ne sont pas entièrement pris en charge par AWS DMS, il est possible que vous observiez une incompatibilité des données source et cible.

Résolution

Effectuer les vérifications initiales

Si vous utilisez une tâche à chargement complet uniquement, assurez-vous que la migration est terminée et que la tâche est arrêtée.

Si vous utilisez une tâche CDC à chargement complet ou une tâche CDC uniquement, vérifiez les métriques Amazon CloudWatch CDCLatencySource et CDCLatencyTarget. Vérifiez l’absence de latence.

Vérifiez qu'aucune autre application n'est connectée aux bases de données source ou cible, car cela peut entraîner une manipulation des données. Par exemple, si vous exécutez une tâche de chargement complet uniquement et que la date source est modifiée par une autre application, cela signifie que les données de la cible ne correspondent pas. Ou, si une autre application écrit des données dans la table cible migrée de la base de données cible, cela signifie qu'il existe une incompatibilité des données entre la cible et la source.

Interroger la table awsdms_validation_failures_v1 sur la cible

Si votre objectif est la cohérence des données, activez la validation lorsque vous créez la tâche AWS DMS.

Remarque : Si une table comporte des colonnes LOB et que vous utilisez le mode LOB limité pour la migration, vous devez définir ValidationPartialLobSize sur la même valeur que LobMaxSize.

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

Si la validation est activée, consultez 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. Pour résoudre les erreurs de validation, exécutez une commande similaire à la suivante :

select * from awsdms_validation_failures_v1 where TASK_NAME = 'ABC123FGJASHKNA345';

Pour obtenir des informations sur la panne, consultez la colonne Détails dans la sortie. Utilisez la colonne Clé pour comparer les données d'enregistrement entre votre source et votre cible. Pour plus d'informations sur la résolution des problèmes liés à la validation des données, consultez la section Dépannage.

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

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

Pour une migration unique, utilisez la fonction de validation du 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 en cours au fur et à mesure qu'elles apparaissent et signale les échecs de validation des données.

Vérifier les limites des données source et cible

Après avoir identifié les données incompatibles, vérifiez la source et la cible pour 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.

Vérifier les erreurs dans le journal de tâches

Vérifiez si le journal de tâches contient des erreurs au moment de l'échec de la validation. Vous pouvez également consulter les tables de contrôle pour afficher les exceptions enregistrées pendant la phase de réplication des données.

Résoudre les données incompatibles causées par la troncature

Lorsque vous utilisez le mode LOB limité, AWS DMS pré-affecte de la mémoire dans l'instance de réplication. Puis, AWS DMS utilise le paramètre de tâche LobMaxSize pour charger les données LOB en masse. AWS DMS tronque les LOB qui dépassent la taille maximale des LOB, puis envoie un message d'avertissement au fichier journal.

Consultez les fichiers journaux pour détecter les messages d'avertissement indiquant que les données ont été tronquées, puis vérifiez la taille maximale de la colonne LOB correspondante. Définissez un LobMaxSize supérieur à la taille de la colonne LOB afin que les données ne soient pas tronquées. Utilisez un script d'aide au diagnostic pour rechercher les tables contenant des données LOB, puis interrogez la taille de la colonne LOB.

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.

Informations connexes

Tâches de validation uniquement

Configuration de la prise en charge de LOB pour les bases de données sources dans une tâche AWS DMS

AWS OFFICIELA mis à jour il y a un an