Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Création de tâches pour la réplication continue à l'aide d' AWS DMS

Mode de mise au point
Création de tâches pour la réplication continue à l'aide d' AWS DMS - AWS Service de Migration de Base de Données

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Vous pouvez créer une AWS DMS tâche qui capture les modifications en cours depuis le magasin de données source. Pour ce faire, vous pouvez capturer pendant que vous migrez vos données. Vous pouvez également créer une tâche qui capture les modifications continues une fois que vous avez terminé la migration initiale (chargement complet) vers un magasin de données cible pris en charge. Ce processus est appelé réplication continue ou capture des données de modification (CDC). AWS DMS utilise ce processus lors de la réplication des modifications en cours à partir d'un magasin de données source. Lors de ce processus, les modifications apportées aux journaux de base de données sont collectées à l'aide de l'API native du moteur de base de données.

Note

Vous pouvez migrer des vues à l'aide de tâches de chargement complet uniquement. Si votre tâche est une tâche CDC uniquement ou une tâche de chargement complet qui démarre la capture des données modifiées (CDC) une fois terminée, la migration inclut uniquement les tables de la source. À l'aide d'une full-load-only tâche, vous pouvez migrer des vues ou une combinaison de tables et de vues. Pour de plus amples informations, veuillez consulter Spécification des règles de sélection de table et de transformation à l’aide de JSON.

Chaque moteur source possède une configuration requise spécifique pour communiquer ce flux de modifications à un compte d'utilisateur donné. La plupart des moteurs ont besoin d'une configuration supplémentaire pour que le processus de capture puisse exploiter les données modifiées de manière significative, sans perte de données. Par exemple, Oracle nécessite l'ajout d'une journalisation supplémentaire et MySQL nécessite une journalisation binaire au niveau des lignes.

Pour lire les modifications en cours depuis la base de données source, AWS DMS utilise des actions d'API spécifiques au moteur pour lire les modifications dans les journaux de transactions du moteur source. Voici quelques exemples de la façon dont AWS DMS cela fonctionne :

  • Pour Oracle, AWS DMS utilise l' LogMiner API Oracle ou l'API du lecteur binaire (API bfile) pour lire les modifications en cours. AWS DMS lit les modifications en cours depuis les journaux de redo en ligne ou archive les modifications en fonction du numéro de modification du système (SCN).

  • Pour Microsoft SQL Server, AWS DMS utilise MS-Replication ou MS-CDC pour écrire des informations dans le journal des transactions SQL Server. Il utilise ensuite la fonction fn_dblog() ou fn_dump_dblog() dans SQL Server pour lire les modifications dans le journal des transactions en fonction du LSN (numéro de séquence de journal).

  • Pour MySQL, AWS DMS lit les modifications depuis les journaux binaires basés sur des lignes (binlogs) et migre ces modifications vers la cible.

  • Pour PostgreSQL AWS DMS , configure des emplacements de réplication logiques et utilise le plugin test_decoding pour lire les modifications depuis la source et les migrer vers la cible.

  • Pour Amazon RDS en tant que source, nous vous recommandons de vérifier que les sauvegardes sont activées pour configurer la CDC. Nous vous recommandons également de vous assurer que la base de données source est configurée pour conserver les journaux de modification pendant une durée suffisante (24 heures suffisent généralement). Pour obtenir les paramètres spécifiques à chaque point de terminaison, consultez :

Il existe deux types de tâches de réplication continue :

  • Chargement complet + CDC : la tâche migre les données existantes, puis met à jour la base de données cible en fonction des modifications apportées à la base de données source.

  • CDC uniquement : la tâche migre les modifications continues une fois que les données sont sur la base de données cible.

Exécution de la réplication à partir d'un point de départ CDC

Vous pouvez démarrer une tâche de réplication AWS DMS en cours (capture des données de modification uniquement) à partir de plusieurs points. Tel est le cas des éléments suivants :

  • À partir d'une heure de début CDC personnalisée : vous pouvez utiliser le AWS Management Console ou AWS CLI pour AWS DMS fournir un horodatage où vous souhaitez que la réplication commence. AWS DMS lance ensuite une tâche de réplication en cours à partir de cette heure de début CDC personnalisée. AWS DMS convertit l'horodatage donné (en UTC) en un point de départ natif, tel qu'un LSN pour SQL Server ou un SCN pour Oracle. AWS DMS utilise des méthodes spécifiques au moteur pour déterminer par où commencer la tâche de migration en fonction du flux de modifications du moteur source.

    Note

    Ce n’est qu’en définissant l’attribut de connexion StartFromContext sur l’horodatage requis que DB2, en tant que source, propose une heure de début de CDC personnalisée.

    PostgreSQL comme source ne prend pas en charge une heure de début CDC personnalisée. Cela est dû au fait que le moteur de base de données PostgreSQL n'a aucun moyen de faire correspondre un horodatage à un LSN ou un SCN, à la différence d'Oracle et SQL Server.

  • À partir d’un point de départ natif de CDC : vous pouvez également démarrer à partir d’un point natif dans le journal des transactions du moteur source. Dans certains cas, vous pouvez préférer cette approche car un horodatage peut indiquer plusieurs points natifs dans le journal des transactions. AWS DMS prend en charge cette fonctionnalité pour les points de terminaison sources suivants :

    • SQL Server

    • PostgreSQL

    • Oracle

    • MySQL

    • MariaDB

