sql >> Database >  >> RDS >> Mysql

Een Oracle-database migreren naar MySQL op AWS, deel 1

AWS Database Migration Service (DMS) is een service om databases naar AWS te migreren. De doeldatabase moet een van de ondersteunde databases op AWS zijn, zoals de door Relational Database Service gehoste databases, DynamoDB en RedShift. De brondatabase kan een database op AWS zijn of een lokale database of een database op een ander cloudplatform, zoals Oracle Cloud Platform. De brondatabase heeft geen uitvaltijd tijdens de migratie.

Waarom databases migreren?

Een database moet mogelijk om verschillende redenen worden gemigreerd, zoals:

  • Heterogene migratie naar een andere database-engine. Bijvoorbeeld van een Oracle-database naar een MySQL-database. Heterogene migratie kan nodig zijn om gebruik te maken van functies uit een andere database, zoals een databasetype dat niet wordt ondersteund in de brondatabase. Een commerciële database zou kunnen worden gemigreerd naar een open source database. Een relationele database kan er baat bij hebben als deze wordt gemigreerd naar een NoSQL-database.
  • Homogene migratie naar hetzelfde type database-engine, maar op een ander platform. Homogene migratie zou kunnen worden gebruikt om een ​​back-up van een database te maken. Een lokale database kan profiteren van een migratie naar een cloudplatform.
  • Continue gegevensreplicatie naar verschillende doeldatabases met het oog op testen en ontwikkeling, en regionale distributie van databases.
  • Meerdere brondatabases kan worden gemigreerd naar een enkele database voor consolidatie.

In twee artikelen bespreken we het migreren van een Oracle-database naar een MySQL-database met Database Migration Service. Dit artikel heeft de volgende secties:

  • De omgeving instellen
  • Een IAM-gebruiker maken
  • Een coderingssleutel maken
  • Oracle en MySQL DB-instanties maken op RDS
  • Oracle en MySQL DB's voorbereiden voor DMS
  • Conclusie

De omgeving instellen

De enige vereiste is een AWS-account, dat via deze link kan worden aangemaakt.

Een IAM-gebruiker maken

Een gebruiker moet IAM-machtigingen en -rollen krijgen om toegang te krijgen tot DMS. Er zijn aanvullende IAM-machtigingen vereist om toegang te krijgen tot andere services vanuit DMS; sommige acties zijn vereist van andere AWS-services zoals KMS, IAM, EC2 of CloudWatch. In deze sectie zullen we een IAM-gebruiker maken en een beleid toevoegen voor de vereiste set machtigingen. Selecteer de AWS IAM-service en klik op Gebruiker toevoegen , zoals weergegeven in afbeelding 1.


Figuur 1: Gebruiker toevoegen

In Gebruiker toevoegen , specificeer een Gebruikersnaam (dvohra) en selecteer beide Toegangstype opties, zoals weergegeven in Afbeelding 2.


Figuur 2: Nieuwe gebruiker configureren

Selecteer het Aangepaste wachtwoord optie voor Consolewachtwoord, geef een aangepast wachtwoord op en klik op Volgende, zoals weergegeven in Afbeelding 3.


Figuur 3: Wachtwoord specificeren

In Machtigingen , selecteer de optie Bestaand beleid direct bijvoegen optie en klik op Beleid maken om een ​​beleid te maken om bij te voegen, zoals weergegeven in Afbeelding 4.


Figuur 4: Gebruiker toevoegen>Beleid maken

In Beleid maken , selecteer de optie Uw eigen beleid maken optie, zoals weergegeven in Afbeelding 5.


Figuur 5: Maak uw eigen beleid

In Reviewbeleid , specificeer een Beleidsnaam (DMS) en kopieer het volgende beleid naar het Beleidsdocument .

