Comment effectuer une migration vers une instance de base de données MySQL Amazon RDS ou Aurora à l'aide d'AWS DMS ?

Date de la dernière mise à jour : 30/04/2020

Je dois migrer une base de données et je cherche une méthode à la fois simple et qui permet de réduire au minimum le temps d'arrêt. Comment effectuer une migration vers une instance de base de données MySQL Amazon Relational Database Service (Amazon RDS) ou Amazon Aurora à l'aide d'AWS Database Migration Service (AWS DMS) ?

Description courte

Remarque : si vous effectuez une migration homogène, utilisez chaque fois que cela est possible les outils natifs de votre moteur (comme les fonctionnalités de vidage ou de réplication MySQL).

Pour effectuer une migration vers une instance de base de données MySQL Amazon RDS ou Aurora provisionnée à l'aide d'AWS DMS :

  • créez une instance de réplication ;
  • créez des points de terminaison cible et source ;
  • actualisez les schémas de point de terminaison source ;
  • créez une tâche de migration ;
  • surveillez votre tâche de migration.

Solution

Remarque : AWS DMS ne crée une table avec une clé primaire sur la cible avant la migration des données de la table que si cela est nécessaire. Pour générer un schéma cible complet, utilisez le Schema Conversion Tool d'AWS. Pour en savoir plus, rendez-vous sur la page Conversion de schéma.

(Facultatif) Activer la journalisation avec Amazon CloudWatch

Amazon CloudWatch Logs peut vous alerter en cas de problèmes potentiels lors de la migration. Pour en savoir plus, rendez-vous sur la page Surveillance des tâches de réplication à l'aide d'Amazon CloudWatch.

Créer une instance de réplication

  1. Ouvrez la console d'AWS DMS. Sélectionnez ensuite « Replication instances » (Instances de réplication) dans le volet de navigation.
  2. Sélectionnez « Create replication instance » (Créer une instance de réplication).
  3. Saisissez le nom, la description, la classe d'instance, Amazon Virtual Private Cloud (Amazon VPC) et la préférence Multi-AZ de votre réplication.
    Remarque : veillez à choisir une classe d'instance suffisante pour votre charge de travail de migration. Si l'instance n'est pas suffisante pour votre charge de travail, vous pouvez modifier l'instance de réplication ultérieurement.
  4. Dans la section Advanced (Avancé), sélectionnez les groupes de sécurité de votre VPC ou choisissez l'option par défaut.
  5. Sélectionnez « Create replication instance » (Créer une instance de réplication).

Créer des points de terminaison cible et source

  1. Ouvrez la console d'AWS DMS, puis sélectionnez Endpoints (Points de terminaison) dans le volet de navigation.
  2. Sélectionnez Create endpoint (Créer un point de terminaison) pour créer les bases de données source et cible.
  3. Au moment de définir le paramètre Endpoint type (Type de point de terminaison), sélectionnez Source.
  4. Entrez les informations spécifiques au moteur du point de terminaison, telles que le nom du serveur, le port, le mode SSL ou le nom du compartiment Amazon Simple Storage Service (Amazon S3), si vous utilisez Amazon S3 comme source.
  5. Sélectionnez Run test (Exécuter le test).
  6. Une fois le test terminé, sélectionnez Save (Enregistrer).
  7. Répétez les étapes 3 à 6, mais pour le paramètre Endpoint type (Type de point de terminaison), sélectionnez Target (Cible).
    Remarque : vous devez effectuer cette étape pour la cible et la source.

Actualiser les schémas de point de terminaison source

  1. Ouvrez la console d'AWS DMS, puis sélectionnez Endpoints (Points de terminaison) dans le volet de navigation.
  2. Sélectionnez le point de terminaison source, puis Refresh schemas (Actualiser les schémas).
  3. Sélectionnez Refresh schemas (Actualiser les schémas).
    Remarque : vous devez actualiser la source afin que les schémas sources apparaissent dans les mappages de table lorsque vous créez une tâche AWS DMS.

