View a markdown version of this page

Migration vom Couchbase Server - Amazon DocumentDB

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.

Migration vom Couchbase Server

Einführung

In diesem Handbuch werden die wichtigsten Punkte vorgestellt, die bei der Migration von Couchbase Server zu Amazon DocumentDB zu beachten sind. Es werden Überlegungen für die Ermittlungs-, Planungs-, Durchführungs- und Validierungsphasen Ihrer Migration erläutert. Außerdem wird erklärt, wie Offline- und Online-Migrationen durchgeführt werden.

Vergleich mit Amazon DocumentDB

Couchbase Server Amazon DocumentDB
Organisation der Daten In den Versionen 7.0 und höher sind Daten in Buckets, Bereichen und Sammlungen organisiert. In früheren Versionen sind Daten in Buckets organisiert. Die Daten sind in Datenbanken und Sammlungen organisiert.
Kompatibilität Für jeden Dienst gibt es separate APIs (z. B. Daten, Index, Suche usw.). Sekundäre Suchvorgänge verwenden SQL++ (früher bekannt als N1QL); eine Abfragesprache, die auf ANSI-standard SQL basiert und daher vielen Entwicklern vertraut ist. Amazon DocumentDB ist mit der MongoDB-API kompatibel.
Architektur Der Speicher ist an jede Cluster-Instance angehängt. Sie können die Rechenleistung nicht unabhängig vom Speicher skalieren. Amazon DocumentDB wurde für die Cloud und zur Vermeidung der Einschränkungen herkömmlicher Datenbankarchitekturen entwickelt. Die Rechen- und Speicherschicht sind in Amazon DocumentDB getrennt, und die Rechenschicht kann unabhängig vom Speicher skaliert werden.
Fügen Sie Lesekapazität bei Bedarf hinzu Cluster können durch Hinzufügen von Instanzen skaliert werden. Da der Speicher an die Instanz angehängt ist, auf der der Service ausgeführt wird, hängt die Zeit, die für die Skalierung benötigt wird, von der Datenmenge ab, die auf die neue Instanz verschoben oder neu verteilt werden muss. Sie können eine Leseskalierung für Ihren Amazon DocumentDB-Cluster erreichen, indem Sie bis zu 15 Amazon DocumentDB-Replikate im Cluster erstellen. Es gibt keine Auswirkungen auf die Speicherebene.
Schnelle Wiederherstellung nach einem Knotenausfall Cluster verfügen über automatische Failover-Funktionen, aber die Zeit, bis der Cluster wieder seine volle Stärke erreicht, hängt von der Datenmenge ab, die auf die neue Instance verschoben werden muss. Amazon DocumentDB kann in der Regel innerhalb von 30 Sekunden ein Failover für die primäre Komponente durchführen und den Cluster unabhängig von der Datenmenge im Cluster innerhalb von 8 bis 10 Minuten wieder auf volle Stärke zurücksetzen.
Skalieren Sie den Speicher, wenn die Datenmenge wächst Bei selbstverwalteten Clustern werden Speicher und iOS nicht automatisch skaliert. Amazon DocumentDB-Speicher und iOS werden automatisch skaliert.
Daten sichern, ohne die Leistung zu beeinträchtigen Backups werden vom Backup-Dienst durchgeführt und sind standardmäßig nicht aktiviert. Da Speicher und Rechenleistung nicht getrennt sind, kann dies Auswirkungen auf die Leistung haben. Amazon DocumentDB-Backups sind standardmäßig aktiviert und können nicht deaktiviert werden. Backups werden von der Speicherebene verarbeitet, sodass sie keine Auswirkungen auf die Rechenebene haben. Amazon DocumentDB unterstützt die Wiederherstellung aus einem Cluster-Snapshot und die Wiederherstellung auf einen bestimmten Zeitpunkt.
Haltbarkeit der Daten In einem Cluster können maximal 3 Replikatkopien von Daten vorhanden sein, also insgesamt 4 Kopien. Auf jeder Instanz, auf der der Datendienst ausgeführt wird, sind 1, 2 oder 3 Replikatkopien der Daten aktiv. Amazon DocumentDB verwaltet sechs Kopien der Daten, unabhängig davon, wie viele Recheninstanzen es gibt, mit einem Schreibquorum von 4 und Persist True. Kunden erhalten eine Bestätigung, nachdem auf der Speicherebene 4 Kopien der Daten gespeichert wurden.
Konsistenz Sofortige K/V Betriebskonsistenz wird unterstützt. Das Couchbase SDK leitet K/V Anfragen an die spezifische Instanz weiter, die die aktive Kopie der Daten enthält. Sobald ein Update bestätigt wurde, kann der Client dieses Update garantiert lesen. Die Replikation von Updates auf andere Dienste (Index, Suche, Analytik, Eventing) erfolgt letztendlich konsistent. Amazon DocumentDB-Replikate sind letztendlich konsistent. Wenn sofortige Konsistenzlesevorgänge erforderlich sind, kann der Client von der primären Instance lesen.
Replikation Cross-Data Center Replication (XDCR) ermöglicht eine gefilterte, passive/active aktiv-aktive Replikation von Daten in vielen:vielen Topologien. Die globalen Amazon DocumentDB-Cluster bieten eine aktiv-passive Replikation in 1:many (bis zu 10) Topologien.

Erkennung

Die Migration zu Amazon DocumentDB erfordert ein gründliches Verständnis der bestehenden Datenbank-Arbeitslast. Bei der Workload-Erkennung werden die Konfiguration und die Betriebsmerkmale Ihres Couchbase-Clusters — Datensatz, Indizes und Workload — analysiert, um einen nahtlosen Übergang mit minimalen Unterbrechungen zu gewährleisten.

Cluster-Konfiguration

Couchbase verwendet eine serviceorientierte Architektur, bei der jede Funktion einem Dienst entspricht. Führen Sie den folgenden Befehl für Ihren Couchbase-Cluster aus, um festzustellen, welche Dienste verwendet werden (siehe Informationen über Knoten abrufen):

curl -v -u <administrator>:<password> \ http://<ip-address-or-hostname>:<port>/pools/nodes | \ jq '[.nodes[].services[]] | unique'

Beispielausgabe:

[ "backup", "cbas", "eventing", "fts", "index", "kv", "n1ql" ]

Die Couchbase-Dienste umfassen Folgendes:

Datenservice (kv)

Der Datendienst ermöglicht read/write den Zugriff auf Daten im Speicher und auf der Festplatte.

Amazon DocumentDB unterstützt K/V Operationen mit JSON-Daten über die MongoDB-API.

Abfragedienst (n1ql)

Der Abfragedienst unterstützt die Abfrage von JSON-Daten über SQL++.

Amazon DocumentDB unterstützt die Abfrage von JSON-Daten über die MongoDB-API.

Indexdienst (Index)

Der Indexdienst erstellt und verwaltet Indizes für Daten und ermöglicht so schnellere Abfragen.

Amazon DocumentDB unterstützt einen Standard-Primärindex und die Erstellung von Sekundärindizes für JSON-Daten über die MongoDB-API.

Suchdienst (fts)

Der Suchdienst unterstützt die Erstellung von Indizes für die Volltextsuche.

Mit der systemeigenen Volltextsuchfunktion von Amazon DocumentDB können Sie mithilfe der API einfache Textabfragen für große Textdatensätze mithilfe von Textindizes für spezielle Zwecke durchführen. MongoDB Für erweiterte Funktionen wie Fuzzy-Suche, mehrsprachige Suche und sammlungsübergreifende Suche verwenden Sie die Amazon DocumentDB Zero-ETL-Integration mit Amazon Service. OpenSearch

Analysedienst (cbas)

Der Analysedienst unterstützt die Analyse von JSON-Daten nahezu in Echtzeit.

Amazon DocumentDB unterstützt Ad-hoc-Abfragen zu JSON-Daten über die MongoDB-API. Sie können auch komplexe Abfragen für Ihre JSON-Daten in Amazon DocumentDB ausführen, indem Sie Apache Spark verwenden, der auf Amazon EMR läuft.

Veranstaltungsservice (Eventing)

Der Eventing-Service führt benutzerdefinierte Geschäftslogik als Reaktion auf Datenänderungen aus.

Amazon DocumentDB automatisiert ereignisgesteuerte Workloads, indem jedes Mal AWS Lambda Funktionen aufgerufen werden, wenn sich Daten in Ihrem Amazon DocumentDB-Cluster ändern.

Backup-Service (Sicherung)

Der Backup-Service plant vollständige und inkrementelle Datensicherungen und führt frühere Datensicherungen zusammen.

Amazon DocumentDB sichert Ihre Daten kontinuierlich auf Amazon S3 mit einer Aufbewahrungsfrist von 1—35 Tagen, sodass Sie sie innerhalb des Aufbewahrungszeitraums für Backups schnell wiederherstellen können. Amazon DocumentDB erstellt im Rahmen dieses kontinuierlichen Sicherungsprozesses auch automatische Schnappschüsse Ihrer Daten. Sie können die Sicherung und Wiederherstellung von Amazon DocumentDB auch mit verwalten. AWS Backup.

Betriebliche Eigenschaften

Verwenden Sie das Discovery Tool für Couchbase, um die folgenden Informationen über Ihren Datensatz, Ihre Indizes und Ihre Arbeitslast zu erhalten. Diese Informationen helfen Ihnen bei der Größe Ihres Amazon DocumentDB-Clusters.

Dataset

Das Tool ruft die folgenden Bucket-, Umfang- und Sammlungsinformationen ab:

  1. Bucket-Name

  2. Bucket-Typ

  3. Name des Bereichs

  4. Name der Sammlung

  5. Gesamtgröße (Byte)

  6. Gesamtzahl der Artikel

  7. Artikelgröße (Byte)

Indizes

Das Tool ruft die folgenden Indexstatistiken und alle Indexdefinitionen für alle Buckets ab. Beachten Sie, dass Primärindizes ausgeschlossen sind, da Amazon DocumentDB automatisch einen Primärindex für jede Sammlung erstellt.

  1. Bucket-Name

  2. Name des Bereichs

  3. Name der Sammlung

  4. Name des Indexes

  5. Indexgröße (Byte)

Workload

Das Tool ruft K/V N1QL-Abfrage-Metriken ab. K/V Metrikwerte werden auf Bucket-Ebene erfasst und SQL++-Metriken werden auf Cluster-Ebene erfasst.

Die Befehlszeilenoptionen des Tools lauten wie folgt:

python3 discovery.py \ --username <source cluster username> \ --password <source cluster password> \ --data_node <data node IP address or DNS name> \ --admin_port <administration http REST port> \ --kv_zoom <get bucket statistics for specified interval> \ --tools_path <full path to Couchbase tools> \ --index_metrics <gather index definitions and SQL++ metrics> \ --indexer_port <indexer service http REST port> \ --n1ql_start <start time for sampling> \ --n1ql_step <sample interval over the sample period>

Hier sehen Sie ein Beispiel für einen Befehl.

python3 discovery.py \ --username username \ --password ******** \ --data_node "http://10.0.0.1" \ --admin_port 8091 \ --kv_zoom week \ --tools_path "/opt/couchbase/bin" \ --index_metrics true \ --indexer_port 9102 \ --n1ql_start -60000 \ --n1ql_step 1000

K/V Die Metrikwerte basieren auf Stichproben, die in der letzten Woche alle 10 Minuten abgefragt wurden (siehe HTTP-Methode und URI). SQL++-Metrikwerte basieren auf Stichproben, die in den letzten 60 Sekunden alle 1 Sekunden abgefragt wurden (siehe Allgemeine Bezeichnungen). Die Ausgabe des Befehls erfolgt in den folgenden Dateien:

collection-stats.csv — Bucket-, Umfang- und Sammlungsinformationen

bucket,bucket_type,scope_name,collection_name,total_size,total_items,document_size beer-sample,membase,_default,_default,2796956,7303,383 gamesim-sample,membase,_default,_default,114275,586,196 pillowfight,membase,_default,_default,1901907769,1000006,1902 travel-sample,membase,inventory,airport,547914,1968,279 travel-sample,membase,inventory,airline,117261,187,628 travel-sample,membase,inventory,route,13402503,24024,558 travel-sample,membase,inventory,landmark,3072746,4495,684 travel-sample,membase,inventory,hotel,4086989,917,4457 ...

index-stats.csv — Indexnamen und -größen

bucket,scope,collection,index-name,index-size beer-sample,_default,_default,beer_primary,468144 gamesim-sample,_default,_default,gamesim_primary,87081 travel-sample,inventory,airline,def_inventory_airline_primary,198290 travel-sample,inventory,airport,def_inventory_airport_airportname,513805 travel-sample,inventory,airport,def_inventory_airport_city,487289 travel-sample,inventory,airport,def_inventory_airport_faa,526343 travel-sample,inventory,airport,def_inventory_airport_primary,287475 travel-sample,inventory,hotel,def_inventory_hotel_city,497125 ...

kv-stats.csv — Metriken für alle Buckets abrufen, festlegen und löschen

bucket,gets,sets,deletes beer-sample,0,0,0 gamesim-sample,0,0,0 pillowfight,369,521,194 travel-sample,0,0,0

n1ql-stats.csv — SQL++ wählt Metriken für den Cluster aus, löscht sie und fügt sie ein

selects,deletes,inserts 0,132,87

indexes- <bucket-name>.txt — Indexdefinitionen aller Indizes im Bucket. Beachten Sie, dass Primärindizes ausgeschlossen sind, da Amazon DocumentDB automatisch einen Primärindex für jede Sammlung erstellt.

CREATE INDEX `def_airportname` ON `travel-sample`(`airportname`) CREATE INDEX `def_city` ON `travel-sample`(`city`) CREATE INDEX `def_faa` ON `travel-sample`(`faa`) CREATE INDEX `def_icao` ON `travel-sample`(`icao`) CREATE INDEX `def_inventory_airport_city` ON `travel-sample`.`inventory`.`airport`(`city`) CREATE INDEX `def_inventory_airport_faa` ON `travel-sample`.`inventory`.`airport`(`faa`) CREATE INDEX `def_inventory_hotel_city` ON `travel-sample`.`inventory`.`hotel`(`city`) CREATE INDEX `def_inventory_landmark_city` ON `travel-sample`.`inventory`.`landmark`(`city`) CREATE INDEX `def_sourceairport` ON `travel-sample`(`sourceairport`) ...

Planung

In der Planungsphase legen Sie die Anforderungen an den Amazon DocumentDB-Cluster fest und ordnen die Couchbase-Buckets, -Bereiche und -Sammlungen den Amazon DocumentDB-Datenbanken und -Sammlungen zu.

Anforderungen an den Amazon DocumentDB-Cluster

Verwenden Sie die in der Discovery-Phase gesammelten Daten, um die Größe Ihres Amazon DocumentDB-Clusters zu bestimmen. Weitere Informationen zur Dimensionierung Ihres Amazon DocumentDB-Clusters finden Sie unter Instance-Größe.

Zuordnung von Buckets, Bereichen und Sammlungen zu Datenbanken und Sammlungen

Ermitteln Sie die Datenbanken und Sammlungen, die in Ihren Amazon DocumentDB-Clustern existieren werden. Erwägen Sie die folgenden Optionen, je nachdem, wie die Daten in Ihrem Couchbase-Cluster organisiert sind. Dies sind nicht die einzigen Optionen, aber sie bieten Ansatzpunkte, die Sie in Betracht ziehen sollten.

Couchbase Server 6.x oder früher

Couchbase-Buckets für Amazon DocumentDB-Sammlungen

Migrieren Sie jeden Bucket in eine andere Amazon DocumentDB-Sammlung. In diesem Szenario wird der id Couchbase-Dokumentwert als Amazon DocumentDB-Wert verwendet. _id

Couchbase Server 6.x oder früher ordnet Amazon DocumentDB-Sammlungen zu

Couchbase Server 7.0 oder höher

Couchbase-Sammlungen in Amazon DocumentDB-Sammlungen

Migrieren Sie jede Sammlung in eine andere Amazon DocumentDB-Sammlung. In diesem Szenario wird der id Couchbase-Dokumentwert als Amazon DocumentDB-Wert verwendet. _id

Sammlungen von Couchbase Server 7.0 oder höher in Amazon DocumentDB-Sammlungen

Migration

Migration des Indexes

Bei der Migration zu Amazon DocumentDB werden nicht nur Daten, sondern auch Indizes übertragen, um die Abfrageleistung aufrechtzuerhalten und den Datenbankbetrieb zu optimieren. In diesem Abschnitt wird der detaillierte, schrittweise Prozess zur Migration von Indizes zu Amazon DocumentDB beschrieben und gleichzeitig Kompatibilität und Effizienz gewährleistet.

