MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Migrieren von MongoDB zu DynamoDB, Teil 2

Der AWS Database Migration Service (DMS) hat 2017 Unterstützung für zwei NoSQL-Datenbanken hinzugefügt:MongoDB als Quelldatenbank und AWS DynamoDB als Zieldatenbank. In einem aus zwei Artikeln bestehenden Tutorial migrieren wir eine MongoDB-Datenbank zu DynamoDB auf DMS. Im ersten Artikel „Migration von MongoDB zu DynamoDB, Teil 1“ haben wir einen MongoDB-Replikatsatz und eine DynamoDB-Tabelle erstellt. In diesem Fortsetzungsartikel werden wir das Erstellen und Ausführen einer DMS-Migration zum Migrieren von Daten besprechen.

Dieser Artikel hat die folgenden Abschnitte:

  • Erstellen einer DMS-Migration
  • Migration ausführen
  • Migration fortsetzen
  • Migration löschen
  • Schlussfolgerung

Erstellen einer DMS-Migration

Als Nächstes erstellen wir eine DMS-Migration, um die MongoDB-Datenbank zu DynamoDB zu migrieren. Melden Sie sich als der für DMS erstellte IAM-Benutzer (dvohra oder andere) an und wählen Sie DMS in der AWS-Managementkonsole aus. Klicken Sie auf Migration erstellen im DMS-Dashboard, wie in Abbildung 1 gezeigt.


Abbildung 1: Migration erstellen

Klicken Sie auf der DMS-Willkommensseite auf Weiter, wie in Abbildung 2 gezeigt.


Abbildung 2: Willkommen>Weiter

Die Replikationsinstanz erstellen Das Dialogfeld wird angezeigt, wie in Abbildung 3 gezeigt, in dem wir eine Replikationsinstanz konfigurieren, um die Verbindungen zwischen den Quell- und Zieldatenbanken zu initiieren, die Daten zu übertragen und alle Änderungen in der Quelldatenbank während des anfänglichen Ladevorgangs zwischenzuspeichern.


Abbildung 3: Replikationsinstanz erstellen

Geben Sie den Namen der Replikationsinstanz in Name an Wählen Sie im Feld Instanzklasse aus , wählen Sie eine VPC aus , und wählen Sie die Option aus, ob ein Multi-AZ Replikationsinstanz erstellt werden soll. Beschreibung , das in konfigurierbaren Einstellungen normalerweise optional ist, ist ein erforderliches Feld. Die Standardeinstellungen werden für alle diese Felder mit Ausnahme der VPC bereitgestellt. Die verwendeten Replikationsinstanzeinstellungen sind in Abbildung 4 dargestellt.


Abbildung 4: Einstellungen der Replikationsinstanz

Wählen Sie die Option aus, um die Replikationsinstanz Öffentlich zugänglich zu machen und klicken Sie auf Erweitert um erweiterte Parameter zu konfigurieren, wie in Abbildung 5 gezeigt.


Abbildung 5: Replikationsinstanz als öffentlich zugänglich festlegen

Unter Erweitert Abschnitt werden Standardeinstellungen für alle Felder bereitgestellt (siehe Abbildung 6).


Abbildung 6: Erweiterte Einstellungen

Die Standardeinstellungen, mit Ausnahme des KMS-Masterschlüssels, der auf den Verschlüsselungsschlüssel (dms) gesetzt werden muss, der vor der Anmeldung als IAM-Benutzer (dvohra) erstellt wurde, sind für jede Replikationsinstanz geeignet, wie in Abbildung 7 gezeigt. Klicken Sie auf Weiter.


Abbildung 7: Erweiterte Einstellungen>Weiter

Die Replikationsinstanz wird erstellt, wie durch die in Abbildung 8 gezeigte Meldung angezeigt. Geben Sie als Nächstes die Datenbankendpunkte an, während die Replikationsinstanz erstellt wird. Die Datenbankendpunkte können jedoch erst getestet werden, wenn die Replikationsinstanz erstellt wurde.


Abbildung 8: Replikationsinstanz wird erstellt

Für die Quell-Engine , wählen Sie die mongodb aus Datenbank, wie in Abbildung 9 gezeigt.


Abbildung 9: Quell-Engine als mongodb auswählen

Für die Target-Engine , wählen Sie dynamodb aus Datenbank, wie in Abbildung 10 gezeigt.


Abbildung 10: Auswahl der Ziel-Engine als dynamodb

Die Endpunktkennung kann sowohl für die Quell- als auch für die Zieldatenbank als Standard beibehalten werden, aber die anderen Verbindungsparameter müssen angegeben werden. Für die Verbindungsdetails der Quelldatenbank , geben Sie den Servernamen an als private IP (Abbildung 21 im ersten Artikel, „Migration von MongoDB zu DynamoDB, Teil 1“) der CoreOS EC2-Instance, auf der der MongoDB-Replikatsatz mit Docker gestartet wird, und geben Sie Port an als 27017 (siehe Abbildung 11). Wählen Sie „keine“ für SSL-Modus und Authentifizierungsmodus . Geben Sie Datenbankname an als Test und wählen Sie Authentifizierungsmechanismus aus als Standard .


Abbildung 11: Verbindungsdetails der Quelldatenbank

Für die Quelldatenbank-Engine mongodb , wählen Sie Metadatenmodus aus als Dokument und wählen Sie die Option _id als eigene Spalte , wie in Abbildung 12 gezeigt. Der Test ausführen Schaltflächen werden zum Testen der Quell- und Zieldatenbankverbindungen verwendet und erst aktiviert, wenn die Replikationsinstanz erstellt wurde.


Abbildung 12: Andere Einstellungen für die Source Engine

Kopieren Sie den Rollen-ARN für die dms-vpc-Rolle aus der IAM-Konsole, wie in Abbildung 13 gezeigt. Der Rollen-ARN muss zum Definieren der Zieldatenbankverbindung für die DMS-Migration verwendet werden.


Abbildung 13: Rollen-ARN kopieren

Kopieren Sie den Rollen-ARN und fügen Sie ihn in den Dienstzugriffsrollen-ARN ein Feld, wie in Abbildung 14 gezeigt.


Abbildung 14: Dienstzugriffsrolle ARN

Wenn die Replikationsinstanz erstellt wurde, wird eine entsprechende Meldung angezeigt, wie in Abbildung 15 gezeigt.


Abbildung 15: Replikationsinstanz erstellt

Klicken Sie für die Zieldatenbank auf Test ausführen um die Verbindung zu testen. Wenn eine Verbindung hergestellt wird, sollte die Meldung „Verbindung erfolgreich getestet“ angezeigt werden (siehe Abbildung 16).


Abbildung 16: Zieldatenbankverbindung erfolgreich getestet

Klicken Sie in ähnlicher Weise auf Test ausführen für die Quelldatenbank, und die Meldung „Verbindung erfolgreich getestet“ sollte angezeigt werden, wenn eine Verbindung hergestellt wird, wie in Abbildung 17 gezeigt.


Abbildung 17: Quelldatenbankverbindung erfolgreich getestet

Klicken Sie unter Datenbank-Endpunkte auf Weiter , wie in Abbildung 18 gezeigt.


Abbildung 18: Datenbankendpunkte>Weiter

Konfigurieren Sie als Nächstes eine Migrationsaufgabe in der Aufgabe erstellen Seite. Eine Aufgabe besteht aus mehreren Einstellungen, darunter Aufgabenname, Aufgabenbeschreibung, Quellendpunkt, Zielendpunkt, Replikationsinstanz, Migrationstyp, Aufgabeneinstellungen, Tabellenzuordnungen und erweiterte Einstellungen. Die Standardeinstellungen für Aufgabenname und die nicht änderbaren Einstellungen für den Quellendpunkt , Zielendpunkt , Replikationsinstanz und Migrationstyp sind in Abbildung 19 dargestellt.


Abbildung 19: Aufgabeneinstellungen erstellen

Fügen Sie eine passende Beschreibung hinzu und wählen Sie einen Migrationstyp aus aus der in Abbildung 20 gezeigten Dropdown-Liste. Die verschiedenen Optionen für den Migrationstyp sind Vorhandene Daten migrieren , Vorhandene Daten migrieren und laufende Änderungen replizieren und Nur Datenänderungen replizieren . Um vorhandene Daten von MongoDB zu DynamoDB mit der Bereitstellung zum Replizieren laufender Änderungen zu migrieren, wählen Sie Vorhandene Daten migrieren und laufende Änderungen replizieren aus . Eine einmal erstellte Migrationsaufgabe kann nachträglich geändert werden, mit Ausnahme des Migrationstyps Einstellung, die nicht geändert werden kann, nachdem eine Migrationsaufgabe erstellt wurde. Wählen Sie daher den Migrationstyp, indem Sie davon ausgehen, dass es sich um eine dauerhafte Einstellung handelt.


Abbildung 20: Auswahl des Migrationstyps

Wählen Sie Aufgabeneinstellungen aus für den Zieltabellen-Vorbereitungsmodus , Task anhalten, nachdem der vollständige Ladevorgang abgeschlossen ist , LOB-Spalten in die Replikation einbeziehen und Protokollierung aktivieren (siehe Abbildung 21).


Abbildung 21: Aufgabeneinstellungen

Klicken Sie auf Erweiterte Einstellungen , wie in Abbildung 22 gezeigt, um erweiterte Einstellungen zu konfigurieren, darunter Steuertabelle Einstellungen und Tuning die Einstellungen. Die standardmäßigen erweiterten Einstellungen können beibehalten werden.


Abbildung 22: Erweiterte Einstellungen

In Tabellenzuordnungen , konfigurieren Sie Auswahlregeln, wie in Abbildung 23 gezeigt. Mindestens eine Auswahlregel mit einem Include Handeln ist erforderlich. Wählen Sie einen Schemanamen aus (Test) in der DMS-Quelle MongoDB. Der Schemaname ist derselbe wie der Name einer MongoDB-Datenbank, also test . Geben Sie Tabellenname ist wie als an ‘%’, das alle Tabellen auswählt. Eine Tabelle wird auch als Sammlung bezeichnet in MongoDB. Wählen Sie Aktion aus als Einschließen , die die durch eine Auswahlregel ausgewählten Objekte enthält. Ausschlussaktionen werden nach Einschlussaktionen verarbeitet.


Abbildung 23: Tabellenzuordnungen

Quellfilter zur Begrenzung der Anzahl und Art der von der Quelle zum Ziel übertragenen Datensätze können ebenfalls konfiguriert werden. Klicken Sie auf Auswahlregel hinzufügen , wie in Abbildung 24 gezeigt.


Abbildung 24: Auswahlregel hinzufügen

Transformationsregeln können hinzugefügt werden, um Großbuchstaben/Kleinbuchstaben zu erstellen und Präfix-/Suffix-Transformationen hinzuzufügen/zu entfernen. Wenn die Protokollierung aktiviert wurde, erstellt DMS eine Rolle für die Protokollierung bei CloudWatch. Durch das Erstellen einer Aufgabe werden implizit die Berechtigungen erteilt, die für den Zugriff auf und die Protokollierung bei CloudWatch erforderlich sind. Klicken Sie auf Aufgabe erstellen , wie in Abbildung 25 gezeigt.


Abbildung 25: Aufgabe erstellen

Eine Migrationsaufgabe wird erstellt (siehe Abbildung 26). Anfänglich der Status ist „Erschaffen“. Der Status sollte automatisch aktualisiert werden und die Option, auf die Schaltfläche „Aktualisieren“ zu klicken, um den Status regelmäßig zu aktualisieren, wird ebenfalls bereitgestellt.


Abbildung 26: Die Migrationsaufgabe wird erstellt

Wenn eine Aufgabe erstellt wird, wird der Status Bereit wird , wie in Abbildung 27 gezeigt.


Abbildung 27: Aufgabenstatus Bereit

Eine IAM-Rolle für CloudWatch-Zugriff und -Protokollierung wird automatisch erstellt, wie in Abbildung 28 gezeigt.


Abbildung 28: IAM-Rolle für CloudWatch Logs

Migration ausführen

Um die Migrationsaufgabe auszuführen, klicken Sie auf Starten/Fortsetzen , wie in Abbildung 29 gezeigt.


