sql >> Database >  >> NoSQL >> MongoDB

MongoDB migreren naar DynamoDB, deel 2

De AWS Database Migration Service (DMS) heeft in 2017 ondersteuning toegevoegd voor twee NoSQL-databases:MongoDB als de brondatabase en AWS DynamoDB als de doeldatabase. In een zelfstudie met twee artikelen migreren we een MongoDB-database naar DynamoDB op DMS. In het eerste artikel, "Migratie van MongoDB naar DynamoDB, deel 1", hebben we een MongoDB-replicaset en DynamoDB-tabel gemaakt. In dit vervolgartikel bespreken we het maken en uitvoeren van een DMS-migratie om gegevens te migreren.

Dit artikel heeft de volgende secties:

  • Een DMS-migratie maken
  • De migratie uitvoeren
  • Een migratie hervatten
  • Een migratie verwijderen
  • Conclusie

Een DMS-migratie maken

Vervolgens zullen we een DMS-migratie maken om de MongoDB-database naar DynamoDB te migreren. Log in als de IAM-gebruiker (dvohra of andere) die is aangemaakt voor DMS en selecteer DMS in de AWS Management Console. Klik op Migratie maken in het DMS-dashboard, zoals weergegeven in afbeelding 1.


Figuur 1: Migratie maken

Klik op Volgende op de DMS-welkomstpagina, zoals weergegeven in afbeelding 2.


Figuur 2: Welkom>Volgende

De Replicatie-instantie maken dialoogvenster wordt weergegeven, zoals weergegeven in Afbeelding 3, waarin we een replicatie-instantie configureren om de verbindingen tussen de bron- en doeldatabases te initiëren, de gegevens over te dragen en eventuele wijzigingen in de brondatabase in de cache op te slaan tijdens de eerste keer laden.


Figuur 3: Replicatie-instantie maken

Geef de naam van de replicatie-instantie op in de Naam veld, selecteer de Instance class , selecteer een VPC en selecteer de optie of een Multi-AZ replicatie-instantie moet worden gemaakt. Beschrijving , wat meestal optioneel is in configureerbare instellingen, is een verplicht veld. De standaardinstellingen zijn beschikbaar voor al deze velden, behalve voor de VPC. De gebruikte instellingen voor replicatie-instanties worden weergegeven in Afbeelding 4.


Figuur 4: Instellingen voor replicatie-instantie

Selecteer de optie om de replicatie-instantie Openbaar toegankelijk te maken en klik op Geavanceerd om geavanceerde parameters te configureren, zoals weergegeven in Afbeelding 5.


Figuur 5: Replicatie-instantie instellen als openbaar toegankelijk

In de Geavanceerde sectie, zijn er standaardinstellingen voor alle velden (zie Afbeelding 6).


Figuur 6: Geavanceerde instellingen

De standaardinstellingen, behalve de KMS-hoofdsleutel, die moet worden ingesteld op de coderingssleutel (dms) die is gemaakt voordat u zich aanmeldt als de IAM-gebruiker (dvohra), zijn geschikt voor elke replicatie-instantie, zoals weergegeven in Afbeelding 7. Klik op Volgende.


Figuur 7: Geavanceerde instellingen>Volgende

Het replicatie-exemplaar begint te worden gemaakt, zoals aangegeven door het bericht in Afbeelding 8. Geef vervolgens de database-eindpunten op terwijl het replicatie-exemplaar wordt gemaakt. De database-eindpunten kunnen echter pas worden getest als de replicatie-instantie is gemaakt.


Figuur 8: Replicatie-instantie wordt gemaakt

Voor de Bronengine , selecteer de mongodb database, zoals weergegeven in Afbeelding 9.


Figuur 9: Bron-engine selecteren als mongodb

Voor de Doelengine , selecteer de dynamodb database, zoals weergegeven in Afbeelding 10.


Figuur 10: Target Engine selecteren als dynamodb

De Endpoint Identifier kan als standaard worden gehouden voor zowel de bron- als de doeldatabase, maar de andere verbindingsparameters moeten worden opgegeven. Voor de Bron database verbindingsdetails , specificeer de Servernaam als het privé-IP (Afbeelding 21 in het eerste artikel, "Migratie van MongoDB naar DynamoDB, deel 1") van de CoreOS EC2-instantie waarop de MongoDB-replicaset wordt gestart met Docker en specificeer Poort als 27017 (zie afbeelding 11). Selecteer "geen" voor SSL-modus en Verificatiemodus . Specificeer Databasenaam als test en selecteer Verificatiemechanisme als standaard .


