Migrer Amazon RDS pour Oracle vers Amazon RDS pour Postgre SQL avec AWS SCT et AWS DMS en utilisant AWS CLI et AWS CloudFormation - Recommandations AWS

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.

Migrer Amazon RDS pour Oracle vers Amazon RDS pour Postgre SQL avec AWS SCT et AWS DMS en utilisant AWS CLI et AWS CloudFormation

Créée par Pinesh Singal () AWS

Environnement : PoC ou pilote

Source : Amazon RDS pour Oracle

Cible : Amazon RDS pour Postgrer SQL

Type R : Ré-architecte

Charge de travail : Oracle ; logiciel libre

Technologies : migration ; bases de données

AWSservices : Amazon AWS DMS RDS ; AWS SCT

Récapitulatif

Ce modèle montre comment migrer une instance de base de données Amazon Relational Database Service (AmazonRDS) pour Oracle de plusieurs téraoctets vers une SQL instance de base de données Amazon RDS pour Postgre à l'aide de l'interface de ligne de AWS commande (). AWS CLI Cette approche permet un temps d'arrêt minimal et ne nécessite pas de connexion à la console AWS de gestion.

Ce modèle permet d'éviter les configurations manuelles et les migrations individuelles en utilisant les consoles AWS Schema Conversion Tool (AWSSCT) et AWS Database Migration Service (AWSDMS). La solution met en place une configuration unique pour plusieurs bases de données et effectue les migrations en utilisant AWS SCT et AWS DMS sur le AWSCLI.

Le modèle est utilisé AWS SCT pour convertir des objets de schéma de base de données d'Amazon RDS pour Oracle vers Amazon RDS pour Postgre, SQL puis pour AWS DMS migrer les données. À l'aide de scripts Python AWSCLI, vous créez des AWS SCT objets et des AWS DMS tâches à l'aide d'un AWS CloudFormation modèle.

Conditions préalables et limitations

Prérequis

  • Un compte AWS actif.

  • Une instance de base de données Amazon RDS pour Oracle existante.

  • Une SQL instance de base de données Amazon RDS pour Postgre existante. 

  • Une EC2 instance Amazon ou une machine locale avec un système d'exploitation Windows ou Linux pour exécuter des scripts.

  • Compréhension des types de tâches de AWS DMS migration suivants :full-load,cdc,full-load-and-cdc.  Pour plus d'informations, consultez la section Création d'une tâche dans la AWS DMS documentation. 

  • AWSSCT, installé et configuré avec les pilotes Java Database Connectivity (JDBC) pour les moteurs de SQL base de données Oracle et Postgre. Pour plus d'informations, consultez la section Installation AWS SCT et installation des pilotes de base de données requis dans la AWS SCT documentation. 

  • Le AWSSchemaConversionToolBatch.jar fichier du AWS SCT dossier installé, copié dans votre répertoire de travail.

  • Le cli-sct-dms-cft.zip fichier (joint), téléchargé et extrait dans votre répertoire de travail.

Limites

  • Les exigences minimales pour votre instance de base de données Amazon RDS pour Oracle source sont les suivantes : 

    • Versions Oracle 12c (v12.1.0.2, v12.2.0.1), 18c (v18.0.0.0) et 19c (v19.0.0.0) pour les éditions Enterprise, Standard, Standard One et Standard Two.

    • Bien qu'Amazon RDS prenne en charge Oracle 18c (v18.0.0.0), cette version est sur le point de devenir obsolète car Oracle ne fournit plus de correctifs pour 18c après cette date. end-of-support Pour plus d'informations, consultez Oracle on Amazon RDS dans la RDS documentation Amazon.

    • Amazon RDS pour Oracle 11g n'est plus pris en charge.

  • Les exigences minimales pour votre SQL instance de base de données Amazon RDS pour Postgre cible sont les suivantes : 

    • Postgre SQL versions 9 (versions 9.5 et 9.6), 10.x, 11.x, 12.x et 13.x

Versions du produit

  • Instance de base de données Amazon RDS pour Oracle version 12.1.0.2 et versions ultérieures

  • Instance de base de données Amazon RDS pour SQL Postgre, versions 11.5 et ultérieures

  • AWSCLIversion 2 

  • La dernière version de AWS SCT

  • La dernière version de Python 3

Architecture

Pile technologique source

  • Amazon RDS pour Oracle

Pile technologique cible

  • Amazon RDS pour Postgrer SQL

Architecture source et cible

Le schéma suivant montre la migration d'une instance de base de données Amazon RDS pour Oracle vers une instance de base de SQL données Amazon RDS pour Postgre à l'aide AWS DMS de scripts Python.

Migration d'une instance RDS de base de données Oracle vers une instance RDS de SQL base de données Postgre à l'aide de AWS DMS Python.

Le schéma montre le flux de travail de migration suivant :

  1. Le script Python permet AWS SCT de se connecter aux instances de base de données source et cible.

  2. L'utilisateur AWS SCT commence par le script Python, convertit le code Oracle en code Postgre SQL et l'exécute sur l'instance de base de données cible.

  3. Le script Python crée des tâches de AWS DMS réplication pour les instances de base de données source et cible.

  4. L'utilisateur déploie des scripts Python pour démarrer les AWS DMS tâches, puis les arrête une fois la migration des données terminée.

