Mysql
 sql >> Base de données >  >> RDS >> Mysql

Migration d'une base de données Oracle vers MySQL sur AWS, partie 1

AWS Database Migration Service (DMS) est un service permettant de migrer des bases de données vers AWS. La base de données cible doit être l'une des bases de données prises en charge sur AWS, telles que les bases de données hébergées du service de base de données relationnelle, DynamoDB et RedShift. La base de données source peut être une base de données sur AWS ou une base de données locale ou une base de données sur une autre plate-forme Cloud, telle qu'Oracle Cloud Platform. La base de données source n'a aucun temps d'arrêt pendant la migration.

Pourquoi migrer des bases de données ?

Une base de données peut devoir être migrée pour plusieurs raisons, telles que les suivantes :

  • Migration hétérogène à un autre moteur de base de données. Par exemple, une base de données Oracle vers une base de données MySQL. Une migration hétérogène peut être nécessaire pour bénéficier des fonctionnalités d'une autre base de données, comme un type de base de données non pris en charge sur la base de données source. Une base de données commerciale pourrait être migrée vers une base de données open source. Une base de données relationnelle pourrait bénéficier d'une migration vers une base de données NoSQL.
  • Migration homogène au même type de moteur de base de données, mais sur une plate-forme différente. Une migration homogène pourrait être utilisée pour faire une sauvegarde d'une base de données. Une base de données locale pourrait bénéficier d'une migration vers une plate-forme cloud.
  • Réplication continue des données à différentes bases de données cibles à des fins de test et de développement, et de distribution régionale des bases de données.
  • Bases de données sources multiples peut être migré vers une seule base de données pour la consolidation.

Dans deux articles, nous aborderons la migration d'une base de données Oracle vers une base de données MySQL avec Database Migration Service. Cet article comporte les sections suivantes :

  • Configuration de l'environnement
  • Création d'un utilisateur IAM
  • Création d'une clé de chiffrement
  • Création d'instances de base de données Oracle et MySQL sur RDS
  • Préparation des bases de données Oracle et MySQL pour DMS
  • Conclusion

Configuration de l'environnement

Le seul prérequis est un compte AWS, qui peut être créé sur ce lien.

Création d'un utilisateur IAM

Un utilisateur doit obtenir des autorisations et des rôles IAM pour accéder à DMS. Des autorisations IAM supplémentaires sont requises pour accéder à d'autres services à partir de DMS ; certaines actions sont requises d'autres services AWS tels que KMS, IAM, EC2 ou CloudWatch. Dans cette section, nous allons créer un utilisateur IAM et attacher une stratégie pour l'ensemble d'autorisations requis. Sélectionnez le service AWS IAM et cliquez sur Ajouter un utilisateur , comme le montre la figure 1.


Figure 1 : Ajouter un utilisateur

Dans Ajouter un utilisateur , spécifiez un Nom d'utilisateur (dvohra) et sélectionnez à la fois Type d'accès options, comme illustré à la figure 2.


Figure 2 : Configuration d'un nouvel utilisateur

Sélectionnez le mot de passe personnalisé pour Mot de passe de la console, spécifiez un mot de passe personnalisé, puis cliquez sur Suivant, comme illustré à la figure 3.


Figure 3 : Spécification du mot de passe

Dans Autorisations , sélectionnez l'option Joindre directement les politiques existantes option et cliquez sur Créer une politique pour créer une stratégie à attacher, comme illustré à la figure 4.


Figure 4 : Ajouter un utilisateur>Créer une politique

Dans Créer une règle , sélectionnez Créer votre propre politique option, comme illustré à la figure 5.


Figure 5 : Créez votre propre politique

