Quels objets puis-je migrer à l'aide d'une tâche AWS DMS ?

Dernière mise à jour : 25/07/2022

J'ai une tâche AWS Database Migration Service (AWS DMS) qui ne migre pas tous les objets du schéma de la base de données. Quels objets une tâche AWS DMS migre-t-elle et comment puis-je migrer les objets restants ?

Brève description

Si votre tâche AWS DMS ne migre pas un objet, c'est peut-être parce que les tâches AWS DMS ne migrent pas ce type d'objet. AWS DMS crée un certain nombre d'objets tels que des tables et des clés primaires, mais il ne crée pas les objets qui ne sont pas nécessaires pour migrer les données depuis la source. Parmi les exemples d'objets qu'AWS DMS ne crée pas, citons les index secondaires, les valeurs par défaut des données et les contraintes de clé non primaire

Pour plus d'informations sur les objets créés par AWS DMS, consultez Dépannage des tâches de migration dans AWS Database Migration Service.

Pour migrer les objets restants qui ne sont pas migrés par AWS DMS, utilisez l'une des méthodes suivantes :

  • Pour une migration homogène (entre deux bases de données du même type de moteur), migrez le schéma en utilisant les outils natifs de votre moteur pour exporter et importer le schéma lui-même, sans aucune donnée.
  • Pour une migration hétérogène (entre deux bases de données qui utilisent des types de moteurs différents), utilisez l'outil de conversion des schémas AWS (AWS SCT) pour générer un schéma cible complet.

Solution

Vérifier si un objet est migré par une tâche AWS DMS

Tout d'abord, suivez ces directives pour vérifier si un objet est migré par une tâche AWS DMS :

  • Une tâche AWS DMS crée la table sur la cible, ainsi que la contrainte de clé primaire et l'index.
  • S'il n'existe aucune clé primaire, la tâche crée la clé unique (si elle existe dans la table source).
  • Si des contraintes NOT NULL existent dans la table source, la tâche AWS DMS crée les contraintes NOT NULL dans la cible. Cela n'inclut pas les colonnes d'objets binaires volumineux (LOB). Si AWS DMS crée les tables cibles, il définit par défaut les colonnes LOB comme étant nulles. Pour plus d'informations, consultez Migration des objets binaires volumineux (LOB).
  • Si la table source comporte une colonne d'auto-incrémentation, la propriété auto-incrémentation n'est pas migrée.
  • Les autres propriétés spécifiques aux tables, telles que les contraintes de clé externes, les vérifications, les valeurs par défaut des données et les commentaires, ne sont pas répliquées par la tâche AWS DMS.
  • Les objets de base de données tels que les index secondaires, les affichages, les procédures, les fonctions, les packages et les déclencheurs ne sont pas migrés par la tâche AWS DMS. Migrez ces objets séparément.

Migrer des objets en utilisant les outils natifs de votre moteur (migration homogène)

Pour une migration homogène des bases de données, utilisez vos outils natifs pour exporter les métadonnées du schéma, sans les données. Ce vidage de métadonnées uniquement est ensuite importé dans la base de données cible pour créer les objets de base de données, sans aucune donnée. Ensuite, exécutez la tâche AWS DMS avec le paramètre de tâche TargetTablePrepMode défini sur TRUNCATE_BEFORE_LOAD. Cela signifie que la tâche ne supprime pas et ne recrée pas les tables sur la cible.

Oracle

Pour migrer des objets avec des bases de données Oracle, utilisez l'utilitaire de pompe à données d'exportation (expdp) pour effectuer un vidage des métadonnées uniquement. À l'aide du paramètre CONTENT=METADATA_ONLY, l'utilitaire de pompes de données décharge uniquement les définitions d'objets de base de données. L'utilitaire ne décharge aucune donnée de ligne de table.

1.    Pour effectuer un vidage des métadonnées uniquement, créez un fichier de paramètres pour exporter le schéma :

$> cat export_sample_user.par 
userid=DMS_USER/password@SOURCE_DB
directory=DATA_PUMP_DIR
logfile=export_dms_sample_user_metadata.log
dumpfile=export_dms_sample_user_metadata_%U.dmp
schemas=DMS_SAMPLE
CONTENT=METADATA_ONLY