Lorsque la tâche est créée, AWS DMS marque le point de départ du CDC et elle ne peut pas être modifiée. Pour utiliser un point de départ de CDC différent, créez une nouvelle tâche.

Définition d'un point de départ natif CDC

Un point de départ natif CDC est un point dans le journal du moteur de base de données qui définit un moment auquel vous pouvez commencer la capture des données modifiées (CDC). À titre d’exemple, supposons qu’un vidage des données en bloc a déjà été appliqué à la cible. Vous pouvez rechercher le point de départ natif de la tâche de réplication continue uniquement. Pour éviter toute incohérence dans les données, choisissez avec soin le point de départ de la tâche de réplication uniquement. DMS capture les transactions qui ont débuté après le point de départ de CDC choisi.

Voici des exemples montrant comment trouver le point de départ natif CDC à partir de moteurs sources pris en charge :

SQL Server

Dans SQL Server, un LSN (numéro de séquence de journal) comporte trois parties :

  • Numéro de séquence VLF (fichier journal virtuel)

  • Décalage de départ d'un bloc de journaux

  • Numéro de l'emplacement

Voici un exemple de LSN : 00000014:00000061:0001

Pour obtenir le point de départ d'une tâche de migration SQL Server en fonction de vos paramètres de sauvegarde du journal des transactions, utilisez la fonction fn_dblog() ou fn_dump_dblog() dans SQL Server.

Pour utiliser le point de départ natif de CDC avec SQL Server, créez une publication sur n’importe quelle table participant à la réplication continue. AWS DMS crée la publication automatiquement lorsque vous utilisez la CDC sans utiliser de point de départ natif de CDC.

PostgreSQL

Vous utilisez un point de contrôle de récupération CDC pour votre base de données source PostgreSQL. Cette valeur de point de contrôle est générée en différents points pendant l’exécution d'une tâche de réplication continue pour votre base de données source (la tâche parent). Pour plus d’informations sur les points de contrôle en général, consultez Utilisation d'un point de contrôle comme point de départ CDC.

Pour identifier le point de contrôle à utiliser comme point de départ natif, utilisez la pg_replication_slots vue de votre base de données ou les informations générales de votre tâche parente figurant dans le AWS Management Console

Pour trouver les détails de la présentation de votre tâche parent sur la console
  1. Connectez-vous à la AWS DMS console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/dms/v2/.

    Si vous êtes connecté en tant qu’utilisateur IAM, assurez-vous d’avoir les autorisations appropriées pour accéder à AWS DMS. Pour plus d'informations sur les autorisations requises, consultez Autorisations IAM nécessaires pour utiliser AWS DMS.

  2. Dans le volet de navigation de la console, choisissez, Tâches de migration de base de données.

  3. Choisissez votre tâche parent dans la liste de la page Tâches de migration de base de données. Vous ouvrez ainsi la page de la tâche parent et affichez les détails de la présentation.

  4. Trouvez la valeur du point de contrôle sous Capture de données modifiées (CDC), Position de départ de la capture de données modifiées (CDC) et Point de contrôle de récupération de la capture des données modifiées (CDC).

    La valeur qui apparaît est similaire celle ci-dessous.

    checkpoint:V1#1#000004AF/B00000D0#0#0#*#0#0

    Ici, le composant 4AF/B00000D0 est ce dont vous avez besoin pour spécifier ce point de départ CDC natif. Définissez le paramètre CdcStartPosition de l’API DMS sur cette valeur lorsque vous créez la tâche CDC pour commencer la réplication à ce point de départ pour votre source PostgreSQL. Pour plus d'informations sur l'utilisation AWS CLI de la tâche CDC pour créer cette tâche CDC, consultezActivation du CDC avec une instance de base de données PostgreSQL AWS gérée avec AWS DMS.

Oracle

Un numéro de modification du système (SCN) est un horodatage interne logique utilisé par les bases de données Oracle. SCNs événements de commande qui se produisent dans la base de données, nécessaires pour satisfaire aux propriétés ACID d'une transaction. Les bases SCNs de données Oracle marquent l'emplacement où toutes les modifications ont été écrites sur le disque afin qu'aucune action de restauration n'applique les modifications déjà écrites. Oracle l'utilise également SCNs pour marquer le point où il n'existe aucune restauration pour un ensemble de données afin que la restauration puisse s'arrêter.

Pour obtenir le SCN actuel dans une base de données Oracle, exécutez la commande suivante.

SELECT CURRENT_SCN FROM V$DATABASE

Si vous utilisez le SCN ou l’horodatage pour démarrer une tâche de CDC, les résultats des transactions ouvertes sont manquants et vous ne parvenez pas à les migrer. Les transactions ouvertes sont des transactions qui ont été démarrées avant la position de départ de la tâche et validées après la position de départ de la tâche. Vous pouvez identifier le SCN et l’horodatage pour démarrer une tâche de CDC à un point qui inclut toutes les transactions ouvertes. Pour plus d’informations, consultez Transactions dans la documentation d’Oracle en ligne. Avec la version 3.5.1 et supérieure, AWS DMS prend en charge les transactions ouvertes pour une tâche uniquement CDC en utilisant le paramètre du point de openTransactionWindow terminaison si vous utilisez le SCN ou l'horodatage pour démarrer la tâche.

Lorsque vous utilisez ce openTransactionWindow paramètre, vous devez fournir la fenêtre, en minutes, pour gérer les transactions ouvertes. AWS DMS déplace la position de capture et trouve la nouvelle position pour démarrer la capture des données. AWS DMS utilise la nouvelle position de départ pour scanner toutes les transactions ouvertes à partir des journaux de redo Oracle requis ou des journaux de redo archivés.

MySQL

Avant la version MySQL 5.6.3, le LSN pour MySQL était un entier non signé de 4 octets. Dans la version MySQL 5.6.3, lorsque la limite de taille du fichier journal redo est passée de 4 Go à 512 Go, le LSN est devenu un entier non signé à 8 octets. L'augmentation indique qu'il était nécessaire d'augmenter le nombre d'octets pour stocker des informations supplémentaires sur la taille. Les applications reposant sur MySQL 5.6.3 ou versions ultérieures et qui utilisent les LSN doivent utiliser des variables de 64 bits plutôt que 32 bits pour stocker et comparer les valeurs LSN. Pour plus d'informations sur MySQL LSNs, consultez la documentation MySQL.

Pour obtenir le LSN actuel dans une base de données MySQL, exécutez la commande suivante.

mysql> show master status;

La requête renvoie le nom d'un fichier binlog, la position, ainsi que plusieurs autres valeurs. Le point de départ natif CDC est une combinaison du nom du fichier binlog et de la position, par exemple mysql-bin-changelog.000024:373. Dans cet exemple, mysql-bin-changelog.000024 il s'agit du nom du fichier binlogs et 373 de la position où AWS DMS doit commencer à capturer les modifications.

Utilisation d'un point de contrôle comme point de départ CDC

Une tâche de réplication en cours migre les modifications et met en AWS DMS cache les informations de point de contrôle spécifiques AWS DMS de temps à autre. Le point de contrôle créé par AWS DMS contient des informations qui permettent au moteur de réplication de connaître le point de récupération pour le flux des modifications. Vous pouvez utiliser le point de contrôle pour revenir dans la chronologie des modifications et récupérer une tâche de migration ayant échoué. Vous pouvez également utiliser un point de contrôle pour démarrer une autre tâche de réplication continue pour une autre cible à tout moment.

Vous pouvez obtenir les informations de point de contrôle de l’une des trois manières suivantes :

  • Exécutez l’opération d’API DescribeReplicationTasks et consultez les résultats. Vous pouvez filtrer les informations par tâche et rechercher le point de contrôle. Vous pouvez récupérer le dernier point de contrôle lorsque la tâche est arrêtée ou en échec. Ces informations sont perdues si la tâche est supprimée.

  • Affichez la table de métadonnées nommée awsdms_txn_state sur l'instance cible. Vous pouvez interroger la table pour obtenir les informations de point de contrôle. Pour créer la table de métadonnées, définissez le paramètre TaskRecoveryTableEnabled sur Yes lorsque vous créez une tâche. Ce paramètre entraîne AWS DMS l'écriture continue des informations de point de contrôle dans la table de métadonnées cible. Ces informations sont perdues si une tâche est supprimée.

    Voici un exemple de point de contrôle dans la table de métadonnées : checkpoint:V1#34#00000132/0F000E48#0#0#*#0#121

  • Dans le volet de navigation, choisissez Tâches de migration de base de données, puis choisissez votre tâche parent dans la liste qui apparaît sur la page Tâches de migration de base de données. La page de votre tâche parent s’ouvre avec les détails de présentation. Trouvez la valeur du point de contrôle sous Capture de données modifiées (CDC), Position de départ de la capture de données modifiées (CDC) et Point de contrôle de récupération de la capture des données modifiées (CDC). La valeur de point de contrôle qui apparaît est similaire à ce qui suit :

    checkpoint:V1#1#000004AF/B00000D0#0#0#*#0#0