Figuur 11: Verbindingsgegevens brondatabase

Voor de brondatabase-engine, mongodb , selecteer Metadatamodus als document en selecteer de optie _id als een aparte kolom , zoals weergegeven in Afbeelding 12. De Test uitvoeren knoppen worden gebruikt om de bron- en doeldatabaseverbindingen te testen en worden pas ingeschakeld als de replicatie-instantie is gemaakt.


Figuur 12: Andere instellingen voor de bronengine

Kopieer de Rol ARN voor de dms-vpc-role vanuit de IAM-console, zoals weergegeven in Afbeelding 13. De rol ARN moet worden gebruikt voor het definiëren van de doeldatabaseverbinding voor de DMS-migratie.


Figuur 13: Rol ARN kopiëren

Kopieer en plak de rol ARN in de Servicetoegangsrol ARN veld, zoals weergegeven in Afbeelding 14.


Figuur 14: Servicetoegangsrol ARN

Wanneer de replicatie-instantie is gemaakt, wordt een bericht weergegeven dat hetzelfde aangeeft, zoals weergegeven in Afbeelding 15.


Figuur 15: Replicatie-instantie gemaakt

Klik voor de doeldatabase op Test uitvoeren om de verbinding te testen. Als er een verbinding tot stand wordt gebracht, zou het bericht "Verbinding getest succesvol" moeten worden weergegeven (zie Afbeelding 16).


Figuur 16: Doeldatabaseverbinding succesvol getest

Klik op dezelfde manier op Test uitvoeren voor de brondatabase, en het bericht "Verbinding is succesvol getest" zou moeten worden weergegeven als een verbinding tot stand wordt gebracht, zoals weergegeven in Afbeelding 17.


Figuur 17: Brondatabaseverbinding succesvol getest

Klik op Volgende in Database-eindpunten , zoals weergegeven in Afbeelding 18.


Figuur 18: Database-eindpunten>Volgende

Configureer vervolgens een migratietaak in de Taak maken bladzijde. Een taak bestaat uit verschillende instellingen, waaronder taaknaam, taakbeschrijving, broneindpunt, doeleindpunt, replicatie-instantie, migratietype, taakinstellingen, tabeltoewijzingen en geavanceerde instellingen. De standaardinstellingen voor Taaknaam en de niet-wijzigbare instellingen voor het Broneindpunt , Doel eindpunt , Replicatie-instantie , en Migratietype worden weergegeven in Afbeelding 19.


Figuur 19: Taakinstellingen maken

Voeg een geschikte beschrijving toe en selecteer een Migratietype uit de vervolgkeuzelijst die wordt weergegeven in Afbeelding 20. De verschillende opties voor het migratietype zijn Bestaande gegevens migreren , Bestaande gegevens migreren en doorlopende wijzigingen repliceren , en Alleen gegevenswijzigingen repliceren . Als u bestaande gegevens van MongoDB naar DynamoDB wilt migreren met de mogelijkheid om doorlopende wijzigingen te repliceren, selecteert u Bestaande gegevens migreren en doorlopende wijzigingen repliceren . Een migratietaak die eenmaal is gemaakt, kan later worden gewijzigd, behalve voor het Migratietype instelling, die niet kan worden gewijzigd nadat een migratietaak is gemaakt. Kies daarom het Migratietype door ervan uit te gaan dat het een permanente instelling is.


Figuur 20: Migratietype kiezen

Selecteer Taakinstellingen voor Doeltabel voorbereidingsmodus , Stop de taak nadat de volledige lading is voltooid , LOB-kolommen opnemen in replicatie , en Logboekregistratie inschakelen (zie afbeelding 21).


Figuur 21: Taakinstellingen

Klik op Geavanceerde instellingen , zoals weergegeven in Afbeelding 22, om geavanceerde instellingen te configureren, waaronder Bedieningstabel instellingen en Afstemming instellingen. De standaard geavanceerde instellingen kunnen behouden blijven.


Figuur 22: Geavanceerde instellingen

In Tabeltoewijzingen , configureer selectieregels, zoals weergegeven in Afbeelding 23. Ten minste één selectieregel met een Opnemen actie is vereist. Selecteer een Schemanaam (test) in de DMS-bron MongoDB. Schemanaam is hetzelfde als een MongoDB-databasenaam, namelijk test . Specificeer Tabelnaam is als '%', die alle tabellen selecteert. Een tafel wordt ook wel een verzameling . genoemd in MongoDB. Selecteer Actie als Opnemen , die de objecten bevat die door een selectieregel zijn geselecteerd. Uitsluitingsacties worden verwerkt na Inclusieve acties.


