Je souhaite résoudre les incohérences de données lorsque j'utilise Amazon Simple Storage Service (Amazon S3) comme cible pour la migration vers AWS Database Migration Service (AWS DMS).
Brève description
Lorsque vous migrez des données d'une base de données source vers un compartiment S3, il est possible que des données manquantes, des données en double ou des colonnes soient manquantes après la modification du schéma. Cela se produit parce qu'Amazon S3 ne prend pas en charge les clés primaires, les mises à jour ou l'intégrité référentielle.
Pour résoudre les incohérences de données, procédez à la résolution de votre problème.
Résolution
Données manquantes ou supprimées dans la cible S3
Si des opérations TRUNCATE TABLE ou DROP TABLE ont lieu sur la base de données source, AWS DMS réplique les opérations sur Amazon S3. Cette réplication peut entraîner des données manquantes.
Pour éviter que des données ne soient manquantes ou supprimées lors des opérations TRUNCATE ou DROP TABLE, vérifiez et ajustez vos paramètres de gestion du langage de définition des données (DDL). Procédez comme suit :
-
Ouvrez la console AWS DMS.
-
Dans le volet de navigation, sous Migrer ou répliquer, sélectionnez Tâches.
-
Sélectionnez votre tâche.
-
Vérifiez que le statut de la tâche est Arrêté.
-
Sélectionnez Modifier.
-
Choisissez Paramètres des tâches.
-
Choisissez l'éditeur JSON.
-
Trouvez la section des paramètres ChangeProcessingDDLHandlingPolicy. Définissez ensuite les paramètres HandleSourceTableTruncated et HandleSourceTableDropped sur Faux. Exemple de configuration :
"ChangeProcessingDdlHandlingPolicy": {
"HandleSourceTableDropped": false,
"HandleSourceTableTruncated": false
}
-
Sélectionnez Enregistrer.
-
Sélectionnez Actions, puis Reprendre.
Amazon S3 ne reflète pas les modifications de schéma
Si vous ajoutez de nouvelles colonnes à une table de la source mais que vous n'activez pas l'évolution du schéma, AWS DMS peut ne pas capturer les modifications.
Pour résoudre les modifications de schéma manquantes, procédez comme suit :
-
Ouvrez la console AWS DMS.
-
Dans le volet de navigation, sous Migrer ou répliquer, sélectionnez Tâches.
-
Sélectionnez votre tâche.
-
Vérifiez que le statut de la tâche est Arrêté.
-
Sélectionnez Modifier.
-
Choisissez Paramètres des tâches.
-
Choisissez l'éditeur JSON.
-
Trouvez la section des paramètres ChangeProcessingDDLHandlingPolicy. Définissez ensuite le paramètre HandleSourceTableAltered sur True. Exemple de configuration :
"ChangeProcessingDdlHandlingPolicy": {
"HandleSourceTableAltered": true
}
-
Sélectionnez Enregistrer.
-
Sélectionnez Actions, puis Reprendre.
-
Pour inclure les nouvelles colonnes dans vos données Amazon S3, rechargez la table.
Plusieurs tâches écrivent sur le même chemin Amazon S3 et génèrent des données en double ou incohérentes
Si plusieurs tâches AWS DMS écrivent sur le même chemin S3, des données en double se produisent car Amazon S3 stocke tous les objets entrants.
Afin de résoudre ce problème, procédez comme suit :
- Ouvrez la console AWS DMS.
- Dans le volet de navigation, sous Migrer ou répliquer, sélectionnez Tâches.
- Sélectionnez votre tâche.
- Vérifiez que le statut de la tâche est Arrêté.
Remarque : veillez à arrêter les tâches inutilisées ou les tâches de test qui continuent à écrire des données.
- Dans le volet de navigation, sélectionnez Points de terminaison.
- Sélectionnez votre point de terminaison cible.
- Sélectionnez Modifier.
- Attribuez une valeur BucketFolder unique.
- Sélectionnez Enregistrer.
Remarque : AWS DMS teste automatiquement la connexion entre la cible et l'instance de réplication. Assurez-vous que le test de connexion s'est terminé avec succès.
- Dans le volet de navigation, sous Migrer ou répliquer, sélectionnez Tâches.
- Sélectionnez votre tâche, puis choisissez Actions. Choisissez Redémarrer.
- Répétez les étapes 2 à 11 pour chaque tâche qui se réplique à partir de la même source.
TargetTablePrepMode est défini sur DO_NOTHING et provoque des enregistrements en double
Si vous définissez le TargetTablePrepMode sur DO_NOTHING pour votre tâche et qu'elle s'arrête pendant la phase de chargement complet, la tâche écrit à nouveau les fichiers de chargement complet lorsque vous la redémarrez. Cela entraîne la duplication des données de chargement complet, car Amazon S3 ne prend pas en charge les mises à jour ou les nettoyages automatiques.
Afin de résoudre ce problème, procédez comme suit :
- Ouvrez la console AWS DMS.
- Dans le volet de navigation, sous Migrer ou répliquer, sélectionnez Tâches.
- Sélectionnez votre tâche.
- Vérifiez que le statut de la tâche est Arrêté.
- Sélectionnez Modifier.
- Choisissez Paramètres des tâches.
- Choisissez l'éditeur JSON.
- Trouvez la section des paramètres FullLoadSettings. Définissez le TargetTablePrepMode sur TRUNCATE_BEFORE_LOAD. Exemple de configuration :
"FullLoadSettings": {
"TargetTablePrepMode": "TRUNCATE_BEFORE_LOAD"
}
Remarque : pour éviter les doublons lorsque le TargetTablePrepMode est défini sur DO_NOTHING, arrêtez les tâches uniquement une fois la phase de chargement complète terminée.
- Avant de redémarrer la tâche, supprimez manuellement les fichiers de chargement complet précédemment écrits de votre compartiment S3.
Informations connexes
Paramètres du point de terminaison lors de l'utilisation d'Amazon S3 comme cible pour AWS DMS
Limitations liées à l'utilisation d'Amazon S3 comme cible