Automatisation et mise à l'échelle

Vous pouvez automatiser cette migration en ajoutant des paramètres supplémentaires et des modifications liées à la sécurité pour plusieurs fonctionnalités dans un seul programme à votre script Python. 

Outils

  • AWSL'interface de ligne de commande (AWSCLI) est un outil open source qui vous permet d'interagir avec les AWS services par le biais de commandes dans votre interface de ligne de commande.

  • AWS CloudFormationvous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie, quels que soient les AWS comptes et les régions. Ce modèle convertit le fichier d'entrée .csv en fichier d'entrée .json à l'aide d'un script Python. Le fichier .json est utilisé dans AWS CLI les commandes pour créer une AWS CloudFormation pile qui crée plusieurs tâches de AWS DMS réplication avec Amazon Resource Names (ARNs), des types de migration, des paramètres de tâches et des mappages de tables.

  • AWSDatabase Migration Service (AWSDMS) vous aide à migrer des banques de données vers le AWS cloud ou entre des combinaisons de configurations cloud et sur site. Ce modèle est utilisé AWS DMS pour créer, démarrer et arrêter des tâches à l'aide d'un script Python exécuté sur la ligne de commande et de créer le AWS CloudFormation modèle.

  • AWSSchema Conversion Tool (AWSSCT) prend en charge les migrations de bases de données hétérogènes en convertissant automatiquement le schéma de base de données source et la majorité du code personnalisé dans un format compatible avec la base de données cible. Ce modèle nécessite que le AWSSchemaConversionToolBatch.jar fichier se trouve dans le AWS SCT répertoire installé.

Code

Le cli-sct-dms-cft.zip fichier (joint) contient le code source complet de ce modèle.

Épopées

TâcheDescriptionCompétences requises

Configurez AWS SCT pour exécuter à partir du AWSCLI.

1. Configurez les détails de configuration de l'environnement source et cible dans le database_migration.txt fichier en utilisant le format suivant :

#source_vendor,source_hostname,source_dbname,source_user,source_pwd,source_schema,source_port,source_sid,target_vendor,target_hostname,target_user,target_pwd,target_dbname,target_port ORACLE,myoracledb.cokmvis0v46q.us-east-1.rds.amazonaws.com,ORCL,orcl,orcl1234,orcl,1521,ORCL,POSTGRESQL,mypgdbinstance.cokmvis0v46q.us-east-1.rds.amazonaws.com,pguser,pgpassword,pgdb,5432

2. Modifiez les paramètres AWS SCT de configuration en fonction de vos besoins dans les fichiers suivants :project_settings.xml,Oracle_PG_Test_Batch.xml, etORACLE-orcl-to-POSTGRESQL.xml.

DBA

Exécutez le script Python run_aws_sct.py.

Exécutez le script run_aws_sct.py Python à l'aide de la commande suivante :

$ python run_aws_sct.py database_migration.txt

Le script Python convertit les objets de base de données d'Oracle en Postgre SQL et crée des SQL fichiers au format PostgreSQL. Le script crée également le fichier Database migration assessment report .pdf qui fournit des recommandations détaillées et des statistiques de conversion pour les objets de base de données.

DBA

Créez des objets dans Amazon RDS pour PostgreSQL.

  1. Modifiez manuellement les SQL fichiers générés par AWSSCT, si nécessaire.

  2. Exécutez les SQL fichiers et créez des objets dans votre SQL instance de base de données Amazon RDS pour Postgre.

DBA
TâcheDescriptionCompétences requises

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

Connectez-vous à la console AWS de gestion, ouvrez la AWS DMS console et créez une instance de réplication configurée en fonction de vos besoins.

Pour plus d'informations, consultez les sections Création d'une instance de réplication dans la AWS DMS documentation et Comment créer une instance de AWS DMS réplication dans la documentation AWS Support.

DBA

Créez le point de terminaison source.

Sur la AWS DMS console, choisissez Endpoints, puis créez un point de terminaison source pour la base de données Oracle en fonction de vos besoins. 

Remarque : L'attribut de connexion supplémentaire doit numberDataTypeScale comporter une -2 valeur.

Pour plus d'informations, consultez la section Création de points de terminaison source et cible dans la AWS DMS documentation.

 

DBA

Créez le point de terminaison cible.

Sur la AWS DMS console, choisissez Endpoints, puis créez un point de terminaison cible pour la SQL base de données Postgre en fonction de vos besoins.  

Pour plus d'informations, consultez la section Création de points de terminaison source et cible dans la AWS DMS documentation.

DevOps ingénieur

Configurez les détails de AWS DMS réplication à exécuter à partir du AWSCLI.

Configurez les points de terminaison AWS DMS source et cible ainsi que les détails de réplication dans le dms-arn-list.txt fichier contenant le point de terminaison sourceARN, le point de terminaison ARN cible et l'instance de réplication en ARN utilisant le format suivant :