2. Exécutez l'exportation à l'aide de l'utilitaire expdp :

expdp parfile=export_sample_user.par

3.    Une fois les fichiers de vidage créés dans le référentiel DATA_PUMP_DIR de la base de données source, copiez-les dans le référentiel DATA_PUMP_DIR de la base de données Oracle cible. Pour créer les objets sur la base de données Oracle cible, exécutez l'utilitaire de pompe à données d'importation (impdp) pour importer les métadonnées :

impdp admin@TARGET_DB directory=DATA_PUMP_DIR logfile=import.log dumpfile=export_dms_sample_user_metadata_%U.dmp

SQL Server

Pour migrer des objets en utilisant SQL Server, générez un script SQL pour le schéma de la base de données :

  1. Connectez-vous à la base de données source en utilisant SQL Server Management Studio (SSMS).
  2. Effectuez un clic droit sur la base de données pour laquelle vous souhaitez générer des scripts, choisissez Tâches, puis Générer les scripts.
  3. Sous Sélectionner des objets de base de données spécifiques, sélectionnez les tables, les affichages et tout autre objet que vous souhaitez utiliser, puis cliquez sur Suivant.
  4. Cliquez sur le bouton Avancé, puis sélectionnez les types de données que vous souhaitez inscrire dans un script.
  5. Si vous souhaitez obtenir le SQL pour les index secondaires, définissez Index de script sur true. Par défaut, les index de script sont définis sur false.
  6. Choisissez la manière dont vous souhaitez enregistrer les scripts. Par exemple : créer un fichier SQL sur le disque, copier le SQL dans une nouvelle fenêtre de requête ou copier les scripts dans le presse-papiers.
  7. Sélectionnez Suivant.
  8. Choisissez à nouveauSuivant, puis Terminer.

Pour créer des objets dans la base de données cible, exécutez le script SQL généré une fois ces étapes terminées.

MySQL

Pour migrer des objets avec MySQL, utilisez l'utilitaire mysqldump afin de générer un fichier de vidage contenant uniquement les métadonnées du schéma. L'option --no-data indique à mysqldump de ne pas vider les données de la table, de sorte que les résultats du fichier de vidage contiennent uniquement des instructions pour créer les tables. Pour un vidage des définitions uniquement, ajoutez les options --routines et --events pour inclure également les définitions de routine et d'événement stockées.

Exemple :

mysqldump --no-data --routines --events -h SOURCE_DB_SERVER_NAME -u DMS_USER -p SOURCE_DB > path_to_dump_file.sql

Pour créer les objets dans la base de données cible, exécutez le script SQL généré après avoir exécuté la commande précédente.

PostgreSQL

Pour migrer des objets avec les bases de données PostgreSQL, utilisez l'utilitaire pg_dump afin de générer un fichier de vidage contenant uniquement les métadonnées du schéma. L'option -s ou --schema-only vide les définitions d'objet (schéma) et non les données.

Exemple :

pg_dump --host SOURCE_DB_SERVER_NAME --port 5432 --username DMS_USER --schema-only --verbose SOURCE_DB > path_to_dump_file.sql

Pour créer les objets dans la base de données cible, exécutez le script SQL généré après avoir exécuté la commande précédente.

Migrer les objets en utilisant l'outil de conversion des schémas AWS (AWS SCT)

Utilisez AWS SCT pour convertir et migrer vos schémas de base de données existants d'un moteur de base de données à un autre. Vous pouvez également utiliser AWS SCT pour copier un schéma de base de données sur site existant sur une instance de base de données Amazon Relational Database Service (Amazon RDS) exécutant le même moteur.

Pour convertir votre schéma de votre base de données, procédez comme suit :

  1. Créez des règles de migration dans AWS SCT.
  2. Convertissez votre schéma en utilisant AWS SCT.
  3. Enregistrez et appliquez votre schéma converti dans AWS SCT.

Pour plus d'informations, consultez Conversion des schémas de base de données à l'aide d'AWS SCT.


Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?