sql >> Databasteknik >  >> NoSQL >> MongoDB

Migrera MongoDB till DynamoDB, del 2

AWS Database Migration Service (DMS) lade till stöd för två NoSQL-databaser under 2017:MongoDB som källdatabas och AWS DynamoDB som måldatabas. I en självstudie med två artiklar migrerar vi en MongoDB-databas till DynamoDB på DMS. I den första artikeln, "Migrera MongoDB till DynamoDB, del 1", skapade vi en MongoDB-replikuppsättning och en DynamoDB-tabell. I den här fortsättningsartikeln kommer vi att diskutera att skapa och köra en DMS-migrering för att migrera data.

Den här artikeln har följande avsnitt:

  • Skapa en DMS-migrering
  • Köra migreringen
  • Återuppta en migrering
  • Ta bort en migrering
  • Slutsats

Skapa en DMS-migrering

Därefter ska vi skapa en DMS-migrering för att migrera MongoDB-databasen till DynamoDB. Logga in som IAM-användare (dvohra eller annan) skapad för DMS och välj DMS i AWS Management Console. Klicka på Skapa migrering i DMS Dashboard, som visas i figur 1.


Figur 1: Skapa migrering

Klicka på Nästa på DMS välkomstsida, som visas i figur 2.


Figur 2: Välkommen>Nästa

Skapa replikeringsinstans dialogrutan visas, som visas i figur 3, där vi konfigurerar en replikeringsinstans för att initiera anslutningarna mellan käll- och måldatabaserna, överföra data och cachelagra eventuella ändringar i källdatabasen under den första laddningen.


Figur 3: Skapa replikeringsinstans

Ange replikeringsinstansens namn i Namn fältet väljer du Instansklassen , välj en VPC , och välj alternativet för om en Multi-AZ replikeringsinstans ska skapas. Beskrivning , som vanligtvis är valfritt i konfigurerbara inställningar, är ett obligatoriskt fält. Standardinställningarna finns för alla dessa fält förutom VPC. De replikeringsinstansinställningar som används visas i figur 4.


Figur 4: Replikeringsinstansinställningar

Välj alternativet för att göra replikeringsinstansen Offentligt tillgänglig och klicka på Avancerat för att konfigurera avancerade parametrar, som visas i figur 5.


Figur 5: Ställer in replikeringsinstansen som allmänt tillgänglig

I Avancerat sektionen finns standardinställningar för alla fält (se figur 6).


Figur 6: Avancerade inställningar

Standardinställningarna, förutom KMS-huvudnyckeln, som måste ställas in på den krypteringsnyckel (dms) som skapades innan du loggar in som IAM-användare (dvohra), är lämpliga för alla replikeringsinstanser, som visas i figur 7. Klicka på Nästa.


Figur 7: Avancerade inställningar>Nästa

Replikeringsinstansen börjar skapas, vilket indikeras av meddelandet som visas i figur 8. Ange databasens slutpunkter nästa gång medan replikeringsinstansen skapas. Databasens slutpunkter kan dock inte testas förrän replikeringsinstansen har skapats.


Figur 8: Replikeringsinstans skapas

För Källmotorn , välj mongodb databas, som visas i figur 9.


Figur 9: Väljer källmotor som mongodb

För Target-motorn , välj dynamodb databas, som visas i figur 10.


Figur 10: Att välja målmotor som dynamodb

Slutpunktsidentifieraren kan behållas som standard för både käll- och måldatabasen, men de andra anslutningsparametrarna måste specificeras. För information om Källdatabasanslutning , ange Servernamnet som den privata IP-adressen (figur 21 i första artikeln, "Migrering av MongoDB till DynamoDB, del 1") för CoreOS EC2-instansen där MongoDB-replikuppsättningen startas med hjälp av Docker och ange Port som 27017 (se figur 11). Välj "ingen" för SSL-läge och Autentiseringsläge . Ange Databasnamn som test och välj Autentiseringsmekanism som standard .


Figur 11: Information om källdatabasanslutning

För källdatabasmotorn, mongodb , välj Metadataläge som dokument och välj alternativet _id som en separat kolumn , som visas i figur 12. Körtestet knappar används för att testa käll- och måldatabasanslutningarna och aktiveras inte förrän replikeringsinstansen har skapats.


Figur 12: Andra inställningar för källmotorn

Kopiera roll-ARN för dms-vpc-rollen från IAM-konsolen, som visas i figur 13. Roll ARN ska användas för att definiera måldatabasanslutningen för DMS-migreringen.


Figur 13: Kopiera roll ARN

Kopiera och klistra in Roll ARN i Service Access Roll ARN fältet, som visas i figur 14.


Figur 14: Tjänståtkomstroll ARN

När replikeringsinstansen har skapats visas ett meddelande som indikerar detsamma, som visas i figur 15.


Figur 15: Replikeringsinstans skapad

Klicka på Kör test för måldatabasen för att testa anslutningen. Om en anslutning upprättas bör meddelandet "Anslutning testad framgångsrikt" visas (se figur 16).


Figur 16: Måldatabasanslutningen testades framgångsrikt