Figuur 23: Tabeltoewijzingen

Er kunnen ook bronfilters worden geconfigureerd om het aantal en het type records dat van bron naar doel wordt overgedragen te beperken. Klik op Selectieregel toevoegen , zoals weergegeven in Afbeelding 24.


Figuur 24: Selectieregel toevoegen

Er kunnen transformatieregels worden toegevoegd om hoofdletters/kleine letters te maken, en voorvoegsel/achtervoegsel-transformaties toe te voegen/verwijderen. Als Logging is ingeschakeld, maakt DMS een rol aan om bij CloudWatch in te loggen. Door een taak te maken, worden impliciet de machtigingen verleend die nodig zijn om toegang te krijgen tot en in te loggen op CloudWatch. Klik op Taak maken , zoals weergegeven in Afbeelding 25.


Figuur 25: Taak maken

Er wordt een migratietaak aangemaakt (zie Afbeelding 26). Aanvankelijk was de Status is "creëren". De status zou automatisch moeten worden bijgewerkt en de optie om op de knop Vernieuwen te klikken om de status periodiek te vernieuwen is ook aanwezig.


Figuur 26: Migratietaak wordt gemaakt

Wanneer een taak wordt gemaakt, wordt de Status wordt Klaar , zoals weergegeven in Afbeelding 27.


Figuur 27: Taakstatus gereed

Er wordt automatisch een IAM-rol voor CloudWatch-toegang en logboekregistratie gemaakt, zoals weergegeven in Afbeelding 28.


Figuur 28: IAM-rol voor CloudWatch-logboeken

De migratie uitvoeren

Om de migratietaak uit te voeren, klikt u op Start/Hervatten , zoals weergegeven in Afbeelding 29.


Figuur 29: Taak starten/hervatten

De taakstatus wordt Begint , zoals weergegeven in Afbeelding 30.


Figuur 30: Taak starten

Wanneer de taak is voltooid, worden de Tabellen geladen kolom geeft het aantal tabellen weer dat is geladen als 1, de Status wordt Gestopt , De Volledige % moet 100 . aangeven , zoals weergegeven in Afbeelding 31. Als het Type kolom aangeeft, is het migratietype Volledige belasting en voortdurende replicatie .


Figuur 31: Volledige lading voltooid

Naast de Tabellen geladen kolom, de Tabellen worden geladen , Tafels in de wachtrij , en Tabels foutief worden ook vermeld, zoals weergegeven in Afbeelding 32.


Figuur 32: Tabellen worden geladen, tabellen in de wachtrij geplaatst en tabellen met fouten zijn allemaal 0

In DynamoDB, de wlslog tabel geeft zeven items weer, zoals weergegeven in Afbeelding 33. Twee andere tabellen, awsdms_apply_exceptions en awsdms_full_load_exceptions , worden ook automatisch gemaakt. De tabel awsdms_apply_exceptions bevat uitzonderingsdetails, waaronder de naam en beschrijving van de fout, de instructie die werd uitgevoerd toen de fout optrad, de naam van de taak, de eigenaar van de tabel, de tabelnaam en het tijdstip van de uitzondering. De tabel awsdms_full_load_exceptions biedt informatie over de uitzonderingen die worden gegenereerd na een volledige belasting.


Figuur 33: De wlslog-tabel bevat zeven items

Klik op een _id om het document weer te geven (_doc attribuutwaarde), zoals weergegeven in Afbeelding 34.


Figuur 34: Document voor een item opgeslagen in DynamoDB

Het DynamoDB-filter kan worden gebruikt om de zoekopdracht te filteren. Zoek bijvoorbeeld naar een specifieke _id door _id . op te geven als veld, selecteer String als het veldtype, selecteer '=' als de filteroperator en specificeer de _id zoeken naar, zoals weergegeven in Afbeelding 35. Klik op Start zoeken .


Figuur 35: Een filter toepassen

De DynamoDB-tabelrijgegevens voor de _id gespecificeerd wordt weergegeven (zie Afbeelding 36).


Figuur 36: Gefilterde gegevens voor specifieke _id

Nadat een migratietaak de migratie van een database heeft voltooid, wordt de taakstatus Gestopt , maar de migratie-eindpunten zijn nog steeds Actief , zoals weergegeven in Afbeelding 37.


Figuur 37: Eindpunten Actief, zelfs nadat de migratie is voltooid en de taak is gestopt

Een migratie hervatten