Créer une tâche de migration

  1. Ouvrez la console d'AWS DMS, puis sélectionnez Database migration tasks (Tâches de migration de base de données) dans le volet de navigation.
  2. Sélectionnez Create task (Créer une tâche).
  3. Précisez les informations suivantes : Task identifier (Identifiant de tâche), Replication instance (Instance de réplication), Source database endpoint (Point de terminaison de base de données source), Target database endpoint (Point de terminaison de base de données cible) et Migration type (Type de migration). Concernant cette dernière, choisissez l'une des options suivantes :
    Migrate existing data only (Migrer les données existantes uniquement) : utilisez ce type de migration pour les migrations ponctuelles.
    Migrate existing data and replicate ongoing changes (Migrer les données existantes et répliquer les modifications en cours) : utilisez ce type de migration pour migrer des bases de données volumineuses vers le cloud AWS avec un temps d'arrêt minimal.
    Migrate ongoing replication changes (Migrer les modifications de réplication continue) : utilisez ce type de migration lorsque vous avez déjà migré vos données et que vous souhaitez synchroniser la base de données source avec la base de données MySQL cible hébergée sur le cloud AWS.
  4. Dans la section Task Settings (Paramètres de tâche), modifiez la tâche si nécessaire. 
  5. Dans la section Table mappings (Mappages de table), sélectionnez Guided UI (Interface utilisateur guidée).
  6. Sélectionnez Add new selection rule (Ajouter une nouvelle règle de sélection) et indiquez le nom de votre table et votre schéma.
    Remarque : pour modifier ou transformer le schéma source, la table ou le nom de colonne de tout ou partie des objets sélectionnés, développez la section Transformation rules Règles de transformation. Sélectionnez Add new transformation rule (Ajouter une règle de transformation). Sélectionnez ensuite Target (Cible), Schema name (Nom du schéma) et Action.
  7. Sélectionnez Create task (Créer une tâche).

Remarque : si vous avez des colonnes LOB (de grands objets), il est recommandé d'utiliser le Limited LOB Mode (Mode LOB limité). Pour en savoir plus, rendez-vous sur la page Définition de la prise en charge LOB pour les bases de données source dans une tâche AWS DMS.

Surveiller votre tâche de migration

  1. La vue Task Monitoring (Surveillance des tâches) permet de surveiller les tâches de migration. Vous pouvez voir quelles sont les tables pour lesquelles la migration est terminée et sont celles dont la migration est toujours en cours. Faites attention aux types de message suivants :
    I : indique un message d'information
    W : indique des avertissements
    E : indique que des erreurs se sont produites lors de la migration de la base de données
  2. Connectez-vous aux instances source et cible via le terminal afin de vérifier que la migration des bases de données a bien été effectuée.

Migration d'Oracle

Lorsque vous utilisez Oracle comme base de données source, les tables sont migrées vers l'utilisateur du point de terminaison cible spécifié. Vous pouvez modifier le schéma d'une cible Oracle à l'aide des règles de transformation. Pour en savoir plus, rendez-vous sur la page Modification de l'utilisateur et du schéma pour une cible Oracle.

Migration de MySQL

Lorsque vous devez migrer des données de MySQL vers Amazon Aurora, utilisez chaque fois que cela est possible les outils natifs du moteur. Pendant la migration, les schémas et les tables sont migrés vers le même nom sur la cible. Si vous souhaitez migrer des tables vers un autre schéma sur la cible, créez une règle de mappage pour indiquer le nouveau schéma sur la base de données cible :

{
  "rules": [{
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "test",
        "table-name": "%"
      },
      "rule-action": "include"
    }, {
      "rule-type": "transformation",
      "rule-id": "2",
      "rule-name": "2",
      "rule-action": "rename",
      "rule-target": "schema",
      "object-locator": {
        "schema-name": "test"
      },
      "value": "newtest"
    }
  ]
}

Consultez les journaux afin de vérifier qu'il n'y a pas d'erreurs.

Surveillez la latence et comparez la quantité de données sur les bases source et cible avant de basculer vers la nouvelle base de données cible. Pour en savoir plus, rendez-vous sur la page Résolution des problèmes liés aux tâches de migration.