AWS Database Migration Service (DMS) är en tjänst för att migrera databaser till AWS. Måldatabasen måste vara en av de databaser som stöds på AWS, som värdbaserade databaser för Relational Database Service, DynamoDB och RedShift. Källdatabasen kan vara en databas på AWS eller en lokal databas eller en databas på någon annan molnplattform, såsom Oracle Cloud Platform. Källdatabasen har ingen driftstopp under migreringen.
Varför migrera databaser?
En databas kan behöva migreras av flera anledningar, till exempel följande:
- Heterogen migration till en annan databasmotor. Till exempel en Oracle-databas till en MySQL-databas. Heterogen migrering kan krävas för att använda funktioner från en annan databas, till exempel en databastyp som inte stöds i källdatabasen. En kommersiell databas kan migreras till en öppen källkodsdatabas. En relationsdatabas skulle kunna dra nytta av att migreras till en NoSQL-databas.
- Homogen migration till samma databasmotortyp, men på en annan plattform. Homogen migrering kan användas för att göra en säkerhetskopia av en databas. En lokal databas kan dra nytta av att migreras till en molnplattform.
- Kontinuerlig datareplikering till olika måldatabaser i syfte att testa och utveckla, och regional distribution av databaser.
- Databaser med flera källkällor kan migreras till en enda databas för konsolidering.
I två artiklar kommer vi att diskutera migrering av en Oracle-databas till en MySQL-databas med Database Migration Service. Den här artikeln har följande avsnitt:
- Ställa in miljön
- Skapa en IAM-användare
- Skapa en krypteringsnyckel
- Skapa Oracle- och MySQL DB-instanser på RDS
- Förbereder Oracle och MySQL DB för DMS
- Slutsats
Ställa in miljön
Den enda förutsättningen är ett AWS-konto, som kan skapas på den här länken.
Skapa en IAM-användare
En användare behöver få IAM-behörigheter och roller för att få åtkomst till DMS. Ytterligare IAM-behörigheter krävs för att komma åt andra tjänster från DMS; vissa åtgärder krävs från andra AWS-tjänster som KMS, IAM, EC2 eller CloudWatch. I det här avsnittet ska vi skapa en IAM-användare och bifoga en policy för den nödvändiga uppsättningen behörigheter. Välj AWS IAM-tjänsten och klicka på Lägg till användare , som visas i figur 1.
Figur 1: Lägg till användare
I Lägg till användare , ange ett Användarnamn (dvohra) och välj båda Åtkomsttyp alternativ, som visas i figur 2.
Figur 2: Konfigurerar ny användare
Välj Anpassat lösenord alternativet för konsollösenord, ange ett anpassat lösenord och klicka på Nästa, som visas i figur 3.
Figur 3: Ange lösenord
I Behörigheter , välj Bifoga befintliga policyer direkt och klicka på Skapa policy för att skapa en policy att bifoga, som visas i figur 4.
Figur 4: Lägg till användare>Skapa policy
I Skapa policy , välj Skapa din egen policy alternativ, som visas i figur 5.
Figur 5: Skapa din egen policy
I Granska policy , ange ett policynamn (DMS) och kopiera följande policy till policydokumentet .
{ "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": "*" } ] }
Klicka på Validera policy och, om meddelandet Policen är giltig skapas (se figur 6), klicka på Skapa policy , även visat i figur 6.
Figur 6: Skapa policy
I Skapa användare guiden, välj det nyskapade DMS policy och klicka på Nästa, som visas i figur 7.
Figur 7: Välj Policy som ska bifogas till Användare
I Granska klickar du på Skapa användare , som visas i figur 8.
Figur 8: Granska>Skapa användare
En ny användare skapas, som visas i figur 9.
Figur 9: Ny användare skapad
En ny användare läggs till i IAM Console>Användare , som visas i figur 10.
Figur 10: IAM-användare
Efter att ha skapat en ny användare skulle vi behöva logga in som ny användare för att skapa DMS-migreringen. Konsollänken för inloggning för att logga in eftersom den nya användaren hämtas från säkerhetsuppgifterna för den nya användaren (se figur 11).
Figur 11: Inloggningslänk till konsolen
Efter att ha skapat en IAM-användare för DMS, logga ut som root-användare, som visas i figur 12.
Figur 12: Logga ut som root-användare
Öppna inloggningsadressen i en webbläsare, ange användarnamn och lösenord och klicka på Logga in, som visas i figur 13.
Figur 13: Logga in som den nya IAM-användaren
Skapa en krypteringsnyckel
Se till att du är inloggad som den IAM-användare som skapades i föregående avsnitt. Vi måste skapa en krypteringsnyckel som skulle användas som huvudnyckel när vi skapar en DMS-migrering. Krypteringen måste skapas när du är inloggad som den nya IAM-användaren och inte som rotanvändaren. Välj Krypteringsnycklar i IAM-konsolen och klicka på Skapa nyckel , som visas i figur 14.
Figur 14: Skapa nyckel
I Skapa alias och beskrivning , ange ett alias (dms ) och klicka på Nästa steg, som visas i figur 15.
Figur 15: Ange alias
I Lägg till taggar klickar du på Nästa steg eftersom taggar inte krävs. I Nyckeladministratörer väljer du den IAM-användare som lagts till som administratör (se figur 16). Välj Ta bort nyckel som Tillåt nyckeladministratörer att ta bort den här nyckeln och klicka på Nästa steg.
Figur 16: Nyckeladministratörer
I Definiera nyckelanvändningsbehörigheter, välj de IAM-användare och roller som kan använda krypteringsnyckeln; välj den nya IAM-användaren och dms-vpc-rollen , som visas i figur 17. Klicka på Nästa steg.
Figur 17: Definiera nyckelanvändningsbehörigheter
I Preview Key Policy, klicka på Finish, som visas i figur 18.
Figur 18: Förhandsgranska nyckelpolicy
En ny krypteringsnyckel skapas, som visas i figur 19.
Figur 19: Krypteringsnyckel skapad
Skapa Oracle- och MySQL DB-instanser på RDS
Eftersom vi kommer att använda Oracle och MySQL RDS DB-instanser som källa respektive mål för DMS-migreringen, skapa två RDS-instanser, en för Oracle SE-databasen och den andra för MySQL. När du skapar RDS-instanserna i Konfigurera avancerade inställningar väljer du Nätverk och säkerhet för att skapa en ny VPC, skapa en ny DB-undernätsgrupp och skapa en ny säkerhetsgrupp, som visas i figur 20 för Oracle DB. Om AWS-kontot har en gräns för det maximala antalet VPC:er, ta bort några oanvända VPC:er innan du skapar RDS-instanserna.
Figur 20: Konfigurera avancerade inställningar
RDS-instanserna för Oracle och MySQL visas i figur 21.
Figur 21: RDS DB-instanser
Säkerhetsgrupperna som skapas automatiskt har inte de nödvändiga inkommande/utgående reglerna, som måste ändras. Klicka på länken för säkerhetsgrupper i RDS-konsolen, som visas för MySQL DB i figur 22.
Figur 22: Säkerhetsgrupper
Klicka på Redigera för säkerhetsgruppen Inkommande, som visas i figur 23.
Figur 23: Säkerhetsgrupp>
Redigera
I Redigera inkommande regler väljer du Typ som All trafik, Protokoll som All, Port Range som 0-65535, Källa som Anywhere och klickar på Spara, som visas i Figur 24.
Figur 24: Redigera inkommande regler
De modifierade inkommande reglerna visas i figur 25.
Figur 25: Ändrade inkommande regler
Utgående regler tillåter all trafik som standard (se figur 26).
Figur 26: Utgående regler
Standardsäkerhetsgruppen som skapats för Oracle DB på RDS tillåter inte heller all trafik, som visas i figur 27.
Figur 27: Säkerhetsgrupp för Oracle DB på RDS
Ändra säkerhetsgruppen Inbound for Oracle DB på RDS med knappen Redigera, på samma sätt som att ändra MySQL Database Security Group Inbound-reglerna, för att tillåta all trafik, som visas i figur 28.
Figur 28: Säkerhetsgrupp för Oracle DB på RDS
Anteckna huvudanvändarnamnet och huvudlösenordet som konfigurerats för var och en av DB-instanserna när du skapar instanserna, som visas för MySQL DB i figur 29. Dessutom, när du skapar MySQL DB på RDS, kommer inga av konfigurationsinställningarna (Databasnamn) , DB-instansidentifierare, huvudanvändarnamn, huvudlösenord) bör vara reserverade MySQL-ord, som "MYSQL".
Figur 29: Huvudanvändarnamn och huvudlösenord
Förbereder Oracle och MySQL DB för DMS
För att använda Oracle DB och MySQL DB på RDS som DMS-källa respektive -mål måste vi konfigurera några inställningar på DB-instanserna. Anslut till Oracle- och MySQL DB-instanserna i ett kommandoradsskal för att konfigurera inställningarna. För att ansluta till RDS DB-instanserna i ett kommandoradsskal måste vi skaffa Endpoint för RDS-instanserna. Slutpunkten för Oracle DB på RDS visas i RDS-konsolen i figur 30.
Figur 30: Slutpunkt för Oracle DB på RDS
Anslut till Oracle DB-instansen med följande sqlplus kommando, där HOST, SID, PORT kan vara olika för olika användare; HOST-värdet erhålls genom att ta bort portsuffixet från Endpoint.
sqlplus [email protected](DESCRIPTION=(ADDRESS=(PROTOCOL=TCP) (HOST=orcl.crbmlbxmp8qi.us-east-1.rds.amazonaws.com)(PORT=1521)) (CONNECT_DATA=(SID=ORCL)))
Kommandoradsgränssnittet SQL*Plus ansluts till Oracle DB på RDS (se figur 31).
Figur 31: SQL*Plus CLI ansluten till Oracle DB
Aktivera tilläggsloggning på databasnivå för DMS.
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
PL/SQL-proceduren slutförs, som visas i figur 32.
Figur 32: Aktiverar tilläggsloggning på databasnivå
Aktivera även PRIMÄRKEY loggning på databasnivå.
exec rdsadmin.rdsadmin_util.alter_supplemental_logging ('ADD','PRIMARY KEY');
PRIMÄRNYCKLEN loggning aktiveras, som visas i figur 33.
Figur 33: Aktiverar PRIMÄRNYCKELloggning
Konfigurera arkivering av redo-loggarna för Oracle DB-instansen på RDS.
exec rdsadmin.rdsadmin_util.set_configuration ('archivelog retention hours',24);
Arkivering konfigureras, som visas i figur 34.
Figur 34: Konfigurera arkivering
Vid migrering av en databas migreras även tabellerna och tabelldata. Skapa en databastabell 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');
För att lägga till kompletterande loggning för en tabell utan en PRIMÄRNYCKEL loggning, eller om PRIMÄRNYCKEL loggning på databasnivå är inte inställd, ändra tabellen för att lägga till extra loggning.
alter table wlslog add supplemental log data (ALL) columns;
Kompletterande loggning kan också aktiveras i SKAPA TABELL uttalande.
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);
Utdata från de två föregående kommandona visas i figur 35.
Figur 35: Lägga till kompletterande loggning i en redan skapad tabell eller till en ny tabell
Förbered sedan MySQL DB-instansen på RDS för DMS-migrering. För att ansluta till MySQL DB, skaffa Endpoint (se figur 36.
Figur 36: Slutpunkt för MySQL DB på RDS
Värden erhålls genom att ta bort portsuffixet från Endpoint. Använd MySQL CLI, anslut till MySQL från en kommandorad.
mysql -h mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com -P 3306 -u dvohra -p
MySQL CLI ansluts till en MySQL DB-instans på RDS, som visas i figur 37.
Figur 37: Ansluter till MySQL från MySQL CLI
Skapa sedan och bevilja läs- och skrivbehörigheter för MySQL-databasen till DMS-användaren (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>'@'%';
Genom att ersätta användarkontot som dvohra, visas utdata från några av kommandona i figur 38.
Figur 38: Bevilja MySQL-databasåtkomst till DMS-användare
Slutsats
I den här artikeln introducerade vi migrering av en Oracle-databas på RDS till en MySQL-databas på RDS med hjälp av tjänsten AWS Database Migration. I den här artikeln diskuterade vi att ställa in käll- och måldatabaserna. I en efterföljande artikel kommer vi att skapa och köra en migrering.