Verwenden Sie Amazon Q (verfügbar in der AWS-Managementkonsole oder in Ihrer IDE), um CREATE INDEX SQL++-Anweisungen in Amazon DocumentDB-Befehle zu konvertieren. createIndex()

  1. Laden Sie die <bucket name>Indexe.txt-Datei (en) hoch, die mit dem Discovery Tool for Couchbase erstellt wurden.

  2. Geben Sie die folgende Eingabeaufforderung ein:

    Convert the Couchbase CREATE INDEX statements to Amazon DocumentDB createIndex commands

Amazon Q generiert entsprechende Amazon createIndex() DocumentDB-Befehle. Beachten Sie, dass Sie die Sammlungsnamen möglicherweise aktualisieren müssen, je nachdem, wie Sie die Couchbase-Buckets, -Bereiche und -Sammlungen den Amazon DocumentDB-Sammlungen zugeordnet haben.

Beispiel:

indexes-beer-sample.txt

CREATE INDEX `beerType` ON `beer-sample`(`type`) CREATE INDEX `code` ON `beer-sample`(`code`) WHERE (`type` = "brewery")

Beispiel für eine Amazon Q-Ausgabe (Auszug):

db.beerSample.createIndex( { "type": 1 }, { "name": "beerType", "background": true } ) db.beerSample.createIndex( { "code": 1 }, { "name": "code", "background": true, "partialFilterExpression": { "type": "brewery" } } )

Weitere Informationen zu Indizes, die Amazon Q nicht konvertieren kann, finden Sie unter Amazon DocumentDB-Indizes und Indizes und Indexeigenschaften verwalten.

Refactor-Code zur Verwendung der MongoDB-APIs

Kunden verwenden die Couchbase SDKs, um eine Verbindung zum Couchbase Server herzustellen. Amazon DocumentDB-Clients verwenden MongoDB-Treiber, um eine Verbindung zu Amazon DocumentDB herzustellen. Alle von den Couchbase-SDKs unterstützten Sprachen werden auch von MongoDB-Treibern unterstützt. Weitere Informationen zum Treiber für Ihre Sprache finden Sie unter MongoDB-Treiber.

Da sich die APIs zwischen Couchbase Server und Amazon DocumentDB unterscheiden, müssen Sie Ihren Code umgestalten, um die entsprechenden MongoDB-APIs verwenden zu können. Sie können Amazon Q verwenden, um die K/V API-Aufrufe und SQL++-Abfragen in die entsprechenden MongoDB-APIs zu konvertieren:

  1. Laden Sie die Quellcodedatei (en) hoch.

  2. Geben Sie die folgende Eingabeaufforderung ein:

    Convert the Couchbase API code to Amazon DocumentDB API code

Unter Verwendung des Python-Codebeispiels von Hello Couchbase generiert Amazon Q Folgendes (Auszug):

from pymongo import MongoClient # Connection parameters database_name = "travel-sample" # Connect to Amazon DocumentDB cluster client = MongoClient('<Amazon DocumentDB connection string>', tls=True, tlsCAFile='global-bundle.pem') # Get reference to database and collection db = client['travel-sample'] airline_collection = db['airline'] # upsert document function def upsert_document(doc): print("\nUpsert Result: ") try: # key will equal: "airline_8091" key = doc["type"] + "_" + str(doc["id"]) doc['_id'] = key # Amazon DocumentDB uses _id as primary key result = airline_collection.update_one( {'_id': key}, {'$set': doc}, upsert=True ) print(f"Modified count: {result.modified_count}") except Exception as e: print(e) # get document function def get_airline_by_key(key): print("\nGet Result: ") try: result = airline_collection.find_one({'_id': key}) print(result) except Exception as e: print(e) # query for document by callsign def lookup_by_callsign(cs): print("\nLookup Result: ") try: result = airline_collection.find( {'callsign': cs}, {'name': 1, '_id': 0} ) for doc in result: print(doc['name']) except Exception as e: print(e) # Test document airline = { "type": "airline", "id": 8091, "callsign": "CBS", "iata": None, "icao": None, "name": "Couchbase Airways", } upsert_document(airline) get_airline_by_key("airline_8091") lookup_by_callsign("CBS")

Beispiele für die Verbindung mit Amazon DocumentDB in Python, PHP, Go, Java, C#/.NET, Node.js R und Ruby finden Sie unter Programmgesteuertes Herstellen einer Verbindung zu Amazon DocumentDB.