#sourceARN,targetARN,repARN arn:aws:dms:us-east-1:123456789012:endpoint:EH7AINRUDZ5GOYIY6HVMXECMCQ arn:aws:dms:us-east-1:123456789012:endpoint:HHJVUV57N7O3CQF4PJZKGIOYY5 arn:aws:dms:us-east-1:123456789012:rep:LL57N77AQQAHHJF4PJFHNEDZ5G
DBA

Exécutez le script Python dms-create-task .py pour créer les AWS DMS tâches.

1. Exécutez le script dms-create-task.py Python à l'aide de la commande suivante :

$ python dms-create-task.py database_migration.txt dms-arn-list.txt <cft-stack-name> <migration-type>

  • database_migration.txtest le fichier texte de migration de base de données

  • dms-arn-list.txtest la ARN liste des AWS DMS

  • <cft-stack-name>est le nom de AWS CloudFormation pile défini par l'utilisateur

  • <migration-type>est le type de migration (chargement complet, cdc ou full-load-and-cdc)

2. En fonction de votre type de migration, vous pouvez utiliser les commandes suivantes pour créer trois types de AWS DMS tâches :

  • $ python dms-create-task.py database_migration.txt dms-arn-list.txt dms-cli-cft-stack full-load

  • $ python dms-create-task.py database_migration.txt dms-arn-list.txt dms-cli-cft-stack cdc

  • $ python dms-create-task.py database_migration.txt dms-arn-list.txt dms-cli-cft-stack full-load-and-cdc

3. La AWS CloudFormation pile et AWS DMS les tâches sont créées 

 

DBA

Vérifiez que AWS DMS les tâches sont prêtes.

Dans la AWS console, vérifiez le Ready statut de vos AWS DMS tâches dans la section État.

DBA
TâcheDescriptionCompétences requises

Commencez les AWS DMS tâches.

Exécutez le script dms-start-task.py Python à l'aide de la commande suivante :

$ python dms-start-task.py start ‘<cdc-start-datetime>’

Remarque : La date et l'heure de début doivent être au format de type de données 'DD-MON-YYYY' ou d''YYYY-MM-DDTHH:MI:SS'horodatage (par exemple, ‘01-Dec-2019’ ou) ‘2018-03-08T12:12:12’

Vous pouvez consulter l'état des AWS DMS tâches dans l'onglet Tableau des statistiques de vos tâches de migration sur la page Tâches de la AWS DMS console.

DBA

Validez les données.

  1. Une fois la migration à chargement complet terminée, la tâche est continuellement exécutée pour permettre une modification continue des données (CDC).

  2. Lorsque toutes les modifications CDC sont terminées ou qu'il n'est plus nécessaire de migrer, passez en revue et validez les résultats et les données des tâches de migration dans vos bases de données Oracle et PostgreSQL.

  3. Vous pouvez valider vos données en vérifiant les colonnes de statut et de nombre (Validation state,Validation pending, Validation failedValidation suspended, etValidation details) dans l'onglet Statistiques des tables de votre tâche de migration de base de données sur la page Tâches de la AWS DMS console. 

Pour plus d'informations, consultez la section validation AWS DMS des données dans la AWS DMS documentation.

DBA

Arrêtez les AWS DMS tâches.

Exécutez le script Python à l'aide de la commande suivante :

$ python dms-start-task.py stop

Remarque : AWS DMS les tâches peuvent s'arrêter avec un failed statut, en fonction de l'état de validation. Pour plus d'informations, consultez le tableau de résolution des problèmes dans la section Informations supplémentaires.

DBA

Résolution des problèmes

ProblèmeSolution

AWSSCTles connexions de test source et cible échouent

Configurez les versions des JDBC pilotes et les règles entrantes du groupe de VPC sécurité pour accepter le trafic entrant.

L'exécution du test du point de terminaison source ou cible échoue

Vérifiez si les paramètres du point de terminaison et l'instance de réplication sont en Available état. Vérifiez si l'état de la connexion du terminal estSuccessful

Pour plus d'informations, consultez la section Comment résoudre les problèmes de connectivité des AWS DMS terminaux dans la documentation AWS Support.

L'exécution à chargement complet échoue

Vérifiez si les types et les tailles de données des bases de données source et cible correspondent. 

Pour plus d'informations, consultez la section Résolution des problèmes liés aux tâches de migration AWS DMS dans la AWS DMS documentation.

Erreurs d'exécution de validation

Vérifiez si la table possède une clé primaire car les tables non primaires ne sont pas validées.

Si la table contient une clé primaire et contient des erreurs, vérifiez que l'attribut de connexion supplémentaire du point de terminaison source en possède unnumberDataTypeScale=-2.

Pour plus d'informations, consultez les sections Attributs de connexion supplémentaires lors de l'utilisation d'Oracle comme source pour AWS DMS OracleSettings, et Résolution des problèmes dans la AWS DMS documentation.

Ressources connexes

Pièces jointes

Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip