Tutorial: Offlinemigration von MongoDB zur Azure Cosmos DB-API für MongoDB mithilfe nativer MongoDB-Tools
GILT FÜR: MongoDB
Wichtig
Lesen Sie den gesamten Leitfaden, bevor Sie die Migrationsschritte ausführen.
Dieser MongoDB-Migrationsleitfaden ist Teil der Reihe zur MongoDB-Migration. Die wichtigen MongoDB-Migrationsschritte umfassen die Migrationsvorbereitung, die Migration selbst und die Schritte nach der Migration, wie nachfolgend dargestellt.
Übersicht über die Datenmigration mithilfe nativer MongoDB-Tools
Sie können native MongoDB-Tools verwenden, um eine (einmalige) Offlinemigration von Datenbanken aus einer lokalen oder cloudbasierten MongoDB-Instanz zur Azure Cosmos DB-API für MongoDB durchzuführen.
In diesem Tutorial lernen Sie Folgendes:
- Auswählen des passenden nativen MongoDB-Tools für Ihren Anwendungsfall
- Ausführen der Migration
- Überwachen der Migration
- Vergewissern, dass die Migration erfolgreich ausgeführt wurde
In diesem Tutorial wird ein Dataset in MongoDB, das auf einem virtuellen Azure-Computer gehostet wird, mithilfe nativer MongoDB-Tools zur Azure Cosmos DB-API für MongoDB migriert. Bei den nativen MongoDB-Tools handelt es sich um Binärdateien zur Vereinfachung der Datenbearbeitung für eine vorhandene MongoDB-Instanz. Da von Azure Cosmos DB eine API für MongoDB verfügbar gemacht wird, können über die nativen MongoDB-Tools Daten in Azure Cosmos DB eingefügt werden. Der Schwerpunkt dieses Dokuments liegt auf der Migration von Daten aus einer MongoDB-Instanz mithilfe von mongoexport/mongoimport oder mongodump/mongorestore. Da die nativen Tools mithilfe von Verbindungszeichenfolgen mit MongoDB verbunden werden, können Sie die Tools überall ausführen. Zur Vermeidung von Firewallproblemen empfiehlt es sich jedoch, die Tools innerhalb des gleichen Netzwerks auszuführen wie die MongoDB-Instanz.
Die Geschwindigkeit, mit der Daten von den nativen MongoDB-Tools verschoben werden können, hängt von der Hosthardware ab. Für kleine Datasets, bei denen die Gesamtmigrationszeit keine Rolle spielt, können die nativen Tools die einfachste Lösung sein. Wenn Sie eine skalierbare Migrationspipeline benötigen, sind MongoDB-Spark-Connector, Azure Database Migration Service (DMS) und Azure Data Factory (ADF) ggf. bessere Alternativen.
Wenn Sie noch keine MongoDB-Quelle eingerichtet haben, lesen Sie den Artikel Installieren und Konfigurieren von MongoDB auf einem virtuellen Windows-Computer in Azure.
Voraussetzungen
Für dieses Tutorial benötigen Sie Folgendes:
- Führen Sie die Schritte zur Migrationsvorbereitung aus. Schätzen Sie beispielsweise den Durchsatz, und wählen Sie einen Partitionsschlüssel und die Indizierungsrichtlinie aus.
- Erstellen eines Azure Cosmos DB for MongoDB-Kontos.
- Melden Sie sich bei Ihrer MongoDB-Instanz an.
- Laden Sie unter diesem Link die nativen MongoDB-Tools herunter, und installieren Sie sie.
- Vergewissern Sie sich, dass die Version Ihrer nativen MongoDB-Tools der Version Ihrer vorhandenen MongoDB-Instanz entspricht.
- Sollte sich die Version Ihrer MongoDB-Instanz von der Azure Cosmos DB for MongoDB-Version unterscheiden, installieren Sie beide Versionen der nativen MongoDB-Tools, und verwenden Sie die jeweilige Toolversion für MongoDB bzw. Azure Cosmos DB for MongoDB.
- Fügen Sie einen Benutzer mit Berechtigungen vom Typ
readWrite
hinzu, sofern noch keiner vorhanden ist. Der Benutzername und das Kennwort müssen später in diesem Tutorial für die Tools mongoexport und mongodump angegeben werden.
- Laden Sie unter diesem Link die nativen MongoDB-Tools herunter, und installieren Sie sie.
Konfigurieren serverseitiger Wiederholungen für Azure Cosmos DB
Kunden, die von MongoDB zu Azure Cosmos DB migrieren, profitieren von Ressourcengovernancefunktionen, die die vollständige Nutzung Ihres bereitgestellten Durchsatzes (RU/s) garantieren. Von Azure Cosmos DB können im Laufe der Migration ggf. Anforderungen gedrosselt werden, wenn bei ihnen die vom Container bereitgestellte Menge an RU/s überschritten wird. In diesem Fall muss die Anforderung wiederholt werden. Die Roundtripzeit für den Netzwerkhop zwischen dem Migrationstool und Azure Cosmos DB wirkt sich nachteilig auf die Gesamtreaktionszeit der betroffenen Anforderung aus. Außerdem werden von den nativen MongoDB-Tools unter Umständen keine Wiederholungen abgewickelt. Das Feature Serverseitige Wiederholung von Azure Cosmos DB ermöglicht es dem Dienst, drosselungsbedingte Fehlercodes abzufangen und eine Wiederholung mit wesentlich kürzerer Roundtripzeit durchzuführen, wodurch sich die Antwortzeiten von Anforderungen erheblich verbessern. Aus Sicht der nativen MongoDB-Tools wird der Bedarf für die Wiederholungsabwicklung minimiert, was sich positiv auf Ihre Migrationserfahrung auswirkt.
Die Funktion „Serverseitige Wiederholung“ (Server Side Retry, SSR) finden Sie im Azure Cosmos DB-Portal auf dem Blatt Features.
Ist das Feature deaktiviert, wird empfohlen, es wie im Anschluss gezeigt zu aktivieren:
Auswählen des passenden nativen MongoDB-Tools
- mongoexport/mongoimport ist die beste Kombination von Migrationstools, wenn Sie eine Teilmenge Ihrer MongoDB-Datenbank migrieren möchten.
- Mit mongoexport können Sie Ihre vorhandenen Daten in eine lesbare JSON- oder CSV-Datei exportieren. Von mongoexport wird ein Argument zur Angabe der zu exportierenden Teilmenge Ihrer vorhandenen Daten akzeptiert.
- Von mongoimport wird eine JSON- oder CSV-Datei geöffnet und der Inhalt in die Zieldatenbankinstanz (in diesem Fall: Azure Cosmos DB) eingefügt.
- Beachten Sie, dass JSON und CSV keine kompakten Formate sind. Unter Umständen fallen zusätzliche Netzwerkgebühren an, wenn von mongoimport Daten an Azure Cosmos DB gesendet werden.
- mongodump/mongorestore ist die beste Kombination von Migrationstools, wenn Sie Ihre gesamte MongoDB-Datenbank migrieren möchten. Das kompakte BSON-Format ermöglicht eine effizientere Nutzung der Netzwerkressourcen, wenn die Daten in Azure Cosmos DB eingefügt werden.
- Von mongodump werden Ihre vorhandenen Daten als BSON-Datei exportiert.
- Von mongorestore wird die BSON-Dateisicherung in Azure Cosmos DB importiert.
- Übrigens: Wenn Sie einfach nur eine kleine JSON-Datei in Azure Cosmos DB for MongoDB importieren möchten, können Sie das Tool mongoimport zur schnellen Erfassung der Daten verwenden.
Auswählen der Azure Cosmos DB for MongoDB-Anmeldeinformationen
Azure Cosmos DB for MongoDB bietet kompatible Zugriffsanmeldeinformationen, die von nativen MongoDB-Tools verwendet werden können. Diese Zugriffsanmeldeinformationen werden benötigt, um Daten zur Azure Cosmos DB for MongoDB migrieren zu können. So finden Sie diese Anmeldeinformationen:
Öffnen Sie das Azure-Portal.
Navigieren Sie zu Ihrem Azure Cosmos DB for MongoDB-Konto.
Wählen Sie im linken Navigationsbereich das Blatt Verbindungszeichenfolge aus. Daraufhin sollte in etwa Folgendes angezeigt werden:
- HOST: Der Azure Cosmos DB-Endpunkt fungiert als MongoDB-Hostname.
- PORT: Wenn von nativen MongoDB-Tools eine Verbindung mit Azure Cosmos DB hergestellt wird, muss dieser Port explizit angegeben werden.
- BENUTZERNAME: Das Präfix des Domänennamens des Azure Cosmos DB-Endpunkts fungiert als MongoDB-Benutzername.
- KENNWORT: Der Azure Cosmos DB-Hauptschlüssel fungiert als MongoDB-Kennwort.
- Beachten Sie außerdem das auf
true
festgelegte Feld SSL. SSL muss durch das native MongoDB-Tool aktiviert werden, wenn Daten in Azure Cosmos DB geschrieben werden.
Durchführen der Migration
- Wählen Sie aus, welche Datenbanken und Sammlungen Sie migrieren möchten. In diesem Beispiel wird die Sammlung query in der Datenbank edx von MongoDB zu Azure Cosmos DB migriert.
Im weiteren Verlauf dieses Abschnitts erfahren Sie, wie Sie die im vorherigen Abschnitt ausgewählte Toolkombination verwenden.
mongoexport/mongoimport
Öffnen Sie auf dem Computer mit der MongoDB-Instanz ein Terminal, um die Daten aus der MongoDB-Quellinstanz zu exportieren. Wenn es sich dabei um einen Linux-Computer handelt, geben Sie Folgendes ein:
mongoexport --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection query --out edx.json
Unter Windows heißt die ausführbare Datei
mongoexport.exe
. HOST (HOST), PORT (PORT), USERNAME (BENUTZERNAME) und PASSWORD (KENNWORT) müssen auf der Grundlage der Eigenschaften Ihrer vorhandenen MongoDB-Datenbankinstanz angegeben werden.Es ist auch möglich, nur eine Teilmenge des MongoDB-Datasets zu exportieren. Hierzu können Sie beispielsweise ein zusätzliches Filterargument hinzufügen:
mongoexport --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection query --out edx.json --query '{"field1":"value1"}'
Es werden nur Dokumente exportiert, die dem Filter
{"field1":"value1"}
entsprechen.Wenn Sie den Aufruf ausführen, sollte eine Datei namens
edx.json
erstellt werden:Sie können das gleiche Terminal verwenden, um
edx.json
in Azure Cosmos DB zu importieren. Wenn Siemongoimport
auf einem Linux-Computer ausführen, geben Sie Folgendes ein:mongoimport --host HOST:PORT -u USERNAME -p PASSWORD --db edx --collection importedQuery --ssl --type json --writeConcern="{w:0}" --file edx.json
Unter Windows heißt die ausführbare Datei
mongoimport.exe
. HOST (HOST), PORT (PORT), USERNAME (BENUTZERNAME) und PASSWORD (KENNWORT) müssen auf der Grundlage der zuvor erfassten Azure Cosmos DB-Anmeldeinformationen angegeben werden.Überwachen Sie die Terminalausgabe von mongoimport. Im Terminal sollten Textzeilen mit aktualisiertem Migrationsstatus ausgegeben werden:
Überprüfen Sie abschließend Azure Cosmos DB, um sich zu vergewissern, dass die Migration erfolgreich war. Öffnen Sie das Azure Cosmos DB-Portal, und navigieren Sie zum Daten-Explorer. Dort sollten Sie Folgendes sehen: 1. Es wurde eine Datenbank namens edx mit einer Sammlung namens importedQuery erstellt. 2. Falls Sie nur eine Teilmenge der Daten exportiert haben, sollten in importedQuery auch nur Dokumente enthalten sein, die der gewünschten Teilmenge der Daten entsprechen. Im folgenden Beispiel entsprach nur ein einzelnes Dokument dem Filter
{"field1":"value1"}
:
mongodump/mongorestore
Öffnen Sie auf dem Computer mit der MongoDB-Instanz ein Terminal, um eine BSON-Datensicherung Ihrer MongoDB-Instanz zu erstellen. Wenn es sich dabei um einen Linux-Computer handelt, geben Sie Folgendes ein:
mongodump --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection query --ssl --out edx-dump
HOST (HOST), PORT (PORT), USERNAME (BENUTZERNAME) und PASSWORD (KENNWORT) müssen auf der Grundlage der Eigenschaften Ihrer vorhandenen MongoDB-Datenbankinstanz angegeben werden. Sie sollten sehen, dass ein Verzeichnis namens
edx-dump
erstellt wurde und dass die Verzeichnisstruktur vonedx-dump
der Ressourcenhierarchie (Datenbank- und Sammlungsstruktur) Ihrer MongoDB-Quellinstanz entspricht. Jede Sammlung wird durch eine BSON-Datei dargestellt:Sie können das gleiche Terminal verwenden, um den Inhalt von
edx-dump
in Azure Cosmos DB wiederherzustellen. Wenn Siemongorestore
auf einem Linux-Computer ausführen, geben Sie Folgendes ein:mongorestore --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection importedQuery --writeConcern="{w:0}" --ssl edx-dump/edx/query.bson
Unter Windows heißt die ausführbare Datei
mongorestore.exe
. HOST (HOST), PORT (PORT), USERNAME (BENUTZERNAME) und PASSWORD (KENNWORT) müssen auf der Grundlage der zuvor erfassten Azure Cosmos DB-Anmeldeinformationen angegeben werden.Überwachen Sie die Terminalausgabe von mongorestore. Im Terminal sollten Zeilen mit aktualisiertem Migrationsstatus ausgegeben werden:
Überprüfen Sie abschließend Azure Cosmos DB, um sich zu vergewissern, dass die Migration erfolgreich war. Öffnen Sie das Azure Cosmos DB-Portal, und navigieren Sie zum Daten-Explorer. Dort sollten Sie Folgendes sehen: 1. Es wurde eine Datenbank namens edx mit einer Sammlung namens importedQuery erstellt. 2. importedQuery sollte das gesamte Dataset aus der Quellsammlung enthalten:
Optimierung nach der Migration
Nach der Migration der in einer MongoDB-Datenbank gespeicherten Daten zur Azure Cosmos DB-API für MongoDB können Sie eine Verbindung mit Azure Cosmos DB herstellen und die Daten verwalten. Sie können nach der Migration auch andere Optimierungsschritte ausführen und beispielsweise die Indizierungsrichtlinie optimieren, die Standardkonsistenzebene aktualisieren oder die globale Verteilung für Ihr Azure Cosmos DB-Konto konfigurieren. Weitere Informationen finden Sie im Artikel zur Optimierung nach der Migration.
Zusätzliche Ressourcen
- Azure Cosmos DB-Dienstinformationen
- Dokumentation zu MongoDB-Datenbanktools
- Versuchen Sie, die Kapazitätsplanung für eine Migration zu Azure Cosmos DB durchzuführen?
- Wenn Sie nur die Anzahl der virtuellen Kerne und Server in Ihrem vorhandenen Datenbankcluster kennen, lesen Sie die Informationen zum Schätzen von Anforderungseinheiten mithilfe von virtuellen Kernen oder virtuellen CPUs
- Wenn Sie die typischen Anforderungsraten für Ihre aktuelle Datenbankworkload kennen, lesen Sie die Informationen zum Schätzen von Anforderungseinheiten mit dem Azure Cosmos DB-Kapazitätsplaner
Nächste Schritte
- Informieren Sie sich in der Migrationsanleitung im Leitfaden zur Datenbankmigration von Microsoft über weitere Szenarien.