Wählen Sie den Migrationsansatz

Bei der Migration von Daten zu Amazon DocumentDB gibt es zwei Optionen:

Anmerkung

Amazon DocumentDB verwendet das _id Feld als Primärschlüssel für jedes Dokument. Die Migrationsansätze in diesem Handbuch speichern den Couchbase-Dokumentschlüssel im Feld. _id Bei der Offline-Migration erfolgt dies über die --include-key _id Option unter. cbexport Bei der Online-Migration erfolgt dies über den Kafka-Connector. ProvidedInKeyStrategy

Offline-Migration

Ziehen Sie eine Offline-Migration in Betracht, wenn:

  • Ausfallzeiten sind akzeptabel: Bei der Offline-Migration werden Schreibvorgänge in die Quelldatenbank gestoppt, die Daten exportiert und anschließend in Amazon DocumentDB importiert. Dieser Prozess verursacht Ausfallzeiten für Ihre Anwendung. Wenn Ihre Anwendung oder Ihr Workload diesen Zeitraum der Nichtverfügbarkeit aushält, ist eine Offline-Migration eine praktikable Option.

  • Migration kleinerer Datensätze oder Durchführung von Machbarkeitsstudien: Bei kleineren Datensätzen ist der Zeitaufwand für den Export- und Importvorgang relativ kurz, sodass die Offline-Migration eine schnelle und einfache Methode ist. Es eignet sich auch gut für Entwicklungs-, Test- und Machbarkeitsstudien, in denen Ausfallzeiten weniger kritisch sind.

  • Einfachheit hat Priorität: Die Offline-Methode, die cbexport und mongoimport verwendet, ist im Allgemeinen der einfachste Ansatz zur Migration von Daten. Es vermeidet die Komplexität der Change Data Capture (CDC), die mit Online-Migrationsmethoden verbunden ist.

  • Es müssen keine laufenden Änderungen repliziert werden: Wenn die Quelldatenbank während der Migration keine aktiven Änderungen empfängt oder wenn es nicht wichtig ist, dass diese Änderungen während des Migrationsprozesses erfasst und auf das Ziel angewendet werden, ist ein Offline-Ansatz angemessen.

Couchbase Server 6.x oder früher
Sammlung vom Couchbase-Bucket zur Amazon DocumentDB-Sammlung

Exportieren Sie Daten mit cbexport json, um einen JSON-Dump aller Daten im Bucket zu erstellen. Für die --format Option können Sie oder verwenden. lines list

cbexport json \ --cluster <source cluster endpoint> \ --bucket <bucket name> \ --format <lines | list> \ --username <username> \ --password <password> \ --output export.json \ --include-key _id

Importieren Sie die Daten mithilfe von Mongoimport in eine Amazon DocumentDB-Sammlung mit der entsprechenden Option zum Importieren der Zeilen oder Listen:

Zeilen:

mongoimport \ --db <database> \ --collection <collection> \ --uri "<Amazon DocumentDB cluster connection string>" \ --ssl \ --sslCAFile global-bundle.pem \ --file export.json

liste:

mongoimport \ --db <database> \ --collection <collection> \ --uri "<Amazon DocumentDB cluster connection string>" \ --ssl \ --sslCAFile global-bundle.pem \ --jsonArray \ --file export.json
Couchbase Server 7.0 oder höher

Verwenden Sie die Tools cbexport und mongoimport, um eine Offline-Migration durchzuführen:

Couchbase-Bucket mit Standardumfang und Standardsammlung

Exportieren Sie Daten mit cbexport json, um einen JSON-Dump aller Sammlungen im Bucket zu erstellen. Für die --format Option können Sie oder verwenden. lines list

cbexport json \ --cluster <source cluster endpoint> \ --bucket <bucket name> \ --format <lines | list> \ --username <username> \ --password <password> \ --output export.json \ --include-key _id

Importieren Sie die Daten mithilfe von Mongoimport in eine Amazon DocumentDB-Sammlung mit der entsprechenden Option zum Importieren der Zeilen oder Listen:

Zeilen:

mongoimport \ --db <database> \ --collection <collection> \ --uri "<Amazon DocumentDB cluster connection string>" \ --ssl \ --sslCAFile global-bundle.pem \ --file export.json

