Quelles sont les meilleures pratiques pour la migration d'une base de données Oracle vers une base de données cible RDS pour PostgreSQL à l'aide d'AWS DMS ?

Dernière mise à jour : 31/08/2022

Je souhaite migrer les données d'une base de données source Oracle vers une base de données cible Amazon Relation Database Service (Amazon RDS) pour PostgreSQL. Quelles sont les meilleures pratiques à suivre lors de la migration de données d'Oracle vers PostgreSQL en utilisant AWS Database Migration Services (AWS DMS) ?

Solution

Meilleures pratiques pour la migration des bases de données Oracle vers les bases de données PostgreSQL

  • Configurez votre base de données source Oracle en utilisant les paramétrages préalables requises avant de commencer la migration de vos données.
  • Procédez à un test de la migration en utilisant les mêmes données de production sur tout autre environnement de base de données QA/DEV. En fonction des résultats du test, vous pouvez ensuite poursuivre la migration de la production. Veillez à utiliser la même configuration AWS DMS pour le test de migration et la migration de production.
  • Équipez vos instances AWS DMS d'une UC avec suffisamment de mémoire, de stockage et d'IOPS pour éviter les conflits de ressources pendant la migration. Pour plus d'informations, consultez Choisir la bonne instance de réplication AWS DMS pour votre migration, et Choisir la meilleure taille pour une instance de réplication. Pour plus d'informations sur les coûts de mise à niveau de votre instance, consultez la tarification d'AWS Database Migration Service. Équipez l'instance Amazon RDS cible dans les mêmes conditions.
  • Si votre base de données source contient de nombreuses tables, avec une charge de travail importante, répartissez les tables entre plusieurs tâches AWS DMS. Répartissez les tables en fonction de leur taille dans la source, du modèle de trafic des applications et de la présence de colonnes LOB. Si une table comporte de nombreuses colonnes LOB, avec un trafic d'écriture élevé sur la source, créez une tâche distincte pour cette table.
  • Utilisez la charge parallèle complète pour réduire le temps de migration pour les charges de travail lourdes. Pour plus d'informations, consultez la section Utilisation du chargement parallèle pour des tables, des vues et des collections spécifiques.
  • Pendant la migration, désactivez les sauvegardes et les journaux spécifiques à la base de données tels que bin, general et audit, ainsi que les journaux PG query sur la base de données cible. Réactivez-les pour résoudre tout problème.
  • Désactivez les déclencheurs, les procédures, les autres tâches cron et les planificateurs d'événements sur la base de données cible pendant la migration.
  • Évitez d'utiliser les concepts multi-AZ sur les bases de données RDS cibles pendant la migration.
  • Évitez d'appliquer tout autre trafic client externe à la base de données cible lors de la migration.
  • Ajoutez tous les index secondaires dans la base de données cible avant de démarrer la phase de capture des données modifiées (CDC) de la réplication.
  • Désactivez les clés étrangères sur la cible avant de procéder à la migration. Pour ce faire, utilisez le paramètre d'attribut de connexion supplémentaire cible (ECA) /point de terminaison. Pour plus d'informations, consultez Utilisation d'une base de données PostgreSQL comme base de données cible pour AWS Database Migration Service.
afterConnectScript=SET session_replication_role='replica'
  • Utilisez les paramètres LOB optimisés tels que des LOB limités ou en ligne pour la migration.
  • Testez votre charge de travail en utilisant la méthode d'application transactionnelle CDC par défaut avant d'utiliser la méthode d'application CDC par lots. Pour plus d'informations, consultez Comment utiliser la fonctionnalité d'application DMS par lots pour améliorer les performances de la réplication CDC ?
  • Augmentez les valeurs de executeTimeout (délai d'exécution) dans les paramètres du point de terminaison cible. Cette valeur définit le délai de l'instruction client pour une instance PostgreSQL. La valeur par défaut est de 60 secondes.
  • Si vous utilisez des séquences pour les colonnes d'ID, définissez des valeurs plus élevées pour la cible que pour la source. Assurez-vous que les valeurs cibles sont toujours supérieures à celles de votre source à la date de basculement de la migration. Cette approche évite la collision des ID de séquence après la migration.
  • Afin d'améliorer les performances durant la phase de pleine charge, utilisez des paramètres tels que :
    • MaxFullLoadSubTasks - La valeur par défaut est de 8 et la valeur maximale est de 49. Ce paramètre est utile. Cependant, il importe de vous assurer de disposer de suffisamment de ressources.
    • CommitRate - Utilisez ce paramètre pour indiquer le nombre maximal d'enregistrements transférables simultanément.
      • Pour le mode LOB complet dans la phase de pleine charge - N lignes de la source = N insertions+N mises à jour dans la cible = N événements, où CommitRate=N.
      • Pour le mode LOB limité pendant la phase de chargement complet, saisissez N lignes dans le fichier CSV, où CommitRate=N).
    • Pour les grands tableaux, augmentez la taille du fichier CSV. Cette action est régulée par MaxFileSize dans les paramètres du point de terminaison cible.

    Migrer une base de données Oracle vers une base de données PostgreSQL

    Remarque : Avant de poursuivre ces étapes, préparez votre base de données Oracle source comme décrit dans les paramétrages préalables.

    1.    Installez les pilotes SQL etOutil de conversion des schémas AWS (AWS SCT) sur votre ordinateur local.

    2.    Configurez votre source Oracle et vos bases de données cibles PostgreSQL.

    3.    Convertissez le schéma Oracle en PostgreSQL à l'aide d'AWS SCT.

    4.    Créez une instance de réplication AWS DMS.

    5.    Créez vos points de terminaison source et cible AWS DMS.

    6.    Créez, puis exécutez votre tâche AWS DMS.

    7.    Sous la section Mappages de tables, appliquez une règle de transformation. Ajoutez le paramètre rule-action, avec la valeur convert-lowercase. Par défaut, le moteur Oracle stocke tous les noms d'objets en majuscules. Toutefois, PostgreSQL stocke tous les noms d'objets en minuscules.

    8.    Créez une tâche DMS AWS à chargement complet et CDC pour répliquer vos données. Arrêtez la tâche lorsque la phase de chargement complet est terminée à l'aide de StopTaskCachedChangesNotApplied. Maintenant, créez des index secondaires.

    9.    Basculez à PostgreSQL.


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


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