Arrêt d'une tâche à un point de validation ou de serveur

Avec l'introduction des points de départ natifs du CDC, AWS DMS vous pouvez également arrêter une tâche aux points suivants :

  • Heure de validation sur la source

  • Heure du serveur sur l'instance de réplication

Vous pouvez modifier une tâche et définir une heure au format UTC pour arrêter au moment souhaité. La tâche s'arrête automatiquement en fonction de l'heure de validation ou du serveur que vous définissez. Par ailleurs, si vous souhaitez arrêter la tâche de migration à une heure précise au moment de la création de la tâche, vous pouvez définir une heure d'arrêt lorsque vous créez la tâche.

Note

L'initialisation de toutes les ressources peut prendre jusqu'à 40 minutes la première fois que vous lancez une nouvelle réplication AWS DMS sans serveur. Notez que l’option server_time n’est applicable qu’une fois l’initialisation des ressources terminée.

Effectuer une réplication bidirectionnelle

Vous pouvez utiliser AWS DMS des tâches pour effectuer une réplication bidirectionnelle entre deux systèmes. Dans la réplication bidirectionnelle, vous répliquez des données de la même table (ou d’un ensemble de tables) entre deux systèmes dans les deux sens.

Par exemple, vous pouvez copier une table EMPLOYE de la base de données A vers la base de données B et répliquer les modifications apportées à la table de la base de données A vers la base de données B. Vous pouvez également répliquer les modifications apportées à la table EMPLOYE de la base de données B vers A. Ainsi, vous effectuez une réplication bidirectionnelle.

Note

AWS DMS la réplication bidirectionnelle n'est pas conçue comme une solution multimaître complète incluant un nœud principal, la résolution de conflits, etc.

Utilisez la réplication bidirectionnelle pour des cas dans lesquels les données sur différents nœuds sont séparées au niveau opérationnel. En d'autres termes, supposons qu’un élément de données soit modifié par une application fonctionnant sur le nœud A, et que ce dernier effectue une réplication bidirectionnelle avec le nœud B. Cet élément de données sur le nœud A n'est jamais modifié par une application fonctionnant sur le nœud B.

AWS DMS prend en charge la réplication bidirectionnelle sur les moteurs de base de données suivants :

  • Oracle

  • SQL Server

  • MySQL

  • PostgreSQL

  • Amazon Aurora MySQL-Compatible Edition

  • Aurora PostgreSQL-Compatible Edition

Création de tâches de réplication bidirectionnelle

Pour activer la réplication AWS DMS bidirectionnelle, configurez les points de terminaison source et cible pour les deux bases de données (A et B). Par exemple, configurez un point de terminaison source pour la base de données A, un point de terminaison source pour la base de données B, un point de terminaison cible pour la base de données A et un point de terminaison cible pour la base de données B.

Ensuite, créez deux tâches : une tâche pour la source A pour déplacer les données vers la cible B, et une autre tâche pour la source B pour déplacer les données vers la cible A. Assurez-vous également que chaque tâche est configurée pour empêcher les boucles. Vous pourrez ainsi empêcher l'application de modifications identiques aux cibles des deux tâches, ce qui corrompt les données d'au moins une d'entre elles. Pour de plus amples informations, veuillez consulter Empêcher les boucles.

Pour l'approche la plus simple, commencez par des jeux de données identiques sur les bases de données A et B. Ensuite, créez deux tâches CDC uniquement, une tâche pour répliquer les données de A vers B et une autre tâche pour répliquer les données de B vers A.

AWS DMS Pour instancier un nouvel ensemble de données (base de données) sur le nœud B à partir du nœud A, procédez comme suit :

  1. Utilisez une charge complète et une tâche CDC pour déplacer les données de la base de données A vers B. Assurez-vous qu'aucune application ne modifie les données de la base de données B pendant ce temps.

  2. Lorsque la charge complète est terminée et avant que les applications ne soient autorisées à modifier les données de la base de données B, notez l'heure ou la position de départ de la CDC de la base de données B. Pour obtenir des instructions, veuillez consulter Exécution de la réplication à partir d'un point de départ CDC.

  3. Créez une tâche CDC uniquement qui déplace les données de la base de données B vers A à l'aide de cette heure de début ou de cette position de départ CDC.

Note

Une seule tâche dans une paire bidirectionnelle peut être totalement chargée et CDC.

Empêcher les boucles

Pour empêcher le bouclage, supposons que, dans une tâche, T1 AWS DMS lise les journaux des modifications de la base de données source A et applique les modifications à la base de données cible B.

Ensuite, une deuxième tâche, T2, lit les journaux des modifications à partir de la base de données source B et les applique à la base de données cible A. Avant que T2 ne fasse cela, DMS doit s’assurer que les modifications apportées à la base de données cible B à partir de la base de données source A ne sont pas apportées à la base de données source A. En d’autres termes, DMS doit s’assurer que ces modifications ne sont pas reprises (en boucle) dans la base de données cible A. Dans le cas contraire, les données de la base de données A peuvent être corrompues.

Pour éviter les boucles de modifications, ajoutez les paramètres de tâche suivants à chaque tâche de réplication bidirectionnelle. Ainsi, vous vous assurez que la corruption des données pour cause de boucles ne se produit dans aucun sens.

{ . . . "LoopbackPreventionSettings": { "EnableLoopbackPrevention": Boolean, "SourceSchema": String, "TargetSchema": String }, . . . }

Les paramètres de tâche LoopbackPreventionSettings déterminent si une transaction est nouvelle ou reprise de la tâche de réplication opposée. Lorsqu'une transaction est appliquée par AWS DMS à une base de données cible, elle met à jour une table DMS (awsdms_loopback_prevention) avec une indication de la modification. Avant d'appliquer chaque transaction à une cible, DMS ignore toute transaction qui inclut une référence à cette table awsdms_loopback_prevention. Par conséquent, il n'applique pas la modification.

Inclure ces paramètres de tâche avec chaque tâche de réplication dans une paire bidirectionnelle. Ces paramètres permettent la prévention des boucles. Ils spécifient également le schéma de chaque base de données source et cible dans la tâche qui inclut la table awsdms_loopback_prevention pour chaque point de terminaison.

Pour permettre à chaque tâche d'identifier une reprise et de le supprimer, définissez EnableLoopbackPrevention sur true. Pour spécifier un schéma dans la source qui inclut awsdms_loopback_prevention, définissez SourceSchema sur le nom de ce schéma dans la base de données source. Pour spécifier un schéma sur la cible qui inclut la même table, définissez TargetSchema sur le nom de ce schéma dans la base de données cible.

Dans l'exemple suivant, les paramètres TargetSchema et SourceSchema pour une tâche de réplication T1 et sa tâche de réplication opposée T2 sont spécifiés avec des paramètres opposés.

Les paramètres de la tâche T1 sont les suivants.

{ . . . "LoopbackPreventionSettings": { "EnableLoopbackPrevention": true, "SourceSchema": "LOOP-DATA", "TargetSchema": "loop-data" }, . . . }

Les paramètres de la tâche opposée T2 sont les suivants.

{ . . . "LoopbackPreventionSettings": { "EnableLoopbackPrevention": true, "SourceSchema": "loop-data", "TargetSchema": "LOOP-DATA" }, . . . }
Note

Lorsque vous utilisez le AWS CLI, utilisez uniquement les modify-replication-task commandes create-replication-task ou pour configurer vos LoopbackPreventionSettings tâches de réplication bidirectionnelle.

Limites de la réplication bidirectionnelle

La réplication bidirectionnelle pour AWS DMS présente les limites suivantes :

  • La prévention des bouclages permet de suivre uniquement les instructions du langage de manipulation des données (DML). AWS DMS ne prend pas en charge la prévention du bouclage du langage de définition des données (DDL). Pour ce faire, configurez l'une des tâches dans une paire bidirectionnelle pour filtrer les instructions DDL.

  • Les tâches qui utilisent la prévention de boucles ne prennent pas en charge la validation des modifications dans des lots. Pour configurer une tâche avec la prévention de boucles, assurez-vous de définir BatchApplyEnabled sur false.

  • La réplication bidirectionnelle DMS n'inclut pas la détection ou la résolution des conflits. Pour détecter des incohérences de données, utilisez la validation des données sur les deux tâches.

ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.