AWS Database Migration Service (DMS) tilføjede understøttelse af to NoSQL-databaser i 2017:MongoDB som kildedatabase og AWS DynamoDB som måldatabase. I en tutorial med to artikler migrerer vi en MongoDB-database til DynamoDB på DMS. I den første artikel, "Migrering af MongoDB til DynamoDB, del 1", oprettede vi et MongoDB replikasæt og DynamoDB-tabel. I denne fortsættelsesartikel vil vi diskutere oprettelse og afvikling af en DMS-migrering for at migrere data.
Denne artikel har følgende sektioner:
- Oprettelse af en DMS-migrering
- Kørsel af migreringen
- Genoptagelse af en migrering
- Sletning af en migrering
- Konklusion
Oprettelse af en DMS-migrering
Dernæst skal vi oprette en DMS-migrering for at migrere MongoDB-databasen til DynamoDB. Log ind som IAM-brugeren (dvohra eller andet) oprettet til DMS og vælg DMS i AWS Management Console. Klik på Opret migration i DMS Dashboard, som vist i figur 1.
Figur 1: Opret migrering
Klik på Næste på DMS-velkomstsiden, som vist i figur 2.
Figur 2: Velkommen>Næste
Opret replikeringsforekomst dialogboksen vises, som vist i figur 3, hvor vi konfigurerer en replikeringsinstans til at starte forbindelserne mellem kilde- og måldatabaserne, overføre data og cache eventuelle ændringer på kildedatabasen under den første indlæsning.
Figur 3: Opret replikeringsinstans
Angiv navnet på replikeringsforekomsten i Navn feltet skal du vælge Forekomstklassen , vælg en VPC , og vælg muligheden for, om en Multi-AZ replikeringsinstans skal oprettes. Beskrivelse , som normalt er valgfrit i konfigurerbare indstillinger, er et obligatorisk felt. Standardindstillingerne findes for alle disse felter undtagen VPC. De anvendte replikeringsinstansindstillinger er vist i figur 4.
Figur 4: Indstillinger for replikeringsinstanser
Vælg muligheden for at gøre replikeringsforekomsten offentligt tilgængelig og klik på Avanceret for at konfigurere avancerede parametre, som vist i figur 5.
Figur 5: Indstilling af replikeringsinstans som offentligt tilgængelig
I Avanceret sektion, er standardindstillingerne tilvejebragt for alle felterne (se figur 6).
Figur 6: Avancerede indstillinger
Standardindstillingerne, undtagen KMS-hovednøglen, som skal indstilles til den krypteringsnøgle (dms), der oprettes, før du logger på som IAM-bruger (dvohra), er egnede til enhver replikeringsinstans, som vist i figur 7. Klik på Næste.
Figur 7: Avancerede indstillinger>Næste
Replikeringsforekomsten begynder at blive oprettet, som angivet af meddelelsen vist i figur 8. Angiv derefter databaseslutpunkterne, mens replikeringsforekomsten oprettes. Databasens slutpunkter kan dog ikke testes, før replikeringsforekomsten er blevet oprettet.
Figur 8: Replikeringsforekomst bliver oprettet
Til Kildemotoren , vælg mongodb database, som vist i figur 9.
Figur 9: Valg af kildemotor som mongodb
Til Target Engine , vælg dynamodb database, som vist i figur 10.
Figur 10: Valg af Target Engine som dynamodb
Endpoint Identifier kan beholdes som standard for både kilde- og måldatabaserne, men de andre forbindelsesparametre skal specificeres. For Kildedatabaseforbindelsesoplysningerne , angiv Servernavnet som den private IP (figur 21 i første artikel, "Migrering af MongoDB til DynamoDB, del 1") af CoreOS EC2-instansen, hvor MongoDB-repliksættet startes ved hjælp af Docker, og angiv Port som 27017 (se figur 11). Vælg "ingen" for SSL-tilstand og Godkendelsestilstand . Angiv Databasenavn som test og vælg Godkendelsesmekanisme som standard .
Figur 11: Oplysninger om kildedatabaseforbindelse
For kildedatabasemotoren, mongodb , vælg Metadatatilstand som dokument og vælg muligheden _id som en separat kolonne , som vist i figur 12. Kørstesten knapper bruges til at teste kilde- og måldatabaseforbindelserne og er ikke aktiveret, før replikeringsforekomsten er blevet oprettet.
Figur 12: Andre indstillinger for kildemotoren
Kopiér Role ARN for dms-vpc-rollen fra IAM-konsollen, som vist i figur 13. Rolle ARN skal bruges til at definere måldatabaseforbindelsen for DMS-migreringen.
Figur 13: Kopiering af rolle ARN
Kopiér og indsæt rolle-ARN'et i Serviceadgangsrolle-ARN felt, som vist i figur 14.
Figur 14: Tjenesteadgangsrolle ARN
Når replikeringsforekomsten er blevet oprettet, vises en meddelelse, der angiver det samme, som vist i figur 15.
Figur 15: Replikeringsforekomst oprettet
Klik på Kør test for måldatabasen for at teste forbindelsen. Hvis en forbindelse etableres, skulle meddelelsen "Forbindelse testet vellykket" blive vist (se figur 16).
Figur 16: Måldatabaseforbindelse testet med succes
På samme måde skal du klikke på Kør test for kildedatabasen, og meddelelsen "Forbindelse testet med succes" skulle blive vist, hvis en forbindelse etableres, som vist i figur 17.
Figur 17: Kildedatabaseforbindelse testet med succes
Klik på Næste i Databaseslutpunkter , som vist i figur 18.
Figur 18: Databaseendepunkter>Næste
Konfigurer derefter en migreringsopgave i Opret opgave side. En opgave består af flere indstillinger, herunder opgavenavn, opgavebeskrivelse, kildeslutpunkt, målslutpunkt, replikeringsinstans, migreringstype, opgaveindstillinger, tabeltilknytninger og avancerede indstillinger. Standardindstillingerne for Opgavenavn og de ikke-modificerbare indstillinger for Kildeslutpunktet , Målslutpunkt , replikeringsinstans og Migreringstype er vist i figur 19.
Figur 19: Opret opgaveindstillinger
Tilføj en passende beskrivelse, og vælg en migreringstype fra rullelisten vist i figur 20. De forskellige muligheder for migreringstype er Migrer eksisterende data , Migrer eksisterende data og repliker løbende ændringer , og Repliker kun dataændringer . For at migrere eksisterende data fra MongoDB til DynamoDB med bestemmelsen om at replikere igangværende ændringer skal du vælge Migrer eksisterende data og replikere igangværende ændringer . Når en migreringsopgave er oprettet, har den bestemmelse, der skal ændres efterfølgende, bortset fra Migreringstypen indstilling, som ikke kan ændres, efter at en migreringsopgave er blevet oprettet. Vælg derfor migreringstypen ved at antage, at det er en permanent indstilling.
Figur 20: Valg af migreringstype
Vælg Opgaveindstillinger til Tilberedningstilstand for målbord , Stop opgaven efter fuld indlæsning , Inkluder LOB-kolonner i replikering , og Aktiver logning (se figur 21).
Figur 21: Opgaveindstillinger
Klik på Avancerede indstillinger , som vist i figur 22, for at konfigurere avancerede indstillinger, som omfatter Kontroltabel indstillinger og Tuning indstillinger. De avancerede standardindstillinger kan bevares.
Figur 22: Avancerede indstillinger
I Tabelkortlægninger , konfigurer udvælgelsesregler som vist i figur 23. Mindst én udvælgelsesregel med en Inkluder handling er påkrævet. Vælg et Skemanavn (test) i DMS-kilden MongoDB. Skemanavnet er det samme som et MongoDB-databasenavn, som er test . Angiv Tabelnavnet er som '%', som vælger alle tabeller. Et bord kaldes også en samling i MongoDB. Vælg Handling som Medtag , som inkluderer de objekter, der er valgt af en udvælgelsesregel. Ekskluder handlinger behandles efter Inkluder handlinger.
Figur 23: Tabelkortlægninger
Kildefiltre til at begrænse antallet og typen af poster, der overføres fra kilde til mål, kan også konfigureres. Klik på Tilføj valgregel , som vist i figur 24.
Figur 24: Tilføj valgregel
Transformationsregler kan tilføjes for at lave store/små bogstaver og tilføje/fjerne præfiks/suffikstransformationer. Hvis logning er blevet aktiveret, opretter DMS en rolle til at logge på CloudWatch. Oprettelse af en opgave giver implicit de nødvendige tilladelser for at få adgang til og logge på CloudWatch. Klik på Opret opgave , som vist i figur 25.
Figur 25: Opret opgave
En migreringsopgave begynder at blive oprettet (se figur 26). Indledningsvis vises Status er "Opretter". Status bør opdateres automatisk, og muligheden for at klikke på opdateringsknappen for at opdatere status med jævne mellemrum er også tilgængelig.
Figur 26: Migreringsopgaven begynder at blive oprettet
Når en opgave bliver oprettet, vises Status bliver Klar , som vist i figur 27.
Figur 27: Opgavestatus klar
En IAM-rolle for CloudWatch-adgang og logning oprettes automatisk, som vist i figur 28.
Figur 28: IAM-rolle for CloudWatch-logfiler
Kørsel af migreringen
Klik på Start/Genoptag for at køre migreringsopgaven , som vist i figur 29.
Figur 29: Start/Genoptag opgave
Opgavestatus bliver Starter , som vist i figur 30.
Figur 30: Opgavestart
Når opgaven er færdig med at køre, er tabellerne indlæst kolonnen viser antallet af tabeller indlæst som 1, Status bliver Stoppet , Den Fuldstændige % skal angive 100 , som vist i figur 31. Som Type kolonne angiver, er migreringstypen Fuld belastning og løbende replikering .
Figur 31: Fuld belastning fuldført
Ud over de indlæste tabeller kolonnen, Tabeller indlæses , Borde i kø , og Tabeller fejlede også blive opført, som vist i figur 32.
Figur 32: Tabeller indlæses, tabeller i kø og tabeller med fejl er alle 0
I DynamoDB er wlslog tabel viser syv elementer, som vist i figur 33. To andre tabeller, awsdms_apply_exceptions og awsdms_full_load_exceptions , også oprettes automatisk. Tabellen awsdms_apply_exceptions giver undtagelsesdetaljer, herunder fejlnavnet og beskrivelsen, den sætning, der kørte, da fejlen opstod, navnet på opgaven, tabelejeren, tabelnavnet og tidspunktet for undtagelsen. Tabellen awsdms_full_load_exceptions giver oplysninger om de undtagelser, der genereres efter en fuld load.
Figur 33: wlslog-tabellen viser syv elementer
Klik på et _id for at vise dokumentet (_doc attributværdi), som vist i figur 34.
Figur 34: Dokument for en vare gemt i DynamoDB
DynamoDB-filteret kan bruges til at filtrere søgningen. Som et eksempel, søg efter et specifikt _id ved at angive _id som felt ved at vælge String som felttype ved at vælge '=' som filteroperator og angive _id søgningen efter, som vist i figur 35. Klik på Start søgning .
Figur 35: Anvendelse af et filter
DynamoDB-tabelrækkedataene for _id specificeret bliver opført (se figur 36).
Figur 36: Filtrerede data for specifik _id
Når en migreringsopgave har fuldført migreringen af en database, bliver opgavestatus Stoppet , men migreringsendepunkterne er stadig aktive , som vist i figur 37.
Figur 37: Endpoints Aktive, selv efter at migreringen er fuldført, og opgaven er stoppet
Genoptagelse af en migrering
En migreringsopgave, der er stoppet, kan genstartes eller genoptages. Følgende er nogle af grundene til at genoptage eller genstarte en opgave:
- Et nyt dokument er blevet føjet til en eksisterende samling (også kaldet tabel ) i DMS-kildedatabasen MongoDB
- En ny samling (tabel) er blevet tilføjet i MongoDB-databasen
- Migreringen skal køres igen med forskellige udvælgelsesregler, hvilket f.eks. kan være nødvendigt, hvis et tabelpræfiks skal tilføjes ved hjælp af en transformationsregel.
Som et eksempel kan du tilføje yderligere tre dokumenter til wlslog samling i Mongo CLI.
doc8 = {"timestamp":"Apr 8, 2014 7:06:23 PM PDT", "category":"Notice","type":"WebLogicServer", "servername":"AdminServer","code":"BEA-000360", "msg":"Server in RUNNING mode"} doc9 = {"timestamp":"Apr 8, 2014 7:06:24 PM PDT", "category":"Notice","type":"WebLogicServer", "servername":"AdminServer","code":"BEA-000365", "msg":"Server Stopping"} doc10 = {"timestamp":"Apr 8, 2014 7:06:25 PM PDT", "category":"Notice","type":"WebLogicServer", "servername":"AdminServer","code":"BEA-000361", "msg":"Server Resumed"} db.wlslog.insert([doc8,doc9,doc10])
Som outputtet i figur 38 indikerer, bliver de tre dokumenter tilføjet.
Figur 38: Tilføjer yderligere tre dokumenter
Klik på Start/Genoptag for at genoptage en stoppet opgave, som vist i figur 39.
Figur 39: Start/Genoptag for stoppet opgave
I Start opgave dialog, er der to muligheder:Start eller Genstart . Start mulighed starter opgaven og indlæser nye tabeller eller samlinger tilføjet til DMS-kilden. Start option indlæser også enhver tabel, der kun var delvist indlæst i en tidligere kørsel. Start option indlæser ikke data (nye eller gamle) i en tabel, der allerede er blevet indlæst fuldstændigt i måldatabasen. Genstart option genstarter en opgave og sletter eksisterende data i måldatabasen og genstarter den fulde belastning. Faktisk er Genstart option indlæser nye data tilføjet til eksisterende tabeller ud over at indlæse alle nye tabeller, der tilføjes i DMS-kilden. Fordi vi har tilføjet nye data til en eksisterende tabel, skal vi vælge Genstart og klik på Start opgave , som vist i figur 40.
Figur 40: Genstarter opgave
Opgaven genstarter, sletter eksisterende tabeller i måldatabasen og indlæser alle data fra kildedatabasen for at målrette databasen. Når dataindlæsningen er fuldført, bliver opgavestatus Indlæsning fuldført (se figur 41).
Figur 41: Indlæsning fuldført
Klik på opdateringsknappen i DynamoDB, som vist i figur 42.
Figur 42: Opdaterer data i wlslog-tabel
Antallet af elementer, der er anført, er 10, som vist i figur 43, i stedet for de syv, før opgaven genstartes. De tre nye varer, vi tilføjede, gør, at varerne er i alt 10.
Figur 43: Viser 10 elementer efter tilføjelse af nye elementer og opdateret data
De nye data, der migreres, adskilles fra de data, der er indlæst i 1 kørslen med et andet præfiks; dataene indlæst i 1 kørsel har præfikset 59401 i _id og dataene indlæst i 2 kørslen har præfikset 59402 . Filtret mulighed kan bruges til kun at liste de nye data, som vist i figur 44.
Figur 44: Filtrering af data for kun at vise tre nye elementer
Opgavestatus bliver igen Stoppet efter at de nye data er blevet migreret, som vist i figur 45.
Figur 45: Status bliver stoppet efter fuld belastning er fuldført
Sletning af en migrering
For at slette en migrering skal du vælge migreringen og klikke på Slet (se figur 46).
Figur 46: Slet
I Slet opgave dialogboks skal du klikke på Slet , som vist i figur 47.
Figur 47: Slet opgavebekræftelse
Opgavestatus bliver Sletter , som vist i figur 48, før opgaven bliver slettet.
Figur 48: Opgavesletning
Sletning af en opgave sletter ikke de DMS-endepunkter, der bruges; det betyder, at en ny opgave kan oprettes.
Konklusion
I to artikler diskuterede vi migrering af en MongoDB-database til DynamoDB-tabeller ved at bruge AWS Database Migration Service.