Dans Politique d'examen , spécifiez un nom de politique (DMS) et copiez la politique suivante dans le document de politique .

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Action": "dms:*",
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "kms:ListAliases",
            "kms:DescribeKey"
         ],
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "iam:GetRole",
            "iam:PassRole",
            "iam:CreateRole",
            "iam:AttachRolePolicy"
         ],
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "ec2:DescribeVpcs",
            "ec2:DescribeInternetGateways",
            "ec2:DescribeAvailabilityZones",
            "ec2:DescribeSubnets",
            "ec2:DescribeSecurityGroups",
            "ec2:ModifyNetworkInterfaceAttribute",
            "ec2:CreateNetworkInterface",
            "ec2:DeleteNetworkInterface"
         ],
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "cloudwatch:Get*",
            "cloudwatch:List*"
         ],
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "logs:DescribeLogGroups",
            "logs:DescribeLogStreams",
            "logs:FilterLogEvents",
            "logs:GetLogEvents"
         ],
         "Resource": "*"
      }
   ]
}

Cliquez sur Valider la politique et, si le message La politique est valide est généré (voir Figure 6), cliquez sur Créer une politique , également illustré à la figure 6.


Figure 6 : Créer une politique

Dans Créer un utilisateur assistant, sélectionnez le DMS nouvellement créé politique et cliquez sur Suivant, comme illustré à la figure 7.


Figure 7 : Sélection de la politique à attacher à l'utilisateur

Dans Révision, cliquez sur Créer un utilisateur , comme illustré à la figure 8.


Figure 8 : Réviser>Créer un utilisateur

Un nouvel utilisateur est créé, comme illustré à la figure 9.


Figure 9 : Nouvel utilisateur créé

Un nouvel utilisateur est ajouté aux utilisateurs de la console IAM , comme illustré à la Figure 10.


Figure 10 : Utilisateurs IAM

Après avoir créé un nouvel utilisateur, nous devrons nous connecter en tant que nouvel utilisateur pour créer la migration DMS. Le lien de connexion à la console pour se connecter car le nouvel utilisateur est obtenu à partir des informations d'identification de sécurité pour le nouvel utilisateur (voir Figure 11).


Figure 11 : Lien de connexion à la console

Après avoir créé un utilisateur IAM pour DMS, déconnectez-vous en tant qu'utilisateur racine, comme illustré à la Figure 12.


Figure 12 : Se déconnecter en tant qu'utilisateur root

Ouvrez l'URL de connexion dans un navigateur, spécifiez le nom d'utilisateur et le mot de passe, puis cliquez sur Se connecter, comme illustré à la figure 13.


Figure 13 : Connexion en tant que nouvel utilisateur IAM

Création d'une clé de chiffrement

Assurez-vous que vous êtes connecté en tant qu'utilisateur IAM créé dans la section précédente. Nous devons créer une clé de chiffrement qui serait utilisée comme clé principale lors de la création d'une migration DMS. Le chiffrement doit être créé en étant connecté en tant que nouvel utilisateur IAM et non en tant qu'utilisateur racine. Sélectionnez Clés de chiffrement dans la console IAM et cliquez sur Créer une clé , comme illustré à la Figure 14.


Figure 14 : Créer une clé

Dans Créer un alias et une description , spécifiez un Alias (dms ) et cliquez sur Étape suivante, comme illustré à la Figure 15.


Figure 15 : Spécifier un alias

Dans Ajouter des balises, cliquez sur Étape suivante car les balises ne sont pas requises. Dans Key Administrators, sélectionnez l'utilisateur IAM ajouté en tant qu'administrateur (voir Figure 16). Sélectionnez Suppression de clé comme Autoriser les administrateurs de clé à supprimer cette clé, puis cliquez sur Étape suivante.


Figure 16 : Administrateurs clés

Dans Définir les autorisations d'utilisation de la clé, sélectionnez les utilisateurs et les rôles IAM qui peuvent utiliser la clé de chiffrement; sélectionnez le nouvel utilisateur IAM et le dms-vpc-role , comme illustré à la Figure 17. Cliquez sur Étape suivante.


Figure 17 : Définir les autorisations d'utilisation des clés

Dans Aperçu de la stratégie de clé, cliquez sur Terminer, comme illustré à la figure 18.


Figure 18 : Aperçu de la stratégie de clé

Une nouvelle clé de chiffrement est créée, comme illustré à la figure 19.


Figure 19 : Clé de chiffrement créée

Création d'instances de base de données Oracle et MySQL sur RDS

Étant donné que nous allons utiliser les instances de base de données Oracle et MySQL RDS comme source et cible, respectivement, pour la migration DMS, créez deux instances RDS, une pour la base de données Oracle SE et l'autre pour MySQL. Lors de la création des instances RDS dans Configurer les paramètres avancés, sélectionnez Réseau et sécurité pour créer un nouveau VPC, créer un nouveau groupe de sous-réseaux DB et créer un nouveau groupe de sécurité, comme illustré à la Figure 20 pour Oracle DB. Si le compte AWS a une limite sur le nombre maximal de VPC, supprimez certains VPC inutilisés avant de créer les instances RDS.


Figure 20 : Configuration des paramètres avancés

Les instances RDS pour Oracle et MySQL sont illustrées à la figure 21.


Figure 21 : Instances de base de données RDS

Les groupes de sécurité créés automatiquement n'ont pas les règles entrantes/sortantes requises, qui doivent être modifiées. Cliquez sur le lien pour les groupes de sécurité dans la console RDS, comme indiqué pour la base de données MySQL dans la figure 22.


Figure 22 : Groupes de sécurité

Cliquez sur Modifier pour le groupe de sécurité Entrant, comme illustré à la Figure 23.


Figure 23 : Groupe de sécurité>Modifier

Dans Modifier les règles entrantes, sélectionnez Type comme Tout le trafic, Protocole comme Tout, Plage de ports comme 0-65535, Source comme Partout, et cliquez sur Enregistrer, comme illustré à la Figure 24.


Figure 24 : Modifier les règles entrantes

Les règles entrantes modifiées sont illustrées à la figure 25.


Figure 25 : Règles entrantes modifiées

Les règles sortantes autorisent tout le trafic par défaut (voir Figure 26).


Figure 26 : Règles sortantes

Le groupe de sécurité par défaut créé pour Oracle DB sur RDS n'autorise pas non plus tout le trafic, comme illustré à la figure 27.


Figure 27 : Groupe de sécurité pour Oracle DB sur RDS

Modifiez le groupe de sécurité entrant pour Oracle DB sur RDS avec le bouton Modifier, similaire à la modification des règles entrantes du groupe de sécurité de la base de données MySQL, pour autoriser tout le trafic, comme illustré à la figure 28.


Figure 28 : Groupe de sécurité pour Oracle DB sur RDS

Notez le nom d'utilisateur principal et le mot de passe principal configurés pour chacune des instances de base de données lors de la création des instances, comme illustré pour la base de données MySQL dans la figure 29. De plus, lors de la création de la base de données MySQL sur RDS, aucun des paramètres de configuration (nom de la base de données , Identifiant d'instance DB, Nom d'utilisateur principal, Mot de passe principal) doivent être des mots réservés MySQL, tels que "MYSQL".


Figure 29 : Nom d'utilisateur principal et mot de passe principal

Préparation des bases de données Oracle et MySQL pour DMS

Pour utiliser Oracle DB et MySQL DB sur RDS comme source et cible DMS, respectivement, nous devons configurer certains paramètres sur les instances de base de données. Connectez-vous aux instances de base de données Oracle et MySQL dans un shell de ligne de commande pour configurer les paramètres. Pour se connecter aux instances de base de données RDS dans un shell de ligne de commande, nous devons obtenir le point de terminaison pour les instances RDS. Le point de terminaison pour la base de données Oracle sur RDS est illustré dans la console RDS de la figure 30.


Figure 30 : Point de terminaison pour Oracle DB sur RDS

Connectez-vous à l'instance de base de données Oracle avec le sqlplus suivant commande, dans laquelle HOST, SID, PORT peuvent être différents pour différents utilisateurs ; la valeur HOST est obtenue en supprimant le suffixe de port du point de terminaison.

sqlplus [email protected](DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)
   (HOST=orcl.crbmlbxmp8qi.us-east-1.rds.amazonaws.com)(PORT=1521))
   (CONNECT_DATA=(SID=ORCL)))

L'interface de ligne de commande SQL*Plus se connecte à la base de données Oracle sur RDS (voir Figure 31).


Figure 31 : CLI SQL*Plus connecté à la base de données Oracle

