Lorsque j'utilise AWS Database Migration Service (AWS DMS) pour migrer des bases de données source vers Amazon Redshift, je rencontre des problèmes de réplication de données et des échecs de capture de données modifiées (CDC).
Résolution
Échecs du CDC
Si vous êtes confronté à des échecs du CDC, examinez les journaux de tâches AWS DMS pour rechercher des messages d'erreur liés à des tables spécifiques. Vous pouvez également vérifier les métriques Amazon CloudWatch CDCLatencySource et CDCLatencyTarget pour votre tâche AWS DMS.
Effectuez l'une des actions suivantes en fonction du message d'erreur reçu :
- Vérifiez que les tables source utilisent des clés primaires. Pour les sources PostgreSQL, les tables capturées doivent utiliser une clé primaire pour qu'AWS DMS traite les opérations DELETE et UPDATE.
- Vérifiez que vous avez défini la période de conservation des journaux de modifications dans la base de données source à au moins 24 heures.
- Assurez-vous que le compte AWS utilisé par AWS DMS dispose des autorisations requises pour les bases de données source et cible.
Incohérences de données
Pour résoudre les incohérences de données, procédez comme suit :
- Créez une tâche de validation uniquement pour identifier les enregistrements non correspondants entre la source et la cible. Pour plus d'informations, consultez la section Performances de validation Redshift.
- Interrogez la table awsdms_validation_failures_v1 dans la base de données cible pour afficher les incohérences.
- Consultez la table awsdms_apply_exceptions sur la base de données cible pour obtenir des informations détaillées sur les erreurs relatives aux échecs de migration.
- Vérifiez que toutes les tables cible répliquées utilisent une clé primaire ou un index unique.
Remarque : Amazon Redshift n'impose aucune contrainte de clé unique, de clé primaire ni de clé étrangère. Aussi, des doublons peuvent se produire.
- Si vous utilisez PostgreSQL comme source, vous devez définir des clés primaires pour les tables source et cible.
- Pour les tables présentant des incohérences, utilisez la tâche AWS DMS pour recharger ces dernières.
Problèmes de conversion de type
Pour résoudre les problèmes de conversion de type, procédez comme suit :
-
Consultez les journaux de tâches AWS DMS pour détecter les erreurs liées à la troncature de données ou à une longueur de chaîne supérieure à la longueur du langage de définition des données (DDL).
-
Examinez la table awsdms_apply_exceptions pour détecter d’éventuels échecs de migration.
-
Ajustez les types de données des colonnes dans la base de données Redshift cible pour prendre en charge des données plus volumineuses. Par exemple, remplacez varchar par text pour les colonnes présentant des problèmes de longueur.
-
Modifiez le paramètre MaxLobSize dans les paramètres de tâche pour gérer des tailles de données plus importantes, comme illustré dans l'exemple suivant :
{
"TargetMetadata": {
"MaxLobSize": 32
}
}
-
Vérifiez que vous utilisez un type de données pris en charge et assurez-vous que vous avez correctement associé la source et la cible.
Problèmes de performances et latence élevée
Pour améliorer les performances et réduire la latence, procédez comme suit :
Enregistrements en double
Pour éviter les enregistrements en double, procédez comme suit :
- Vérifiez que les tables cible répliquées utilisent une clé primaire ou un index unique.
- Créez manuellement des tables sur la cible à l'aide de clés primaires et définissez le TargetTablePrepMode sur DO_NOTHING ou TRUNCATE_BEFORE_LOAD dans les paramètres de tâche.
- Utilisez la règle de correspondance de table primary-key-def pour définir explicitement des clés primaires.
Données manquantes ou incomplètes
Pour résoudre les données manquantes ou incomplètes, procédez comme suit :
- Consultez les journaux de tâches AWS DMS pour rechercher des avertissements ou des erreurs liés à des tables spécifiques.
- Vérifiez la métrique CDCIncomingChanges pour déterminer si AWS DMS capture toutes les modifications depuis la source.
- Vérifiez que le compte utilisateur de la base de données source qu'AWS DMS utilise dispose des autorisations nécessaires pour accéder à toutes les tables et tous les schémas requis.
- Créez une tâche de validation uniquement pour identifier les enregistrements non correspondants. Pour plus d'informations, consultez la section Performances de validation Redshift.
- Pour les tables présentant des problèmes récurrents, vous pouvez créer des tâches AWS DMS individuelles afin de résoudre les problèmes de manière plus précise.
Informations connexes
Bonnes pratiques relatives à AWS Database Migration Service
Résolution des problèmes liés aux tâches de migration dans AWS Database Migration Service
Validation des données AWS DMS