{
   "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 op Beleid valideren en, als het bericht Het beleid is geldig is gegenereerd (zie afbeelding 6), klik op Beleid maken , ook weergegeven in figuur 6.


Figuur 6: Beleid maken

In de Gebruiker maken wizard, selecteer het nieuw aangemaakte DMS beleid en klik op Volgende, zoals weergegeven in Afbeelding 7.


Figuur 7: Beleid selecteren om aan gebruiker toe te voegen

Klik in Review op Gebruiker maken , zoals weergegeven in afbeelding 8.


Figuur 8: Review>Gebruiker maken

Er wordt een nieuwe gebruiker aangemaakt, zoals weergegeven in Afbeelding 9.


Figuur 9: Nieuwe gebruiker aangemaakt

Een nieuwe gebruiker wordt toegevoegd aan de IAM Console>Gebruikers , zoals weergegeven in afbeelding 10.


Figuur 10: IAM-gebruikers

Nadat we een nieuwe gebruiker hebben aangemaakt, moeten we inloggen als de nieuwe gebruiker om de DMS-migratie te maken. De Console-aanmeldingslink om in te loggen als de nieuwe gebruiker wordt verkregen uit de beveiligingsreferenties voor de nieuwe gebruiker (zie afbeelding 11).


Figuur 11: Console-aanmeldingslink

Nadat u een IAM-gebruiker voor DMS heeft aangemaakt, meldt u zich af als rootgebruiker, zoals weergegeven in Afbeelding 12.


Figuur 12: Afmelden als rootgebruiker

Open de login-URL in een browser, geef de gebruikersnaam en het wachtwoord op en klik op Aanmelden, zoals weergegeven in Afbeelding 13.


Figuur 13: Inloggen als de nieuwe IAM-gebruiker

Een coderingssleutel maken

Zorg ervoor dat u bent aangemeld als de IAM-gebruiker die in de vorige sectie is aangemaakt. We moeten een coderingssleutel maken die als hoofdsleutel wordt gebruikt bij het maken van een DMS-migratie. De codering moet worden gemaakt terwijl u bent aangemeld als de nieuwe IAM-gebruiker en niet als de rootgebruiker. Selecteer Encryptiesleutels in de IAM-console en klik op Sleutel maken , zoals weergegeven in Afbeelding 14.


Figuur 14: Sleutel maken

In Alias ​​en beschrijving maken , specificeer een alias (dms ) en klik op Volgende stap, zoals weergegeven in Afbeelding 15.


Figuur 15: Alias ​​specificeren

Klik in Tags toevoegen op Volgende stap omdat tags niet vereist zijn. Selecteer in Sleutelbeheerders de IAM-gebruiker die als beheerder is toegevoegd (zie Afbeelding 16). Selecteer Sleutelverwijdering als Sleutelbeheerders toestaan ​​deze sleutel te verwijderen en klik op Volgende stap.


Figuur 16: Sleutelbeheerders

Selecteer in Definieer machtigingen voor sleutelgebruik de IAM-gebruikers en -rollen die de coderingssleutel kunnen gebruiken; selecteer de nieuwe IAM-gebruiker en de dms-vpc-role , zoals weergegeven in Afbeelding 17. Klik op Volgende stap.


Figuur 17: Toestemmingen voor sleutelgebruik definiëren

Klik in Preview Key Policy op Voltooien, zoals weergegeven in Afbeelding 18.


Figuur 18: Voorbeeld sleutelbeleid

Er wordt een nieuwe coderingssleutel gemaakt, zoals weergegeven in Afbeelding 19.


Figuur 19: Encryptiesleutel aangemaakt

Oracle en MySQL DB-instances maken op RDS

Omdat we Oracle en MySQL RDS DB-instances respectievelijk als bron en doel zullen gebruiken voor de DMS-migratie, moet u twee RDS-instances maken, een voor de Oracle SE-database en de andere voor MySQL. Wanneer u de RDS-instanties maakt in Geavanceerde instellingen configureren, selecteert u Netwerk en beveiliging om een ​​nieuwe VPC te maken, een nieuwe DB-subnetgroep te maken en een nieuwe beveiligingsgroep te maken, zoals weergegeven in Afbeelding 20 voor Oracle DB. Als het AWS-account een limiet heeft voor het maximale aantal VPC's, verwijder dan enkele ongebruikte VPC's voordat u de RDS-instanties maakt.


Figuur 20: Geavanceerde instellingen configureren

De RDS-instanties voor Oracle en MySQL worden weergegeven in Afbeelding 21.


Figuur 21: RDS DB-instanties

De automatisch gemaakte beveiligingsgroepen hebben niet de vereiste regels voor inkomend/uitgaand verkeer, die moeten worden gewijzigd. Klik op de link voor Beveiligingsgroepen in de RDS-console, zoals weergegeven voor de MySQL DB in Afbeelding 22.


Figuur 22: Beveiligingsgroepen

Klik op Bewerken voor de beveiligingsgroep Inkomend, zoals weergegeven in Afbeelding 23.


Figuur 23: Beveiligingsgroep> Bewerken

Selecteer in Inkomende regels bewerken Type als Alle verkeer, Protocol als Alles, Poortbereik als 0-65535, Bron als overal en klik op Opslaan, zoals weergegeven in Afbeelding 24.


Figuur 24: Inkomende regels bewerken

De gewijzigde regels voor inkomend verkeer worden weergegeven in Afbeelding 25.


Figuur 25: Gewijzigde inkomende regels

De regels voor uitgaand verkeer staan ​​standaard al het verkeer toe (zie afbeelding 26).


Figuur 26: Uitgaande regels

De standaard beveiligingsgroep die voor Oracle DB op RDS is gemaakt, staat ook niet al het verkeer toe, zoals weergegeven in Afbeelding 27.


Figuur 27: Beveiligingsgroep voor Oracle DB op RDS

Wijzig de beveiligingsgroep Inkomend voor Oracle DB op RDS met de knop Bewerken, vergelijkbaar met het wijzigen van de MySQL Database Security Group Inbound-regels, om al het verkeer toe te staan, zoals weergegeven in Afbeelding 28.


Figuur 28: Beveiligingsgroep voor Oracle DB op RDS

Noteer de hoofdgebruikersnaam en het hoofdwachtwoord die voor elk van de DB-instances zijn geconfigureerd tijdens het maken van de instances, zoals weergegeven voor de MySQL DB in Afbeelding 29. Ook, wanneer u de MySQL DB op RDS maakt, zijn geen van de configuratie-instellingen (Database Name , DB Instance Identifier, Master Username, Master Password) moeten door MySQL gereserveerde woorden zijn, zoals "MYSQL".


Figuur 29: Hoofdgebruikersnaam en hoofdwachtwoord

Oracle en MySQL DB's voorbereiden voor DMS

Om Oracle DB en MySQL DB op RDS respectievelijk als DMS-bron en -doel te gebruiken, moeten we enkele instellingen configureren op de DB-instanties. Maak verbinding met de Oracle- en MySQL DB-instanties in een opdrachtregelshell om de instellingen te configureren. Om verbinding te maken met de RDS DB-instanties in een opdrachtregelshell, moeten we het eindpunt voor de RDS-instanties verkrijgen. Het eindpunt voor de Oracle DB op RDS wordt weergegeven in de RDS-console in Afbeelding 30.


Figuur 30: Eindpunt voor Oracle DB op RDS

Maak verbinding met de Oracle DB-instantie met de volgende sqlplus commando, waarin de HOST, SID,PORT voor verschillende gebruikers anders kunnen zijn; de HOST-waarde wordt verkregen door het poortsuffix van het eindpunt te verwijderen.

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

De SQL*Plus-opdrachtregelinterface wordt verbonden met de Oracle DB op RDS (zie Afbeelding 31).


Figuur 31: SQL*Plus CLI verbonden met Oracle DB

Schakel aanvullende logboekregistratie op databaseniveau in voor DMS.

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

De PL/SQL-procedure wordt voltooid, zoals weergegeven in Afbeelding 32.


Figuur 32: Aanvullende logboekregistratie op databaseniveau inschakelen

Schakel ook PRIMAIRE SLEUTEL . in loggen op databaseniveau.

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

De PRIMAIRE SLEUTEL logboekregistratie wordt ingeschakeld, zoals weergegeven in Afbeelding 33.


Figuur 33: Registratie van PRIMAIRE SLEUTEL inschakelen

Configureer archivering van de herhalingslogboeken voor de Oracle DB-instantie op RDS.

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

Archivering wordt geconfigureerd, zoals weergegeven in Afbeelding 34.


Figuur 34: Archivering configureren

Bij het migreren van een database worden de tabellen en tabelgegevens ook gemigreerd. Maak een databasetabel wlslog in de Oracle-database.

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

Aanvullende logboekregistratie toevoegen voor een tabel zonder een PRIMAIRE SLEUTEL loggen, of als PRIMAIRE SLEUTEL logboekregistratie op databaseniveau is niet ingesteld, wijzig de tabel om aanvullende logboekregistratie toe te voegen.

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

Aanvullende logboekregistratie kan ook worden ingeschakeld in de CREATE TABLE verklaring.

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

De uitvoer van de voorgaande twee commando's wordt getoond in Afbeelding 35.


Figuur 35: Aanvullende logboekregistratie toevoegen aan een reeds gemaakte tabel of aan een nieuwe tabel

Bereid vervolgens de MySQL DB-instance op RDS voor op DMS-migratie. Om verbinding te maken met MySQL DB, verkrijgt u het eindpunt (zie afbeelding 36.


Figuur 36: Eindpunt voor MySQL DB op RDS

De host wordt verkregen door het poortachtervoegsel uit het eindpunt te verwijderen. Gebruik de MySQL CLI om verbinding te maken met MySQL vanaf een opdrachtregel.

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

MySQL CLI wordt verbonden met een MySQL DB-instantie op RDS, zoals weergegeven in Afbeelding 37.


Figuur 37: Verbinding maken met MySQL vanuit MySQL CLI

Maak en verleen vervolgens lees- en schrijfrechten voor de MySQL-database aan de DMS-gebruiker (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>'@'%';

Door het gebruikersaccount te vervangen door dvohra, wordt de uitvoer van enkele van de opdrachten weergegeven in Afbeelding 38.


Figuur 38: MySQL-databasetoegang verlenen aan DMS-gebruiker

Conclusie

In dit artikel hebben we het migreren van een Oracle-database op RDS naar een MySQL-database op RDS geïntroduceerd met behulp van de AWS Database Migration-service. In dit artikel bespraken we het opzetten van de bron- en doeldatabases. In een volgend artikel zullen we een migratie maken en uitvoeren.


  1. JSON_VALUE() Functie in Oracle

  2. Bepaling en configuratie van de R12.2-editie

  3. PostgreSQL-accent + hoofdletterongevoelig zoeken

  4. Transformeer ODBC-gegevens in CloverDX