Abbildung 29: Aufgabe starten/fortsetzen

Der Aufgabenstatus wird zu Wird gestartet , wie in Abbildung 30 gezeigt.


Abbildung 30: Aufgabe wird gestartet

Wenn die Ausführung der Aufgabe abgeschlossen ist, werden die Tabellen geladen Spalte listet die Anzahl der geladenen Tabellen als 1 auf, der Status wird Gestoppt , Das Vollständige % sollte 100 anzeigen , wie in Abbildung 31 gezeigt. Als Typ Spalte zeigt an, dass der Migrationstyp Vollständiger Ladevorgang und fortlaufende Replikation ist .


Abbildung 31: Vollständiges Laden abgeschlossen

Zusätzlich zu den geladenen Tabellen Spalte Tabellen werden geladen , Tische in Warteschlange , und Tabellenfehler werden ebenfalls aufgelistet, wie in Abbildung 32 gezeigt.


Abbildung 32: Tabellen werden geladen, Tabellen in die Warteschlange gestellt und Tabellen fehlerhaft sind alle 0

In DynamoDB ist das wlslog Tabelle listet sieben Elemente auf, wie in Abbildung 33 gezeigt. Zwei weitere Tabellen, awsdms_apply_exceptions und awsdms_full_load_exceptions , werden ebenfalls automatisch erstellt. Die Tabelle awsdms_apply_exceptions enthält Ausnahmedetails, einschließlich Fehlername und -beschreibung, die Anweisung, die ausgeführt wurde, als der Fehler auftrat, den Namen der Aufgabe, den Tabelleneigentümer, den Tabellennamen und den Zeitpunkt der Ausnahme. Die Tabelle awsdms_full_load_exceptions enthält Informationen zu Ausnahmen, die nach einem vollständigen Ladevorgang generiert werden.


Abbildung 33: Die wlslog-Tabelle enthält sieben Elemente

Klicken Sie auf eine _id um das Dokument anzuzeigen (_doc Attributwert), wie in Abbildung 34 gezeigt.


Abbildung 34: Dokument für ein in DynamoDB gespeichertes Element

Der DynamoDB-Filter kann zum Filtern der Suche verwendet werden. Suchen Sie beispielsweise nach einer bestimmten _id durch Angabe von _id als Feld, indem Sie String auswählen als Feldtyp, Auswahl von „=“ als Filteroperator und Angabe der _id die Suche nach, wie in Abbildung 35 gezeigt. Klicken Sie auf Suche starten .


Abbildung 35: Anwenden eines Filters

Die DynamoDB-Tabellenzeilendaten für die _id angegeben wird aufgelistet (siehe Abbildung 36).


Abbildung 36: Gefilterte Daten für bestimmte _id

Nachdem eine Migrationsaufgabe die Migration einer Datenbank abgeschlossen hat, wird der Aufgabenstatus zu Gestoppt , aber die Migrationsendpunkte sind immer noch Aktiv , wie in Abbildung 37 gezeigt.


Abbildung 37: Endpunkte aktiv, selbst nachdem die Migration abgeschlossen und die Aufgabe gestoppt wurde

Migration fortsetzen

Eine angehaltene Migrationsaufgabe kann neu gestartet oder fortgesetzt werden. Im Folgenden sind einige der Gründe für das Fortsetzen oder Neustarten einer Aufgabe aufgeführt:

  • Ein neues Dokument wurde zu einer bestehenden Sammlung hinzugefügt (auch Tabelle genannt ) in der DMS-Quelldatenbank MongoDB
  • Eine neue Sammlung (Tabelle) wurde in der MongoDB-Datenbank hinzugefügt
  • Die Migration muss mit anderen Auswahlregeln erneut durchgeführt werden, was beispielsweise erforderlich sein könnte, wenn ein Tabellenpräfix mit einer Transformationsregel hinzugefügt werden soll.

Fügen Sie beispielsweise drei weitere Dokumente zum wlslog hinzu Sammlung in der 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])

Wie die Ausgabe in Abbildung 38 zeigt, werden die drei Dokumente hinzugefügt.


