Verwenden von MongoDB als Quelle für AWS DMS - AWS Database Migration Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden von MongoDB als Quelle für AWS DMS

Informationen zu den Versionen von MongoDB, die AWS DMS als Quelle unterstützt, finden Sie unter Quellen für AWS DMS.

Beachten Sie Folgendes im Zusammenhang mit der Unterstützung der MongoDB-Versionen:

  • Die AWS DMS-Versionen 3.4.5 und höher unterstützen die MongoDB-Versionen 4.2 und 4.4.

  • Die AWS DMS-Versionen 3.4.5 und höher sowie die MongoDB-Versionen 4.2 und höher unterstützen verteilte Transaktionen. Weitere Informationen zu verteilten MongoDB-Transaktionen finden Sie unter Transactions in der Dokumentation zu MongoDB.

  • Die AWS DMS-Versionen 3.5.0 und höher unterstützen keine MongoDB-Versionen vor 3.6.

  • Die AWS DMS-Versionen 3.5.1 und höher unterstützen die MongoDB-Version 5.0.

  • Die AWS DMS-Versionen 3.5.2 und höher unterstützen die MongoDB-Version 6.0.

Falls Sie noch keine Erfahrung mit MongoDB haben, beachten Sie die folgenden wichtigen MongoDB-Datenbankkonzepte:

  • Ein Datensatz in MongoDB ist ein Dokument, bei dem es sich um eine Datenstruktur aus Feld-Wert-Paaren handelt. Der Wert eines Felds kann andere Dokumente, Arrays und Dokument-Arrays enthalten. Ein Dokument entspricht etwa einer Zeile in einer relationalen Datenbanktabelle.

  • Eine Sammlung ist in MongoDB eine Gruppe von Dokumente und entspricht in etwa einer Tabelle in einer relationalen Datenbank.

  • Eine Datenbank in MongoDB ist ein Satz von Sammlungen und entspricht in etwa einem Schema in einer relationalen Datenbank.

  • Intern wird ein MongoDB-Dokument als binäre JSON-Datei (BSON) in einem komprimierten Format gespeichert, das einen Typ für jedes Feld im Dokument enthält. Jedes Dokument hat eine eindeutige ID.

AWS DMS unterstützt zwei Migrationsmodi, wenn MongoDB als Quelle verwendet wird: den Dokumentmodus und den Tabellenmodus. Sie geben den zu verwendenden Migrationsmodus während der Erstellung des MongoDB-Endpunkts oder durch Festlegen des Parameters Metadatenmodus in der AWS DMS-Konsole an. Optional können Sie eine zweite Spalte mit der Bezeichnung _id erstellen, die als Primärschlüssel fungiert, indem Sie im Endpunktkonfigurationsbereich das Häkchen für _id als separate Spalte setzen.

Der ausgewählte Migrationsmodus wirkt sich wie nachstehend erläutert auf das resultierende Format der Zieldaten aus.

Dokumentmodus

Im Dokumentmodus wird das MongoDB-Dokument unverändert migriert. Dies bedeutet, dass die Dokumentdaten in einer einzelnen Spalte mit dem Namen _doc in einer Zieltabelle zusammengefasst werden. Der Dokumentmodus ist die Standardeinstellung, wenn Sie MongoDB als Quellendpunkt verwenden.

Nehmen wir als Beispiel die folgenden Dokumente in einer MongoDB-Sammlung mit dem Namen "myCollection".

> db.myCollection.find() { "_id" : ObjectId("5a94815f40bd44d1b02bdfe0"), "a" : 1, "b" : 2, "c" : 3 } { "_id" : ObjectId("5a94815f40bd44d1b02bdfe1"), "a" : 4, "b" : 5, "c" : 6 }

Nach der Migration der Daten in eine relationale Datenbanktabelle mit Dokumentmodus sind die Daten folgendermaßen strukturiert. Die Datenfelder im MongoDB-Dokument sind in der Spalte _doc zusammengefasst.

oid_id _doc
5a94815f40bd44d1b02bdfe0 { "a" : 1, "b" : 2, "c" : 3 }
5a94815f40bd44d1b02bdfe1 { "a" : 4, "b" : 5, "c" : 6 }

Sie können optional den extractDocID des zusätzlichen Verbindungsattributs auf true einstellen, um eine zweite Spalte mit dem Namen "_id" zu erstellen, die als Primärschlüssel fungiert. Sie müssen diesen Parameter auf true setzen, wenn Sie CDC verwenden möchten.

Nachfolgend ist dargestellt, wie AWS DMS die Erstellung und Umbenennung von Sammlungen im Dokumentmodus verwaltet:

  • Wenn Sie eine neue Sammlung zur Quelldatenbank hinzufügen, erstellt AWS DMS eine neue Zieltabelle für die Sammlung und repliziert alle Dokumente.

  • Wenn Sie eine vorhandene Sammlung in der Quelldatenbank umbenennen, benennt AWS DMS die Zieltabelle nicht um.

Wenn der Zielendpunkt Amazon DocumentDB ist, führen Sie die Migration im Dokumentmodus aus.

Tabellenmodus

Im Tabellenmodus wandelt AWS DMS jedes Top-Level-Feld in einem MongoDB-Dokument in eine Spalte in der Zieltabelle um. Wenn ein Feld verschachtelt ist, reduziert AWS DMS die verschachtelten Werte auf eine einzelne Spalte. AWS DMS fügt der Spaltengruppe in der Zieltabelle dann ein Schlüsselfeld und Datentypen hinzu.

Für jedes MongoDB-Dokument fügt AWS DMS jeden Schlüssel und Typ der Spaltengruppe in der Tabelle der Zieldatenbank hinzu. Im Tabellenmodus migriert AWS DMS beispielsweise das vorherige Beispiel in die folgende Tabelle.

oid_id a b c
5a94815f40bd44d1b02bdfe0 1 2 3
5a94815f40bd44d1b02bdfe1 4 5 6

Verschachtelte Werte werden in einer Spalte mit durch Punkte getrennte Schlüsselnamen auf eine Ebene gebracht. Die Spalte erhält als Name die Namensverkettung der reduzierten Felder, die durch Punkte voneinander getrennt sind. Beispiel: AWS DMS migriert ein JSON-Dokument mit einem Feld verschachtelter Werte wie beispielsweise {"a" : {"b" : {"c": 1}}} in eine Spalte mit dem Namen a.b.c..

Zum Erstellen der Zielspalten scannt AWS DMS eine angegebene Anzahl von MongoDB-Dokumenten und erstellt eine Gruppe aller Felder und deren Typen. AWS DMS verwendet diese Gruppe dann, um die Spalten der Zieltabelle zu erstellen. Wenn Sie Ihren MongoDB-Quellendpunkt mithilfe der Konsole erstellen oder ändern, können Sie die Anzahl der zu scannenden Dokumente angeben. Der Standardwert ist 1000 Dokumente. Wenn Sie die AWS CLI verwenden, können Sie das zusätzliche Verbindungsattribut docsToInvestigate verwenden.

Hier sehen Sie, wie AWS DMS Dokumente und Sammlungen im Tabellenmodus verwaltet:

  • Wenn Sie ein Dokument zu einer vorhandenen Sammlung hinzufügen, wird das Dokument repliziert. Wenn es Felder gibt, die am Ziel nicht vorhanden sind, werden diese Felder nicht repliziert.

  • Wenn Sie ein Dokument aktualisieren, wird das aktualisierte Dokument repliziert. Wenn es Felder gibt, die am Ziel nicht vorhanden sind, werden diese Felder nicht repliziert.

  • Das Löschen eines Dokuments wird vollständig unterstützt.

  • Das Hinzufügen einer neuen Sammlung führt nicht zu einer neuen Tabelle in der Zieldatenbank, wenn der Vorgang zeitgleich mit einer CDC-Aufgabe erfolgt.

  • In der Phase der Erfassung von Datenänderungen (Change Data Capture, CDC) unterstützt AWS DMS das Umbenennen einer Sammlung nicht.

Erforderliche Berechtigungen für die Verwendung von MongoDB als Quelle für AWS DMS

Bei einer AWS DMS-Migration mit einer MongoDB-Quelle können Sie entweder ein Benutzerkonto mit Stammverzeichnisberechtigungen oder einen Benutzer nur mit Berechtigungen für die zu migrierende Datenbank erstellen.

Der folgende Code erstellt einen Benutzer als Stammkonto.

use admin db.createUser( { user: "root", pwd: "password", roles: [ { role: "root", db: "admin" } ] } )

Für eine MongoDB-3.x-Quelle wird mit dem folgenden Code ein Benutzer mit minimalen Berechtigungen für die zu migrierende Datenbank erstellt.

use database_to_migrate db.createUser( { user: "dms-user", pwd: "password", roles: [ { role: "read", db: "local" }, "read"] })

Für eine MongoDB-4.x-Quelle wird mit dem folgenden Code ein Benutzer mit minimalen Berechtigungen erstellt.

{ resource: { db: "", collection: "" }, actions: [ "find", "changeStream" ] }

Erstellen Sie beispielsweise die folgende Rolle in der Datenbank „admin“.

use admin db.createRole( { role: "changestreamrole", privileges: [ { resource: { db: "", collection: "" }, actions: [ "find","changeStream" ] } ], roles: [] } )

Nachdem die Rolle erstellt wurde, erstellen Sie einen Benutzer in der zu migrierenden Datenbank.

> use test > db.createUser( { user: "dms-user12345", pwd: "password", roles: [ { role: "changestreamrole", db: "admin" }, "read"] })

Konfigurieren eines MongoDB-Replikatsatzes für CDC

Um die laufende Replikation oder CDC mit MongoDB verwenden zu können, benötigt AWS DMS Zugriff auf das Protokoll der MongoDB-Operationen (Oplog). Zum Erstellen des Protokolls "oplog" müssen Sie einen Replikatsatz bereitstellen, sofern keiner vorhanden ist. Weitere Informationen finden Sie in der MongoDB-Dokumentation.

Sie können CDC mit dem primären oder sekundären Knoten eines MongoDB-Replikatsatzes als Quellendpunkt verwenden.

So wandeln Sie eine eigenständige Instance in einen Replikatsatz um
  1. Stellen Sie über die Befehlszeile eine Verbindung mit mongo her.

    mongo localhost
  2. Stoppen Sie den Service mongod.

    service mongod stop
  3. Starten Sie mongod mit dem folgenden Befehl neu:

    mongod --replSet "rs0" --auth -port port_number
  4. Testen Sie die Verbindung zum Replikatsatz mithilfe der folgenden Befehle:

    mongo -u root -p password --host rs0/localhost:port_number --authenticationDatabase "admin"

Wenn Sie eine Migration im Dokumentmodus durchführen möchten, wählen Sie beim Erstellen des MongoDB-Endpunkts die Option _id as a separate column aus. Bei Auswahl dieser Option wird eine zweite Spalte namens _id erstellt, die als Primärschlüssel fungiert. Diese zweite Spalte wird von AWS DMS zur Unterstützung von DML-Operationen (Data Manipulation Language) benötigt.

Anmerkung

AWS DMS verwendet das Protokoll der Operationen (Oplog), um Änderungen während der laufenden Replikation zu erfassen. Wenn MongoDB die Datensätze aus dem Oplog löscht, bevor sie von AWS DMS gelesen werden, schlagen Ihre Aufgaben fehl. Wir empfehlen, die Oplog-Größe so zu ändern, dass die Änderungen mindestens 24 Stunden lang beibehalten werden.

Sicherheitsanforderungen für die Verwendung von MongoDB als Quelle für AWS DMS

AWS unterstützt zwei Authentifizierungsmethoden für MongoDB. Die beiden Authentifizierungsmethoden werden verwendet, um das Passwort zu verschlüsseln, daher werden sie nur verwendet, wenn der Parameter authType auf PASSWORD festgelegt ist.

Die MongoDB-Authentifizierungsmethoden sind:

  • MONGODB-CR – für die Abwärtskompatibilität

  • SCRAM-SHA-1 – die Standardeinstellung bei Verwendung von MongoDB-Version 3.x und 4.0

Wenn keine Authentifizierungsmethode angegeben ist, verwendet AWS DMS die Standardmethode für die Version der MongoDB-Quelle.

Segmentieren von MongoDB-Sammlungen und parallele Migration

Um die Leistung einer Migrationsaufgabe zu verbessern, unterstützen MongoDB-Quellendpunkte zwei Optionen für paralleles vollständiges Laden bei der Tabellenzuordnung.