Activez la journalisation supplémentaire au niveau de la base de données pour DMS.

exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');

La procédure PL/SQL est terminée, comme illustré à la Figure 32.


Figure 32 : Activation de la journalisation supplémentaire au niveau de la base de données

Activez également la CLÉ PRIMAIRE journalisation au niveau de la base de données.

exec rdsadmin.rdsadmin_util.alter_supplemental_logging
   ('ADD','PRIMARY KEY');

La CLÉ PRIMAIRE la journalisation est activée, comme illustré à la Figure 33.


Figure 33 : Activation de la journalisation de la CLÉ PRIMAIRE

Configurez l'archivage des journaux redo pour l'instance de base de données Oracle sur RDS.

exec rdsadmin.rdsadmin_util.set_configuration
   ('archivelog retention hours',24);

L'archivage est configuré, comme illustré à la Figure 34.


Figure 34 : Configuration de l'archivage

Lors de la migration d'une base de données, les tables et les données de table sont également migrées. Créer une table de base de données wlslog dans la base de données Oracle.

CREATE TABLE wlslog(time_stamp VARCHAR2(255) PRIMARY KEY,category
   VARCHAR2(255),type VARCHAR2(255),servername VARCHAR2(255),
   code VARCHAR2(255),msg VARCHAR2(255));
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:16-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to STANDBY');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:17-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to STARTING');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:18-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to ADMIN');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:19-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to RESUMING');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:20-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000361','Started WebLogic AdminServer');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:21-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to RUNNING');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:22-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000360','Server started in RUNNING mode');

Pour ajouter une journalisation supplémentaire pour une table sans PRIMARY KEY journalisation, ou si CLÉ PRIMAIRE la journalisation au niveau de la base de données n'est pas définie, modifiez le tableau pour ajouter une journalisation supplémentaire.

alter table wlslog add supplemental log data (ALL) columns;

La journalisation supplémentaire peut également être activée dans CREATE TABLE déclaration.

CREATE TABLE wlslog(time_stamp VARCHAR2(255) PRIMARY KEY,
   category VARCHAR2(255),type VARCHAR2(255),
   servername VARCHAR2(255), code VARCHAR2(255),msg VARCHAR2(255),
   supplemental log data(ALL) columns);

La sortie des deux commandes précédentes est illustrée à la Figure 35.


Figure 35 : Ajouter une journalisation supplémentaire à une table déjà créée ou à une nouvelle table

Ensuite, préparez l'instance de base de données MySQL sur RDS pour la migration DMS. Pour vous connecter à la base de données MySQL, obtenez le point de terminaison (voir Figure 36.


Figure 36 : Point de terminaison pour la base de données MySQL sur RDS

L'hôte est obtenu en supprimant le suffixe de port du point de terminaison. À l'aide de l'interface de ligne de commande MySQL, connectez-vous à MySQL à partir d'une ligne de commande.

mysql -h mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com -P 3306
   -u dvohra -p

L'interface de ligne de commande MySQL se connecte à une instance de base de données MySQL sur RDS, comme illustré à la figure 37.


Figure 37 : Connexion à MySQL à partir de MySQL CLI

Ensuite, créez et accordez des privilèges de lecture et d'écriture pour la base de données MySQL à l'utilisateur DMS (dvohra).

CREATE USER '<user acct>'@'%' IDENTIFIED BY
   <user password>';??? Remove as user dvohra already exists
GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE,
   SELECT ON myschema.* TO '<user acct>'@'%';
GRANT ALL PRIVILEGES ON awsdms_control.* TO '<user acct>'@'%';

En remplaçant le compte d'utilisateur par dvohra, la sortie de certaines des commandes est illustrée à la figure 38.


Figure 38 : Accorder l'accès à la base de données MySQL à l'utilisateur DMS

Conclusion

Dans cet article, nous avons présenté la migration d'une base de données Oracle sur RDS vers une base de données MySQL sur RDS à l'aide du service AWS Database Migration. Dans cet article, nous avons abordé la configuration des bases de données source et cible. Dans un prochain article, nous créerons et exécuterons une migration.