liste:

mongoimport \ --db <database> \ --collection <collection> \ --uri "<Amazon DocumentDB cluster connection string>" \ --ssl \ --sslCAFile global-bundle.pem \ --jsonArray \ --file export.json
Couchbase-Sammlungen für Amazon DocumentDB-Sammlungen

Exportieren Sie Daten mit cbexport json, um einen JSON-Dump jeder Sammlung zu erstellen. Verwenden Sie die --include-data Option, um jede Sammlung zu exportieren. Für die --format Option können Sie lines oder verwendenlist. Verwenden Sie die --collection-field Optionen --scope-field und, um den Namen des Bereichs und der Sammlung in den angegebenen Feldern in jedem JSON-Dokument zu speichern.

cbexport json \ --cluster <source cluster endpoint> \ --bucket <bucket name> \ --include-data <scope name>.<collection name> \ --format <lines | list> \ --username <username> \ --password <password> \ --output export.json \ --include-key _id \ --scope-field "_scope" \ --collection-field "_collection"

Da cbexport die _collection Felder _scope und zu jedem exportierten Dokument hinzugefügt hat, können Sie sie aus jedem Dokument in der Exportdatei mit Suchen und Ersetzen oder einer anderen von Ihnen sed bevorzugten Methode entfernen.

Importieren Sie die Daten für jede Sammlung mithilfe von mongoimport in eine Amazon DocumentDB-Sammlung mit der entsprechenden Option zum Importieren der Zeilen oder Listen:

Zeilen:

mongoimport \ --db <database> \ --collection <collection> \ --uri "<Amazon DocumentDB cluster connection string>" \ --ssl \ --sslCAFile global-bundle.pem \ --file export.json

liste:

mongoimport \ --db <database> \ --collection <collection> \ --uri "<Amazon DocumentDB cluster connection string>" \ --ssl \ --sslCAFile global-bundle.pem \ --jsonArray \ --file export.json

Online-Migration

Ziehen Sie eine Online-Migration in Betracht, wenn Sie Ausfallzeiten minimieren müssen und laufende Änderungen nahezu in Echtzeit auf Amazon DocumentDB repliziert werden müssen.

Unter So führen Sie eine Live-Migration von Couchbase zu Amazon DocumentDB durch, um zu erfahren, wie Sie eine Live-Migration zu Amazon DocumentDB durchführen. Die Dokumentation führt Sie durch die Bereitstellung der Lösung und die Durchführung einer Live-Migration eines Buckets zu einem Amazon DocumentDB-Cluster.

Couchbase Server 6.x oder früher
Sammlung vom Couchbase-Bucket zur Amazon DocumentDB-Sammlung

Das Migrationsprogramm für Couchbase ist vorkonfiguriert, um eine Online-Migration eines Couchbase-Buckets zu einer Amazon DocumentDB-Sammlung durchzuführen. Betrachtet man die Konfiguration des Senk-Connectors, so ist der document.id.strategy Parameter so konfiguriert, dass er den Nachrichtenschlüsselwert als _id Feldwert verwendet (siehe Eigenschaften der Sink-Connector-ID-Strategie):

ConnectorConfiguration: document.id.strategy: 'com.mongodb.kafka.connect.sink.processor.id.strategy.ProvidedInKeyStrategy'
Couchbase Server 7.0 oder höher
Couchbase-Bucket mit Standardumfang und Standardsammlung

Das Migrationsprogramm für Couchbase ist vorkonfiguriert, um eine Online-Migration eines Couchbase-Buckets zu einer Amazon DocumentDB-Sammlung durchzuführen. Betrachtet man die Konfiguration des Senk-Connectors, so ist der document.id.strategy Parameter so konfiguriert, dass er den Nachrichtenschlüsselwert als _id Feldwert verwendet (siehe Eigenschaften der Sink-Connector-ID-Strategie):

ConnectorConfiguration: document.id.strategy: 'com.mongodb.kafka.connect.sink.processor.id.strategy.ProvidedInKeyStrategy'
Couchbase-Sammlungen in Amazon DocumentDB-Sammlungen

Konfiguriere den Quell-Connector so, dass jede Couchbase-Sammlung in jedem Bereich zu einem separaten Thema gestreamt wird (siehe Quellkonfigurationsoptionen). Beispiel:

ConnectorConfiguration: # add couchbase.collections configuration couchbase.collections: '<scope 1>.<collection 1>, <scope 1>.<collection 2>, ...'

Konfigurieren Sie den Senk-Connector so, dass er von jedem Thema zu einer separaten Amazon DocumentDB-Sammlung streamt (siehe Konfigurationseigenschaften des Sink Connectors). Beispiel:

ConnectorConfiguration: # remove collection configuration #collection: 'test' # modify topics configuration topics: '<bucket>.<scope 1>.<collection 1>, <bucket>.<scope 1>.<collection 2>, ...' # add topic.override.%s.%s configurations for each topic topic.override.<bucket>.<scope 1>.<collection 1>.collection: '<collection>' topic.override.<bucket>.<scope 1>.<collection 2>.collection: '<collection>'

Validierung

Dieser Abschnitt enthält einen detaillierten Validierungsprozess zur Überprüfung der Datenkonsistenz und -integrität nach der Migration zu Amazon DocumentDB. Die Validierungsschritte gelten unabhängig von der Migrationsmethode.

Stellen Sie sicher, dass alle Sammlungen im Ziel vorhanden sind

Couchbase-Quelle

Option 1: Workbench abfragen

SELECT RAW `path` FROM system:keyspaces WHERE `bucket` = '<bucket>'

Option 2: CBQ-Tool

cbq \ -e <source cluster endpoint> \ -u <username> \ -p <password> \ -q "SELECT RAW `path` FROM system:keyspaces WHERE `bucket` = '<bucket>'"

Amazon DocumentDB-Ziel

mongosh (siehe Stellen Sie eine Verbindung zu Ihrem Amazon DocumentDB-Cluster her):

db.getSiblingDB('<database>') db.getCollectionNames()

Überprüfen Sie die Anzahl der Dokumente zwischen Quell- und Zielclustern

Couchbase-Quelle

Couchbase Server 6.x oder früher

Option 1: Workbench abfragen

SELECT COUNT(*) FROM `<bucket>`

Option 2: cbq https://docs.couchbase.com/server/current/cli/cbq-tool.html

cbq \ -e <source cluster endpoint> \ -u <username> \ -p <password> \ -q "SELECT COUNT(*) FROM `<bucket>`"
Couchbase Server 7.0 oder höher

Option 1: Workbench abfragen

SELECT COUNT(*) FROM `<bucket>`.`<scope>`.`<collection>`

Option 2: cbq https://docs.couchbase.com/server/current/cli/cbq-tool.html

cbq \ -e <source cluster endpoint> \ -u <username> \ -p <password> \ -q "SELECT COUNT(*) FROM `<bucket>`.`<scope>`.`<collection>`"

Amazon DocumentDB-Ziel

mongosh (siehe Stellen Sie eine Verbindung zu Ihrem Amazon DocumentDB-Cluster her):

db = db.getSiblingDB('<database>') db.getCollection('<collection>').countDocuments()

Dokumente zwischen Quell- und Zielclustern vergleichen

Couchbase-Quelle

Couchbase Server 6.x oder früher

Option 1: Workbench abfragen

SELECT META().id as _id, * FROM `<bucket>` LIMIT 5

Option 2: cbq https://docs.couchbase.com/server/current/cli/cbq-tool.html

cbq \ -e <source cluster endpoint> \ -u <username> \ -p <password> \ -q "SELECT META().id as _id, * FROM `<bucket>` LIMIT 5"
Couchbase Server 7.0 oder höher

Option 1: Workbench abfragen

SELECT META().id as _id, * FROM `<bucket>`.`<scope>`.`<collection>` LIMIT 5

Option 2: cbq https://docs.couchbase.com/server/current/cli/cbq-tool.html

cbq \ -e <source cluster endpoint> \ -u <username> \ -p <password> \ -q "SELECT META().id as _id, * FROM `<bucket>`.`<scope>`.`<collection>` LIMIT 5"

Amazon DocumentDB-Ziel

mongosh (siehe Stellen Sie eine Verbindung zu Ihrem Amazon DocumentDB-Cluster her):

db = db.getSiblingDB('<database>') db.getCollection('<collection>').find({ _id: { $in: [ <_id 1>, <_id 2>, <_id 3>, <_id 4>, <_id 5> ] } })