Anders ausgedrückt: Sie können eine Sammlung parallel migrieren, indem Sie entweder die automatische Segmentierung oder die Bereichssegmentierung mit der Tabellenzuordnung für paralleles vollständiges Laden in den JSON-Einstellungen verwenden. Mit der automatischen Segmentierung können Sie die Kriterien angeben, nach denen AWS DMS Ihre Migrationsquelle in jedem Thread automatisch segmentieren soll. Mit der Bereichssegmentierung können Sie AWS DMS den spezifischen Bereich jedes Segments mitteilen, den DMS in jedem Thread migrieren soll. Weitere Informationen zu diesen Einstellungen finden Sie unter Regeln und Operationen für Tabellen- und Sammlungseinstellungen.

Parallele Migration einer MongoDB-Datenbank mithilfe von Bereichen für die automatische Segmentierung

Sie können Ihre Dokumente parallel migrieren, indem Sie die Kriterien angeben, nach denen AWS DMS Ihre Daten für jeden Thread automatisch partitionieren (segmentieren) soll. Insbesondere geben Sie die Anzahl an Dokumenten an, die pro Thread migriert werden sollen. Bei diesem Verfahren versucht AWS DMS, die Segmentgrenzen zu optimieren, um eine maximale Leistung pro Thread zu erzielen.

Sie können die Segmentierungskriterien mithilfe der folgenden Tabelleneinstellungsoptionen in der Tabellenzuordnung angeben.

Tabelleneinstellungsoption

Beschreibung

"type"

(Erforderlich) Setzen Sie dies für MongoDB als Quelle auf "partitions-auto".

"number-of-partitions"

(Optional) Gesamtzahl der für die Migration verwendeten Partitionen (Segmente). Der Standardwert ist 16.

"collection-count-from-metadata"

(Optional) Wenn diese Option auf true gesetzt ist, verwendet AWS DMS eine geschätzte Sammlungsanzahl, um die Anzahl von Partitionen zu bestimmen. Wenn die Option auf false gesetzt ist, verwendet AWS DMS die tatsächliche Sammlungsanzahl. Der Standardwert ist true.

"max-records-skip-per-page"

(Optional) Die Anzahl der Datensätze, die bei der Ermittlung der Grenzen für jede Partition gleichzeitig übersprungen werden sollen. AWS DMS verwendet einen Ansatz zum seitenweisen Überspringen, um die Mindestgrenze für eine Partition zu bestimmen. Der Standardwert ist 10 000.

Das Festlegen eines relativ großen Werts kann zu Cursor-Timeouts und Aufgabenfehlern führen. Das Festlegen eines relativ niedrigen Werts führt zu mehr Operationen pro Seite und zu einem langsameren vollständigen Laden.

"batch-size"

(Optional) Begrenzt die Anzahl der in einem Stapel zurückgegebenen Dokumente. Für jeden Stapel ist ein Round-Trip zum Server erforderlich. Wenn die Stapelgröße Null (0) ist, verwendet der Cursor die vom Server definierte maximale Stapelgröße. Der Standardwert ist 0.

Das folgende Beispiel zeigt eine Tabellenzuordnung für die automatische Segmentierung.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "admin", "table-name": "departments" }, "rule-action": "include", "filters": [] }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "admin", "table-name": "departments" }, "parallel-load": { "type": "partitions-auto", "number-of-partitions": 5, "collection-count-from-metadata": "true", "max-records-skip-per-page": 1000000, "batch-size": 50000 } } ] }

Für die automatische Segmentierung gelten die folgenden Einschränkungen. Bei der Migration für die einzelnen Segmente werden die Sammlungsanzahl und der _id-Mindestwert für die Sammlung separat abgerufen. Anschließend wird die Mindestgrenze für dieses Segment anhand eines seitenweisen Überspringens berechnet.

Stellen Sie daher sicher, dass der _id-Mindestwert für jede Sammlung konstant bleibt, bis alle Segmentgrenzen in der Sammlung berechnet wurden. Wenn Sie den _id-Mindestwert für eine Sammlung während der Berechnung der Segmentgrenze ändern, kann dies zu Datenverlust oder zu Fehlern aufgrund von doppelten Zeilen führen.

Parallele Migration einer MongoDB-Datenbank mithilfe der Bereichssegmentierung

Sie können Ihre Dokumente parallel migrieren, indem Sie die Bereiche für jedes Segment in einem Thread angeben. Bei diesem Verfahren teilen Sie AWS DMS in jedem Thread mit, welche spezifischen Dokumente migriert werden sollen, je nachdem, welche Dokumentbereiche Sie pro Thread auswählen.

Die folgende Abbildung zeigt eine MongoDB-Sammlung mit sieben Elementen und _id als Primärschlüssel.

MongoDB-Sammlung mit sieben Elementen

Um die Sammlung in drei spezifische Segmente aufzuteilen, die AWS DMS parallel migrieren kann, können Sie Ihrer Migrationsaufgabe Regeln für die Tabellenzuordnung hinzufügen. Dieses Verfahren wird im folgenden JSON-Beispiel veranschaulicht.

{ // Task table mappings: "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "testdatabase", "table-name": "testtable" }, "rule-action": "include" }, // "selection" :"rule-type" { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "testdatabase", "table-name": "testtable" }, "parallel-load": { "type": "ranges", "columns": [ "_id", "num" ], "boundaries": [ // First segment selects documents with _id less-than-or-equal-to 5f805c97873173399a278d79 // and num less-than-or-equal-to 2. [ "5f805c97873173399a278d79", "2" ], // Second segment selects documents with _id > 5f805c97873173399a278d79 and // _id less-than-or-equal-to 5f805cc5873173399a278d7c and // num > 2 and num less-than-or-equal-to 5. [ "5f805cc5873173399a278d7c", "5" ] // Third segment is implied and selects documents with _id > 5f805cc5873173399a278d7c. ] // :"boundaries" } // :"parallel-load" } // "table-settings" :"rule-type" ] // :"rules" } // :Task table mappings

Mit dieser Definition für die Tabellenzuordnung wird die Quellsammlung in drei Segmente aufgeteilt, die parallel migriert werden. Im Folgenden sind die Segmentierungsgrenzen aufgeführt.

Data with _id less-than-or-equal-to "5f805c97873173399a278d79" and num less-than-or-equal-to 2 (2 records) Data with _id > "5f805c97873173399a278d79" and num > 2 and _id less-than-or-equal-to "5f805cc5873173399a278d7c" and num less-than-or-equal-to 5 (3 records) Data with _id > "5f805cc5873173399a278d7c" and num > 5 (2 records)

Nach Abschluss der Migrationsaufgabe können Sie anhand der Aufgabenprotokolle überprüfen, ob die Tabellen parallel geladen wurden, wie im folgenden Beispiel gezeigt. Sie können auch die zum Entladen der einzelnen Segmente aus der Quelltabelle verwendete MongoDB-Klausel find überprüfen.

[TASK_MANAGER ] I: Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86 (replicationtask_util.c:752) [SOURCE_UNLOAD ] I: Range Segmentation filter for Segment #0 is initialized. (mongodb_unload.c:157) [SOURCE_UNLOAD ] I: Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } } (mongodb_unload.c:328) [SOURCE_UNLOAD ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent. [TASK_MANAGER ] I: Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86 (replicationtask_util.c:752) [SOURCE_UNLOAD ] I: Range Segmentation filter for Segment #0 is initialized. (mongodb_unload.c:157) [SOURCE_UNLOAD ] I: Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } } (mongodb_unload.c:328) [SOURCE_UNLOAD ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent. [TARGET_LOAD ] I: Load finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 1 rows received. 0 rows skipped. Volume transfered 480. [TASK_MANAGER ] I: Load finished for segment #1 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. 2 records transferred.

AWS DMS unterstützt derzeit die folgenden MongoDB-Datentypen als Segmentschlüsselspalte:

  • Double

  • String

  • ObjectId

  • 32-Bit-Ganzzahl

  • 64-Bit-Ganzzahl

Migration mehrerer Datenbanken bei Verwendung von MongoDB als Quelle für AWS DMS

Die AWS DMS-Versionen 3.4.5 und höher unterstützen die Migration von mehreren Datenbanken in einer einzigen Aufgabe für alle unterstützten MongoDB-Versionen. Gehen Sie wie folgt vor, um mehrere Datenbanken zu migrieren:

  1. Wenn Sie den MongoDB-Quellendpunkt erstellen, führen Sie eine der folgenden Aktionen aus:

    • Stellen Sie sicher, dass das Feld Datenbankname unter Endpunktkonfiguration auf der Seite Endpunkt erstellen der DMS-Konsole leer ist.

    • Weisen Sie dem Parameter DatabaseName in MongoDBSettings mithilfe des AWS CLI-Befehls CreateEndpoint einen leeren Zeichenfolgenwert zu.

  2. Geben Sie für jede Datenbank, die Sie aus einer MongoDB-Quelle migrieren möchten, den Datenbanknamen als Schemanamen in der Tabellenzuordnung für die Aufgabe an. Sie können dies entweder mithilfe der geführten Eingabe in der Konsole oder direkt in JSON vornehmen. Weitere Informationen zur geführten Eingabe finden Sie unter Festlegen der Tabellenauswahl und der Transformationsregeln über die Konsole. Weitere Informationen zu JSON finden Sie unter Auswahlregeln und Aktionen.

Sie können beispielsweise die folgende JSON-Struktur angeben, um drei MongoDB-Datenbanken zu migrieren.

Beispiel Migrieren aller Tabellen in einem Schema

Die folgende JSON-Struktur migriert alle Tabellen aus den Datenbanken Customers, Orders und Suppliers im Quellendpunkt zum Zielendpunkt.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Customers", "table-name": "%" }, "rule-action": "include", "filters": [] }, { "rule-type": "selection", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "Orders", "table-name": "%" }, "rule-action": "include", "filters": [] }, { "rule-type": "selection", "rule-id": "3", "rule-name": "3", "object-locator": { "schema-name": "Inventory", "table-name": "%" }, "rule-action": "include", "filters": [] } ] }

Einschränkungen bei der Verwendung von MongoDB als Quelle für AWS DMS

Die folgenden Einschränkungen gelten bei der Verwendung von MongoDB als Quelle für AWS DMS:

  • Im Tabellenmodus müssen die Dokumente in einer Sammlung hinsichtlich des Datentyps, den sie für den Wert im gleichen Feld verwenden, konsistent sein. Wenn ein Dokument in einer Sammlung beispielsweise '{ a:{ b:value ... }' enthält, müssen alle Dokumente in der Sammlung, die auf den value des Felds a.b verweisen, denselben Datentyp für value verwenden, wo immer er in der Sammlung vorkommt.

  • Wenn die Option _id als separate Spalte gesetzt ist, darf der ID-String 200 Zeichen nicht überschreiten.

  • Objekt-ID und Array-Schlüssel werden in Spalten konvertiert, die mit dem Präfix oid und array im Tabellenmodus versehen sind.

    Intern wird auf diese Spalten mit den mit Präfix versehenen Namen verwiesen. Wenn Sie in AWS DMS Transformationsregeln verwenden, die auf diese Spalten verweisen, geben Sie unbedingt den mit Präfix versehenen Spaltennamen an. Sie geben z. B. ${oid__id} statt ${_id} oder ${array__addresses} und nicht ${_addresses} an.

  • Namen von Sammlungen und Schlüsseln dürfen das Dollarzeichen ($) nicht enthalten.

  • Im Tabellenmodus mit einem RDBMS-Ziel unterstützt AWS DMS keine Sammlungen, die das gleiche Feld mit unterschiedlicher Schreibweise (Groß-/Kleinschreibung) enthalten. Beispielsweise unterstützt AWS DMS nicht zwei Sammlungen mit den Namen Field1 und field1.

  • Der Tabellenmodus und der Dokumentmodus haben die oben beschriebenen Einschränkungen.

  • Für die parallele Migration mithilfe der automatischen Segmentierung gelten die oben beschriebenen Einschränkungen.

  • Quellfilter werden für MongoDB nicht unterstützt.

  • AWS DMS unterstützt keine Dokumente mit einer größeren Verschachtelungsebene als 97.

  • AWS DMS unterstützt die folgenden Features der MongoDB-Version 5.0 nicht:

    • Live-Resharding

    • Clientseitige Verschlüsselung auf Feldebene (Client-Side Field Level Encryption, CSFLE)

    • Migration von Zeitreihen-Sammlungen

      Anmerkung

      Eine in der Phase des vollständigen Ladens migrierte Zeitreihen-Sammlung wird in Amazon DocumentDB in eine normale Sammlung konvertiert, da DocumentDB keine Zeitreihen-Sammlungen unterstützt.

Einstellungen für die Endpunktkonfiguration bei Verwendung von MongoDB als Quelle für AWS DMS

Wenn Sie Ihren MongoDB-Quellendpunkt einrichten, können Sie mithilfe der AWS DMS-Konsole mehrere Einstellungen für die Endpunktkonfiguration festlegen.

In der folgenden Tabelle werden die verfügbaren Konfigurationseinstellungen bei Verwendung von MongoDB-Datenbanken als AWS DMS-Quelle beschrieben.

Einstellung (Attribut) Zulässige Werte Standardwert und Beschreibung

Authentifizierungsmodus

"none"

"password"

Der Wert "password" fordert zur Eingabe eines Benutzernamens und eines Passworts auf. Wenn "none" angegeben ist, werden die Parameter Benutzername und Passwort nicht verwendet.

Authentifizierungsquelle

Ein gültiger MongoDB-Datenbankname.

Der Name der MongoDB-Datenbank, die Sie verwenden möchten, um Ihre Anmeldeinformationen für die Authentifizierung zu überprüfen. Der Standardwert ist "admin".

Authentifizierungsmechanismus

"default"

"mongodb_cr"

"scram_sha_1"

Der Authentifizierungsmechanismus. Der Wert von "default" ist "scram_sha_1". Diese Einstellung wird nicht verwendet, wenn authType auf "no" festgelegt ist.

Metadatenmodus

Dokument und Tabelle

Zur Auswahl von Dokument- oder Tabellenmodus

Anzahl der zu scannenden Dokumente (docsToInvestigate)

Eine positive Ganzzahl größer als 0.

Verwenden Sie diese Option nur im Tabellenmodus, um die Zieltabellendefinition zu definieren.

_id als separate Spalte

Häkchen im Kästchen

Optionales Auswahlfeld, mit dem eine zweite Spalte mit der Bezeichnung _id erstellt wird, die als Primärschlüssel fungiert.

socketTimeoutMS

NUMBER

Nur zusätzliches Verbindungsattribut (Extra Connection Attribute, ECA)

Diese Einstellung wird in Millisekunden angegeben und konfiguriert das Verbindungs-Timeout für MongoDB-Clients. Wenn der Wert kleiner oder gleich Null ist, wird der Standardwert des MongoDB-Clients verwendet.

UseUpdateLookUp

boolesch

true

false

Wenn Sie true festlegen, kopiert AWS DMS während CDC-Aktualisierungsereignissen das gesamte aktualisierte Dokument in das Ziel. Wenn Sie false festlegen, verwendet AWS DMS den MongoDB-Aktualisierungsbefehl, um nur geänderte Felder im Dokument im Ziel zu aktualisieren.

ReplicateShardCollections

boolesch

true

false

Wenn Sie true festlegen, repliziert AWS DMS Daten in Shard-Sammlungen. AWS DMS verwendet diese Einstellung nur, wenn es sich beim Zielendpunkt um einen elastischen DocumentDB-Cluster handelt.

Wenn Sie für diese Einstellung true festlegen, beachten Sie Folgendes:

  • Sie müssen TargetTablePrepMode auf nothing setzen.

  • AWS DMS setzt useUpdateLookup automatisch auf false.

Wenn Sie Dokument als Metadatenmodus auswählen, sind verschiedene Optionen verfügbar.

Wenn der Zielendpunkt DocumentDB ist, führen Sie die Migration unbedingt im Dokumentmodus aus. Ändern Sie außerdem Ihren Quellendpunkt und wählen Sie die Option _id als separate Spalte aus. Dies ist eine zwingende Voraussetzung, wenn Ihr MongoDB-Quell-Workload Transaktionen beinhaltet.

Quelldatentypen für MongoDB

Eine Datenmigration, bei der MongoDB als Quelle für AWS DMS verwendet wird, unterstützt die meisten MongoDB-Datentypen. In der folgenden Tabelle sind die MongoDB-Quelldatentypen, die bei Verwendung von AWS DMS unterstützt werden, sowie deren Standardzuweisung von AWS DMS-Datentypen aufgeführt. Weitere Informationen zu MongoDB-Datentypen finden Sie unter BSON-Typen in der MongoDB-Dokumentation.

Weitere Informationen zum Anzeigen des Datentyps, der im Ziel zugewiesen ist, finden Sie im Abschnitt für den Zielendpunkt, den Sie verwenden.

Weitere Informationen zu AWS DMS-Datentypen finden Sie unter Datentypen für den AWS Database Migration Service.

MongoDB-Datentypen

AWS DMS-Datentypen

Boolesch

Bool

Binär

BLOB

Datum

Datum

Zeitstempel

Datum

Int

INT4

Long

INT8

Double

REAL8

String (UTF-8)

CLOB

Array

CLOB

OID

String

REGEX

CLOB

CODE

CLOB