sql >> Database teknologi >  >> RDS >> Mysql

Migrering af en Oracle-database til MySQL på AWS, del 1

AWS Database Migration Service (DMS) er en tjeneste til at migrere databaser til AWS. Måldatabasen skal være en af ​​de understøttede databaser på AWS, såsom Relational Database Service-hostede databaser, DynamoDB og RedShift. Kildedatabasen kan være en database på AWS eller en lokal database eller en database på en anden Cloud-platform, såsom Oracle Cloud Platform. Kildedatabasen har ingen nedetid under migreringen.

Hvorfor migrere databaser?

En database skal muligvis migreres af flere årsager, såsom følgende:

  • Heterogen migration til en anden databasemotor. For eksempel en Oracle-database til en MySQL-database. Heterogen migrering kan være påkrævet for at benytte funktioner fra en anden database, såsom en databasetype, der ikke understøttes af kildedatabasen. En kommerciel database kunne migreres til en open source-database. En relationsdatabase kunne drage fordel af at blive migreret til en NoSQL-database.
  • Homogen migration til den samme databasemotortype, men på en anden platform. Homogen migration kunne bruges til at lave en backup af en database. En lokal database kan drage fordel af at blive migreret til en Cloud-platform.
  • Kontinuerlig datareplikering til forskellige måldatabaser med henblik på test og udvikling, og regional distribution af databaser.
  • Flere kildedatabaser kan migreres til en enkelt database for konsolidering.

I to artikler vil vi diskutere migrering af en Oracle-database til en MySQL-database med Database Migration Service. Denne artikel har følgende sektioner:

  • Indstilling af miljøet
  • Oprettelse af en IAM-bruger
  • Oprettelse af en krypteringsnøgle
  • Oprettelse af Oracle- og MySQL DB-instanser på RDS
  • Forberedelse af Oracle og MySQL DB'er til DMS
  • Konklusion

Indstilling af miljøet

Den eneste forudsætning er en AWS-konto, som kan oprettes på dette link.

Oprettelse af en IAM-bruger

En bruger skal have IAM-tilladelser og roller for at få adgang til DMS. Der kræves yderligere IAM-tilladelser for at få adgang til andre tjenester fra DMS; nogle handlinger er påkrævet fra andre AWS-tjenester såsom KMS, IAM, EC2 eller CloudWatch. I dette afsnit skal vi oprette en IAM-bruger og vedhæfte en politik for det nødvendige sæt tilladelser. Vælg AWS IAM-tjenesten, og klik på Tilføj bruger , som vist i figur 1.


Figur 1: Tilføj bruger

I Tilføj bruger , angiv et Brugernavn (dvohra) og vælg begge Adgangstype muligheder, som vist i figur 2.


Figur 2: Konfigurerer ny bruger

Vælg Tilpasset adgangskode mulighed for konsoladgangskode, angiv en brugerdefineret adgangskode, og klik på Næste, som vist i figur 3.


Figur 3: Angivelse af adgangskode

I Tilladelser , skal du vælge Vedhæft eksisterende politikker direkte og klik på Opret politik for at oprette en politik, der skal vedhæftes, som vist i figur 4.


Figur 4: Tilføj bruger>Opret politik

I Opret politik , skal du vælge Opret din egen politik mulighed, som vist i figur 5.


Figur 5: Opret din egen politik

I Gennemgå politik , angiv et politiknavn (DMS) og kopier følgende politik til Politikdokumentet .

{
   "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": "*"
      }
   ]
}

Klik på Valider politik og hvis meddelelsen Politikken er gyldig er genereret (se figur 6), skal du klikke på Opret politik , også vist i figur 6.


Figur 6: Opret politik

I Opret bruger guiden, skal du vælge det nyoprettede DMS politik og klik på Næste, som vist i figur 7.


Figur 7: Valg af politik, der skal knyttes til bruger

I Gennemgang skal du klikke på Opret bruger , som vist i figur 8.


Figur 8: Gennemgå>Opret bruger

En ny bruger oprettes, som vist i figur 9.


Figur 9: Ny bruger oprettet

En ny bruger føjes til IAM-konsollen>Brugere , som vist i figur 10.


Figur 10: IAM-brugere

Efter at have oprettet en ny bruger, skal vi logge på som den nye bruger for at oprette DMS-migreringen. Konsollogin-linket for at logge på, da den nye bruger er hentet fra sikkerhedsoplysningerne for den nye bruger (se figur 11).


Figur 11: Konsol login link

Når du har oprettet en IAM-bruger til DMS, skal du logge ud som root-bruger, som vist i figur 12.


Figur 12: Log ud som root-bruger

Åbn login-URL'en i en browser, angiv brugernavn og adgangskode, og klik på Log på, som vist i figur 13.


Figur 13: Log på som den nye IAM-bruger

Oprettelse af en krypteringsnøgle

Sørg for, at du er logget ind som den IAM-bruger, der blev oprettet i forrige afsnit. Vi skal oprette en krypteringsnøgle, der vil blive brugt som hovednøgle, når vi opretter en DMS-migrering. Krypteringen skal oprettes, mens du er logget ind som den nye IAM-bruger og ikke som root-brugeren. Vælg Krypteringsnøgler i IAM-konsollen, og klik på Opret nøgle , som vist i figur 14.


Figur 14: Opret nøgle

I Opret alias og beskrivelse , angiv et alias (dms ) og klik på Næste trin, som vist i figur 15.


Figur 15: Angivelse af alias

I Tilføj tags skal du klikke på Næste trin, fordi tags ikke er påkrævet. I Nøgleadministratorer skal du vælge den IAM-bruger, der er tilføjet som administrator (se figur 16). Vælg Sletning af nøgle som Tillad nøgleadministratorer at slette denne nøgle, og klik på Næste trin.


Figur 16: Nøgleadministratorer

I Definer nøglebrugstilladelser skal du vælge de IAM-brugere og roller, der er i stand til at bruge krypteringsnøglen; vælg den nye IAM-bruger og dms-vpc-rollen , som vist i figur 17. Klik på Næste trin.


Figur 17: Definering af nøglebrugstilladelser

I Eksempel på nøglepolitik skal du klikke på Udfør, som vist i figur 18.


Figur 18: Forhåndsvisning af nøglepolitik

En ny krypteringsnøgle bliver oprettet, som vist i figur 19.


Figur 19: Krypteringsnøgle oprettet

Oprettelse af Oracle- og MySQL DB-instanser på RDS

Fordi vi skal bruge Oracle og MySQL RDS DB-instanser som henholdsvis kilde og mål til DMS-migreringen, skal du oprette to RDS-instanser, en til Oracle SE-database og den anden til MySQL. Når du opretter RDS-forekomsterne i Konfigurer avancerede indstillinger, skal du vælge Netværk og sikkerhed for at oprette en ny VPC, oprette en ny DB-undernetgruppe og oprette en ny sikkerhedsgruppe, som vist i figur 20 for Oracle DB. Hvis AWS-kontoen har en grænse for det maksimale antal VPC'er, skal du slette nogle ubrugte VPC'er, før du opretter RDS-forekomsterne.


Figur 20: Konfiguration af avancerede indstillinger

RDS-instanserne for Oracle og MySQL er vist i figur 21.


Figur 21: RDS DB-forekomster

De automatisk oprettede sikkerhedsgrupper har ikke de påkrævede indgående/udgående regler, som skal ændres. Klik på linket til sikkerhedsgrupper i RDS-konsollen, som vist for MySQL DB i figur 22.


Figur 22: Sikkerhedsgrupper

Klik på Rediger for sikkerhedsgruppen Indgående, som vist i figur 23.


Figur 23: Sikkerhedsgruppe>Rediger

I Rediger indgående regler skal du vælge Indtast som al trafik, Protokol som alt, Portområde som 0-65535, Kilde som hvor som helst, og klik på Gem, som vist i figur 24.


Figur 24: Rediger indgående regler

De ændrede indgående regler er vist i figur 25.


Figur 25: Ændrede indgående regler

De udgående regler tillader som standard al trafik (se figur 26).


Figur 26: Udgående regler

Standardsikkerhedsgruppen, der er oprettet til Oracle DB på RDS, tillader heller ikke al trafik, som vist i figur 27.


Figur 27: Sikkerhedsgruppe for Oracle DB på RDS

Rediger sikkerhedsgruppen Inbound for Oracle DB på RDS med knappen Rediger, svarende til ændring af MySQL Database Security Group Inbound-reglerne, for at tillade al trafik, som vist i figur 28.


Figur 28: Sikkerhedsgruppe for Oracle DB på RDS

Noter masterbrugernavnet og masteradgangskoden, der er konfigureret for hver af DB-forekomsterne, mens du opretter forekomsterne, som vist for MySQL DB i figur 29. Også, når du opretter MySQL DB på RDS, er der ingen af ​​konfigurationsindstillingerne (Database Name , DB Instance Identifier, Master Username, Master Password) skal være MySQL-reserverede ord, såsom "MYSQL".


Figur 29: Hovedbrugernavn og hovedadgangskode

Forberedelse af Oracle og MySQL DB'er til DMS

For at bruge Oracle DB og MySQL DB på RDS som henholdsvis DMS-kilde og -mål, skal vi konfigurere nogle indstillinger på DB-instanserne. Opret forbindelse til Oracle- og MySQL DB-instanserne i en kommandolinjeskal for at konfigurere indstillingerne. For at oprette forbindelse til RDS DB-forekomsterne i en kommandolinje-shell, skal vi hente endepunktet for RDS-forekomsterne. Slutpunktet for Oracle DB på RDS er vist i RDS-konsollen i figur 30.


Figur 30: Endpoint for Oracle DB på RDS

Opret forbindelse til Oracle DB-instansen med følgende sqlplus kommando, hvori HOST, SID, PORT kunne være forskellig for forskellige brugere; HOST-værdien opnås ved at fjerne portsuffikset fra Endpoint.

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

SQL*Plus kommandolinjegrænsefladen bliver forbundet til Oracle DB på RDS (se figur 31).


Figur 31: SQL*Plus CLI forbundet til Oracle DB

Aktiver supplerende logning på databaseniveau for DMS.

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

PL/SQL-proceduren bliver fuldført, som vist i figur 32.


Figur 32: Aktivering af supplerende logning på databaseniveau

Aktiver også PRIMARY KEY logning på databaseniveau.

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

Den PRIMÆRE NØGLE logning bliver aktiveret, som vist i figur 33.


Figur 33: Aktivering af PRIMÆR NØGLE-logning

Konfigurer arkivering af redo-logfilerne for Oracle DB-instansen på RDS.

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

Arkivering konfigureres som vist i figur 34.


Figur 34: Konfiguration af arkivering

Ved migrering af en database migreres tabellerne og tabeldataene også. Opret en databasetabel wlslog i Oracle-databasen.

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');

For at tilføje supplerende logning for en tabel uden en PRIMÆR NØGLE logning, eller hvis PRIMÆR NØGLE logning på databaseniveau ikke er indstillet, skal du ændre tabellen for at tilføje supplerende logning.

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

Supplerende logning kan også være aktiveret i OPRET TABEL erklæring.

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);

Outputtet fra de to foregående kommandoer er vist i figur 35.


Figur 35: Tilføjelse af supplerende logning til en tabel, der allerede er oprettet, eller til en ny tabel

Forbered derefter MySQL DB-instansen på RDS til DMS-migrering. For at oprette forbindelse til MySQL DB skal du hente endepunktet (se figur 36.

).


Figur 36: Slutpunkt for MySQL DB på RDS

Værten opnås ved at fjerne portsuffikset fra endepunktet. Brug MySQL CLI til at oprette forbindelse til MySQL fra en kommandolinje.

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

MySQL CLI bliver forbundet til en MySQL DB-instans på RDS, som vist i figur 37.


Figur 37: Opretter forbindelse til MySQL fra MySQL CLI

Derefter skal du oprette og tildele læse- og skriverettigheder til MySQL-databasen til DMS-brugeren (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>'@'%';

Ved at erstatte brugerkontoen som dvohra, vises output fra nogle af kommandoerne i figur 38.


Figur 38: Tildeling af MySQL-databaseadgang til DMS-bruger

Konklusion

I denne artikel introducerede vi migrering af en Oracle-database på RDS til en MySQL-database på RDS ved hjælp af AWS-databasemigreringstjenesten. I denne artikel diskuterede vi opsætningen af ​​kilde- og måldatabaserne. I en efterfølgende artikel skal vi oprette og køre en migrering.


  1. Hvad er IKKE logisk operatør i SQL Server - SQL Server / TSQL Tutorial Del 121

  2. Nulstil automatisk stigningstæller i postgres

  3. SQL mellem operatør

  4. .NET 4:Sådan konfigureres EDMX-fil i anden samling i Web.Config