Een migratietaak die is gestopt, kan opnieuw worden gestart of hervat. Hieronder volgen enkele van de redenen om een ​​taak te hervatten of opnieuw te starten:

  • Er is een nieuw document toegevoegd aan een bestaande verzameling (ook wel tabel genoemd) ) in de DMS-bron MongoDB-database
  • Er is een nieuwe verzameling (tabel) toegevoegd aan de MongoDB-database
  • De migratie moet opnieuw worden uitgevoerd met andere selectieregels, wat bijvoorbeeld nodig kan zijn als een tabelprefix moet worden toegevoegd met behulp van een transformatieregel.

Voeg bijvoorbeeld nog drie documenten toe aan de wlslog verzameling in de 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])

Zoals de uitvoer in Afbeelding 38 aangeeft, worden de drie documenten toegevoegd.


Figuur 38: Nog drie documenten toevoegen

Klik op Start/Hervatten om een ​​gestopte taak te hervatten, zoals weergegeven in Afbeelding 39.


Figuur 39: Start/Hervat voor gestopte taak

In de Taak starten dialoogvenster zijn er twee opties:Start of Herstart . De Start optie start de taak en laadt nieuwe tabellen of collecties die aan de DMS-bron zijn toegevoegd. De Start optie laadt ook elke tabel die slechts gedeeltelijk werd geladen in een vorige run. De Start optie laadt geen gegevens (nieuw of oud) in een tabel die al volledig in de doeldatabase is geladen. De Herstart optie start een taak opnieuw en verwijdert bestaande gegevens in de doeldatabase en start de volledige belasting opnieuw. In feite is de Herstart optie laadt nieuwe gegevens die aan bestaande tabellen zijn toegevoegd, naast het laden van nieuwe tabellen die zijn toegevoegd aan de DMS-bron. Omdat we nieuwe gegevens aan een bestaande tabel hebben toegevoegd, moeten we de optie Herstarten . selecteren optie en klik op Taak starten , zoals weergegeven in Afbeelding 40.


Figuur 40: Taak herstarten

De taak wordt opnieuw gestart, verwijdert bestaande tabellen in de doeldatabase en laadt alle gegevens uit de brondatabase om de database te targeten. Wanneer het laden van gegevens is voltooid, wordt de taakstatus Laden voltooid (zie Afbeelding 41).


Figuur 41: Laden voltooid

Klik op de refresh-knop in de DynamoDB, zoals weergegeven in Afbeelding 42.


Figuur 42: Gegevens vernieuwen in wlslog-tabel

Het aantal items in de lijst is 10, zoals weergegeven in Afbeelding 43, in plaats van de zeven voordat de taak opnieuw wordt gestart. De drie nieuwe items die we hebben toegevoegd, maken het totaal van 10 items.


Figuur 43: 10 items weergeven na het toevoegen van nieuwe items en het vernieuwen van gegevens

De nieuwe gemigreerde gegevens worden onderscheiden van de gegevens die in de 1 worden geladen door een ander voorvoegsel; de gegevens die in de 1 run zijn geladen, hebben het voorvoegsel 59401 in de _id en de gegevens die in de 2 run zijn geladen, hebben het voorvoegsel 59402 . Het Filter optie kan worden gebruikt om alleen de nieuwe gegevens weer te geven, zoals weergegeven in Afbeelding 44.


Figuur 44: Gegevens filteren om slechts drie nieuwe items weer te geven

De taakstatus wordt weer Gestopt nadat de nieuwe gegevens zijn gemigreerd, zoals weergegeven in Afbeelding 45.


Figuur 45: Status wordt Gestopt nadat de volledige lading is voltooid

Een migratie verwijderen

Om een ​​migratie te verwijderen, selecteert u de migratie en klikt u op Verwijderen (zie Afbeelding 46).


Figuur 46: Verwijderen

In de Taak verwijderen dialoogvenster, klik op Verwijderen , zoals weergegeven in Afbeelding 47.


Figuur 47: Taakverificatie verwijderen

De taakstatus wordt Verwijderen , zoals weergegeven in Afbeelding 48, voordat de taak wordt verwijderd.


Figuur 48: Taak verwijderen

Als u een taak verwijdert, worden de gebruikte DMS-eindpunten niet verwijderd; dit betekent dat er een nieuwe taak kan worden gemaakt.

Conclusie

In twee artikelen bespraken we het migreren van een MongoDB-database naar DynamoDB-tabellen met behulp van AWS Database Migration Service.


  1. Ontvang een melding voor gewijzigde documenten in mongodb

  2. Naadloze schaal voor uw MongoDB-servers

  3. Mangoest bevolken ingebed

  4. Maakt de Rentalis Redis-bibliotheek zijn eigen thread voor asynchrone callbacks?