Abbildung 38: Hinzufügen von drei weiteren Dokumenten

Klicken Sie auf Start/Fortsetzen um eine angehaltene Aufgabe fortzusetzen, wie in Abbildung 39 gezeigt.


Abbildung 39: Starten/Fortsetzen für angehaltene Aufgabe

In der Aufgabe starten Dialog stehen zwei Optionen zur Verfügung:Start oder Neu starten . Der Start Option startet die Aufgabe und lädt neue Tabellen oder Sammlungen, die der DMS-Quelle hinzugefügt wurden. Der Start Option lädt auch jede Tabelle, die in einem vorherigen Lauf nur teilweise geladen wurde. Der Start Option lädt keine Daten (neu oder alt) in eine Tabelle, die bereits vollständig in die Zieldatenbank geladen wurde. Der Neustart Option startet eine Aufgabe neu und löscht vorhandene Daten in der Zieldatenbank und startet den vollständigen Ladevorgang neu. Tatsächlich der Neustart Option lädt neue Daten, die zu bestehenden Tabellen hinzugefügt wurden, zusätzlich zum Laden aller neuen Tabellen, die in der DMS-Quelle hinzugefügt wurden. Da wir neue Daten zu einer bestehenden Tabelle hinzugefügt haben, müssen wir den Neustart auswählen Option und klicken Sie auf Aufgabe starten , wie in Abbildung 40 gezeigt.


Abbildung 40: Aufgabe neu starten

Die Aufgabe wird neu gestartet, löscht vorhandene Tabelle(n) in der Zieldatenbank und lädt alle Daten aus der Quelldatenbank, um sie auf die Datenbank abzuzielen. Wenn das Laden der Daten abgeschlossen ist, lautet der Aufgabenstatus Laden abgeschlossen (siehe Abbildung 41).


Abbildung 41: Laden abgeschlossen

Klicken Sie in DynamoDB auf die Schaltfläche „Aktualisieren“, wie in Abbildung 42 gezeigt.


Abbildung 42: Aktualisieren der Daten in der wlslog-Tabelle

Die Anzahl der aufgelisteten Elemente ist 10, wie in Abbildung 43 gezeigt, anstelle der sieben vor dem Neustart der Aufgabe. Die drei neuen Artikel, die wir hinzugefügt haben, machen die Artikel insgesamt 10.


Abbildung 43: 10 Artikel auflisten, nachdem neue Artikel hinzugefügt und Daten aktualisiert wurden

Die neu migrierten Daten werden von den im 1. Lauf geladenen Daten durch ein anderes Präfix unterschieden; die im 1. Durchlauf geladenen Daten haben das Präfix 59401 in der _id und die im 2. Durchlauf geladenen Daten haben das Präfix 59402 . Der Filter Option verwendet werden, um nur die neuen Daten aufzulisten, wie in Abbildung 44 gezeigt.


Abbildung 44: Filtern von Daten, um nur drei neue Elemente aufzulisten

Der Aufgabenstatus wird wieder zu Gestoppt nachdem die neuen Daten migriert wurden, wie in Abbildung 45 gezeigt.


Abbildung 45: Der Status wird angehalten, nachdem der vollständige Ladevorgang abgeschlossen ist

Migration löschen

Um eine Migration zu löschen, wählen Sie die Migration aus und klicken Sie auf Löschen (siehe Abbildung 46).


Abbildung 46: Löschen

In der Aufgabe löschen Klicken Sie im Dialogfeld auf Löschen , wie in Abbildung 47 gezeigt.


Abbildung 47: Aufgabenüberprüfung löschen

Der Aufgabenstatus wird zu Wird gelöscht , wie in Abbildung 48 gezeigt, bevor die Aufgabe gelöscht wird.


Abbildung 48: Aufgabe löschen

Durch das Löschen einer Aufgabe werden die verwendeten DMS-Endpunkte nicht gelöscht; das bedeutet, dass eine neue Aufgabe erstellt werden kann.

Schlussfolgerung

In zwei Artikeln haben wir die Migration einer MongoDB-Datenbank zu DynamoDB-Tabellen mithilfe von AWS Database Migration Service besprochen.