På samma sätt klickar du på Kör test för källdatabasen, och meddelandet "Anslutning testad framgångsrikt" bör visas om en anslutning upprättas, som visas i figur 17.


Figur 17: Källdatabasanslutningen testades framgångsrikt

Klicka på Nästa i Databasslutpunkter , som visas i figur 18.


Figur 18: Databasslutpunkter>Nästa

Konfigurera sedan en migreringsuppgift i Skapa uppgift sida. En uppgift består av flera inställningar, inklusive uppgiftsnamn, uppgiftsbeskrivning, källslutpunkt, målslutpunkt, replikeringsinstans, migreringstyp, uppgiftsinställningar, tabellmappningar och avancerade inställningar. Standardinställningarna för Uppgiftsnamn och de icke-modifierbara inställningarna för Källslutpunkten , Målslutpunkt , replikeringsinstans och Migreringstyp visas i figur 19.


Figur 19: Skapa uppgiftsinställningar

Lägg till en lämplig beskrivning och välj en migreringstyp från rullgardinsmenyn som visas i figur 20. De olika alternativen för migreringstyp är Migrera befintliga data , Migrera befintlig data och replikera pågående ändringar och Replicera endast dataändringar . För att migrera befintliga data från MongoDB till DynamoDB med möjligheten att replikera pågående ändringar, välj Migrera befintlig data och replikera pågående ändringar . När en migreringsuppgift har skapats har bestämmelsen som ska ändras i efterhand förutom Migreringstypen inställning, som inte går att ändra efter att en migreringsuppgift har skapats. Välj därför Migreringstypen genom att anta att det är en permanent inställning.


Figur 20: Välja migreringstyp

Välj Uppgiftsinställningar för läge för förberedelse av måltabell , Stoppa uppgiften efter full laddning , Inkludera LOB-kolumner i replikering och Aktivera loggning (se figur 21).


Figur 21: Uppgiftsinställningar

Klicka på Avancerade inställningar , som visas i figur 22, för att konfigurera avancerade inställningar, som inkluderar Kontrolltabell inställningar och inställning inställningar. De avancerade standardinställningarna kan behållas.


Figur 22: Avancerade inställningar

I Tabellmappningar , konfigurera urvalsregler, som visas i figur 23. Minst en urvalsregel med en Inkludera åtgärd krävs. Välj ett schemanamn (test) i DMS-källan MongoDB. Schemanamnet är detsamma som ett MongoDB-databasnamn, vilket är test . Ange Tabellnamnet är som "%", som väljer alla tabeller. Ett bord kallas också en samling i MongoDB. Välj Åtgärd som Inkludera , som inkluderar de objekt som valts av en urvalsregel. Exkludera åtgärder bearbetas efter Inkludera åtgärder.


Figur 23: Tabellmappningar

Källfilter för att begränsa antalet och typen av poster som överförs från källa till mål kan också konfigureras. Klicka på Lägg till urvalsregel , som visas i figur 24.


Figur 24: Lägg till urvalsregel

Transformationsregler kan läggas till för att göra versaler/gemener och lägga till/ta bort prefix/suffixtransformationer. Om Loggning har aktiverats skapar DMS en roll för att logga till CloudWatch. Att skapa en uppgift ger implicit de behörigheter som krävs för att komma åt och logga till CloudWatch. Klicka på Skapa uppgift , som visas i figur 25.


Figur 25: Skapa uppgift

En migreringsuppgift börjar skapas (se figur 26). Till en början visas Status är "Skapar". Statusen bör uppdateras automatiskt och möjligheten att klicka på uppdateringsknappen för att uppdatera statusen med jämna mellanrum finns också.


Figur 26: Migreringsuppgiften börjar skapas

När en uppgift skapas visas Status blir Klar , som visas i figur 27.


Figur 27: Uppgiftsstatus redo

En IAM-roll för CloudWatch-åtkomst och loggning skapas automatiskt, som visas i figur 28.


Figur 28: IAM-roll för CloudWatch-loggar

Köra migreringen

För att köra migreringsuppgiften klickar du på Start/Återuppta , som visas i figur 29.


Figur 29: Starta/Återuppta uppgift

Aktivitetsstatusen blir Startande , som visas i figur 30.


Figur 30: Uppgift startar

När uppgiften har körts är tabellerna inlästa kolumnen visar antalet tabeller som laddats som 1, Status blir Stoppad , Den fullständiga % bör ange 100 , som visas i figur 31. Som Typ kolumnen indikerar är migreringstypen Fullbelastning och pågående replikering .


Figur 31: Full laddning slutförd

Förutom de Ladda tabellerna kolumnen Tabell laddas , Tabell i kö , och Fel i tabeller också listas, som visas i figur 32.


Figur 32: Tabeller som laddas, tabeller i kö och tabeller med fel är alla 0

I DynamoDB, wlslog Tabellen listar sju poster, som visas i figur 33. Två andra tabeller, awsdms_apply_exceptions och awsdms_full_load_exceptions , skapas också automatiskt. Tabellen awsdms_apply_exceptions tillhandahåller undantagsdetaljer, inklusive felnamnet och beskrivningen, satsen som kördes när felet inträffade, uppgiftens namn, tabellägaren, tabellnamnet och tidpunkten för undantaget. Tabellen awsdms_full_load_exceptions ger information om de undantag som genereras efter en full laddning.


Figur 33: wlslog-tabellen listar sju objekt

Klicka på ett _id för att visa dokumentet (_doc attributvärde), som visas i figur 34.


Figur 34: Dokument för ett objekt lagrat i DynamoDB

DynamoDB-filtret kan användas för att filtrera sökningen. Som ett exempel, sök efter ett specifikt _id genom att ange _id som fält, välj Sträng som fälttyp, välj '=' som filteroperator och ange _id sökningen efter, som visas i figur 35. Klicka på Starta sökning .


Figur 35: Använda ett filter

DynamoDB-tabellraddata för _id specificerad listas (se figur 36).


Figur 36: Filtrerad data för specifik _id

När en migreringsuppgift har slutfört migreringen av en databas blir aktivitetsstatusen Stoppad , men migreringsslutpunkterna är fortfarande aktiva , som visas i figur 37.


Figur 37: Slutpunkter Aktiva även efter att migreringen slutförts och uppgiften stoppats

Återuppta en migrering

En migreringsuppgift som har stoppats kan startas om eller återupptas. Följande är några av anledningarna till att återuppta eller starta om en uppgift:

  • Ett nytt dokument har lagts till i en befintlig samling (även kallad tabell ) i DMS-källdatabasen MongoDB
  • En ny samling (tabell) har lagts till i MongoDB-databasen
  • Migreringen måste köras om med olika urvalsregler, vilket kan vara nödvändigt, till exempel om ett tabellprefix behöver läggas till med en transformationsregel.

Som ett exempel, lägg till ytterligare tre dokument i 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 utdata i figur 38 indikerar läggs de tre dokumenten till.


Figur 38: Lägger till ytterligare tre dokument

Klicka på Start/Återuppta för att återuppta en stoppad uppgift, som visas i figur 39.


Figur 39: Starta/Fortsätt för stoppad uppgift

I Starta uppgift dialogrutan finns två alternativ:Start eller Starta om . Start alternativet startar uppgiften och laddar nya tabeller eller samlingar som läggs till i DMS-källan. Start alternativet laddar också alla tabeller som bara laddades delvis i en tidigare körning. Start alternativet laddar inte data (ny eller gammal) till en tabell som redan har laddats helt in i måldatabasen. Starta om alternativet startar om en uppgift och tar bort befintlig data i måldatabasen och startar om hela laddningen. I själva verket är Starta om alternativet laddar ny data som läggs till i befintliga tabeller utöver att ladda eventuella nya tabeller som läggs till i DMS-källan. Eftersom vi har lagt till ny data i en befintlig tabell måste vi välja Starta om och klicka på Starta uppgift , som visas i figur 40.


Figur 40: Startar om uppgiften

Uppgiften startar om, tar bort befintliga tabeller i måldatabasen och laddar all data från källdatabasen för att rikta in sig på databasen. När datainläsningen är klar blir aktivitetsstatusen Laddning klar (se figur 41).


Figur 41: Inläsningen är klar

Klicka på uppdateringsknappen i DynamoDB, som visas i figur 42.


Figur 42: Uppdaterar data i wlslog-tabellen

Antalet objekt som anges är 10, som visas i figur 43, istället för de sju innan du startar om uppgiften. De tre nya artiklarna vi lade till gör att artiklarna totalt blir 10.


Figur 43: Listar 10 objekt efter att ha lagt till nya objekt och uppdaterat data

Den nya datan som migreras särskiljs från data som laddas i 1 körningen med ett annat prefix; data som laddas i 1 körningen har prefixet 59401 i _id och data som laddas i körningen 2 har prefixet 59402 . Filtret alternativet kan användas för att bara lista de nya data, som visas i figur 44.


Figur 44: Filtrera data för att bara lista tre nya objekt

Aktivitetsstatusen blir igen Stoppad efter att den nya datan har migrerats, som visas i figur 45.


Figur 45: Status stoppas efter att full laddning är klar

Ta bort en migrering

För att ta bort en migrering, välj migreringen och klicka på Ta bort (se figur 46).


Figur 46: Ta bort

I Ta bort uppgift klickar du på Ta bort , som visas i figur 47.


Figur 47: Ta bort uppgiftsverifiering

Aktivitetsstatusen blir Ta bort , som visas i figur 48, innan uppgiften tas bort.


Figur 48: Ta bort uppgift

Att ta bort en uppgift tar inte bort de DMS-slutpunkter som används; detta betyder att en ny uppgift kan skapas.

Slutsats

I två artiklar diskuterade vi migrering av en MongoDB-databas till DynamoDB-tabeller med hjälp av AWS Database Migration Service.


  1. rmongodb:använder $or i fråga

  2. Hur undkommer man @ i ett lösenord i pymongo-anslutning?

  3. Viktiga saker att övervaka i MongoDB

  4. MongoDB $atan