Migrieren Sie eine lokale Oracle-Datenbank mit Logstash zu Amazon OpenSearch Service - AWS Prescriptive Guidance

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.

Migrieren Sie eine lokale Oracle-Datenbank mit Logstash zu Amazon OpenSearch Service

Erstellt von Aditya Goteti (AWS)

Umgebung: PoC oder Pilotprojekt

Quelle: Oracle-Datenbank

Ziel: Amazon OpenSearch Service

R-Typ: Replatform

Arbeitslast: Oracle

Technologien: Migration; Datenbanken

AWS-Dienste: Amazon OpenSearch Service

Übersicht

Dieses Muster beschreibt, wie Daten mithilfe von Logstash aus einer lokalen Oracle-Datenbank zu Amazon OpenSearch Service verschoben werden. Es beinhaltet architektonische Überlegungen sowie einige erforderliche Fähigkeiten und Empfehlungen. Die Daten können aus einer einzelnen Tabelle oder aus mehreren Tabellen stammen, in denen eine Volltextsuche durchgeführt werden muss. 

OpenSearch Der Dienst kann in einer Virtual Private Cloud (VPC) konfiguriert oder mit IP-basierten Einschränkungen öffentlich platziert werden. Dieses Muster beschreibt ein Szenario, in dem der OpenSearch Dienst in einer VPC konfiguriert ist. Logstash wird verwendet, um die Daten aus der Oracle-Datenbank zu sammeln, sie im JSON-Format zu parsen und die Daten dann in Service einzuspeisen. OpenSearch  

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktives AWS-Konto

  • Java 8 (für Logstash 6.4.3 erforderlich)

  • Konnektivität zwischen den lokalen Datenbankservern und Amazon Elastic Compute Cloud (Amazon EC2) -Instances in einer VPC, eingerichtet mit AWS Virtual Private Network (AWS VPN)

  • Eine Abfrage zum Abrufen der erforderlichen Daten, die an den OpenSearch Service übertragen werden sollen, aus der Datenbank

  • Treiber für Oracle Java Database Connectivity (JDBC)

Einschränkungen

  • Logstash kann keine Datensätze identifizieren, die dauerhaft aus der Datenbank gelöscht wurden 

Versionen der Produkte

  • Oracle Datenbank 12c

  • OpenSearch Service 6.3

  • Logstash 6.4.3

Architektur

Quelltechnologie-Stack

  • Lokale Oracle-Datenbank

  • Lokales AWS-VPN

Zieltechnologie-Stack

  • VPC

  • EC2-Instance

  • OpenSearch Dienst 

  • Logstash

  • NAT Gateway (für Betriebssystemupdates auf EC2-Instances und zur Installation von Java 8, Logstash und Plugins)

Architektur der Datenmigration

So verschieben Sie Daten mithilfe von Logstash aus einer lokalen Oracle-Datenbank zu Amazon OpenSearch Service.

Tools

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Identifizieren Sie die Größe der Quelldaten.

Die Größe der Quelldaten ist einer der Parameter, mit denen Sie die Anzahl der Shards bestimmen, die in einem Index konfiguriert werden sollen.

DBA, Datenbankentwickler

Analysieren Sie die Datentypen jeder Spalte und die entsprechenden Daten.

OpenSearch Service ordnet den Datentyp dynamisch zu, wenn ein zuvor unsichtbares Feld im Dokument gefunden wird. Wenn bestimmte Datentypen oder Formate (z. B. Datumsfelder) explizit deklariert werden müssen, identifizieren Sie die Felder und definieren Sie die Zuordnung für diese Felder bei der Indexerstellung.

App-Besitzer, Entwickler, Datenbankentwickler

Ermitteln Sie, ob Spalten mit Primärschlüsseln oder eindeutigen Schlüsseln vorhanden sind.

Um bei Aktualisierungen oder Einfügungen doppelte Datensätze in Amazon OpenSearch Service zu vermeiden, müssen Sie die document_id Einstellung im Ausgabebereich des amazon_es Plug-ins konfigurieren (z. B. document_id => "%{customer_id}" wo customer_id ist ein Primärschlüssel).

Besitzer der App, Entwickler

Analysieren Sie die Anzahl und Häufigkeit neu hinzugefügter Datensätze und überprüfen Sie, wie oft die Datensätze gelöscht werden.

Diese Aufgabe ist erforderlich, um die Wachstumsrate von Quelldaten zu verstehen. Wenn Daten intensiv gelesen werden und es nur selten zu Einfügungen kommt, können Sie einen einzigen Index verwenden. Wenn häufig neue Datensätze eingefügt werden und keine Löschungen vorgenommen werden, kann die Shard-Größe leicht die empfohlene Maximalgröße von 50 GB überschreiten. In diesem Fall können Sie einen Index dynamisch erstellen, indem Sie Indexmuster in Logstash und im Code konfigurieren, über den Sie mithilfe eines Alias darauf zugreifen können.

Besitzer der App, Entwickler

Ermitteln Sie, wie viele Replikate erforderlich sind.

Besitzer der App, Entwickler

Ermitteln Sie die Anzahl der Shards, die für den Index konfiguriert werden sollen.

Besitzer der App, Entwickler

Identifizieren Sie die Instance-Typen für dedizierte Master-Knoten, Datenknoten und die EC2-Instance.

Weitere Informationen finden Sie im Abschnitt Verwandte Ressourcen.

Besitzer der App, Entwickler

Ermitteln Sie die Anzahl der erforderlichen dedizierten Master- und Datenknoten.

Weitere Informationen finden Sie im Abschnitt Verwandte Ressourcen.

AufgabeBeschreibungErforderliche Fähigkeiten

Starten einer EC2-Instance.

Starten Sie eine EC2-Instance innerhalb der VPC, mit der AWS VPN verbunden ist.

Amazon VPC-Konstrukte, AWS-VPN

Installieren Sie Logstash auf der EC2-Instance.

Developer

Installieren Sie die Logstash-Plugins.

Installieren Sie die erforderlichen Logstash-Plugins und. jdbc-input logstash-output-amazon_es

Developer

Konfigurieren Sie Logstash.

Erstellen Sie den Logstash-Keystore, um vertrauliche Informationen wie AWS Secrets Manager Manager-Schlüssel und Datenbankanmeldedaten zu speichern, und platzieren Sie die Verweise dann in einer Logstash-Konfigurationsdatei.

Developer

Konfigurieren Sie die Warteschlange für unzulässige Nachrichten und die persistente Warteschlange.

Wenn Logstash auf ein Ereignis trifft, das nicht verarbeitet werden kann, weil die Daten einen Zuordnungsfehler oder ein anderes Problem enthalten, hängt die Logstash-Pipeline standardmäßig entweder oder löscht das erfolglose Ereignis. Um in dieser Situation vor Datenverlust zu schützen, können Sie Logstash so konfigurieren, dass erfolglose Ereignisse in eine Warteschlange mit unbestätigten Nachrichten geschrieben werden, anstatt sie zu löschen. Zum Schutz vor Datenverlust bei abnormalem Abbruch verfügt Logstash über eine persistente Warteschlangenfunktion, die die Nachrichtenwarteschlange auf der Festplatte speichert. Persistente Warteschlangen sorgen für die Beständigkeit der Daten in Logstash.

Developer

Erstellen Sie die Amazon OpenSearch Service-Domain.

Erstellen Sie die Amazon OpenSearch Service-Domain mit einer Zugriffsrichtlinie, die keine Signierung von Anfragen mit AWS Identity and Access Management (IAM) -Anmeldeinformationen erfordert. Die Amazon OpenSearch Service-Domain muss innerhalb derselben VPC erstellt werden. Sie sollten auch die Instance-Typen auswählen und die Anzahl der Dedicated Nodes und der Master Nodes auf der Grundlage Ihrer Analyse festlegen.

Developer

Konfigurieren Sie die erforderlichen Amazon OpenSearch Service-Protokolle.

Weitere Informationen finden Sie in der OpenSearch Servicedokumentation.

Erstellen Sie den Index.

Developer

Starten Sie Logstash.

Führen Sie Logstash als Hintergrunddienst aus. Logstash führt die konfigurierte SQL-Abfrage aus, ruft die Daten ab, konvertiert sie in das JSON-Format und leitet sie an Service weiter. OpenSearch Für den ersten Ladevorgang sollten Sie den Scheduler nicht in der Logstash-Konfigurationsdatei konfigurieren.

Developer

Überprüfen Sie die Dokumente.

Überprüfen Sie die Anzahl der Dokumente im Index und ob alle Dokumente in der Quelldatenbank vorhanden sind. Beim ersten Laden werden sie dem Index hinzugefügt und zum Stoppen von Logstash verwendet.

Ändern Sie die Logstash-Konfiguration, um einen Scheduler hinzuzufügen, der je nach den Anforderungen des Clients in einem festen Intervall läuft, und starten Sie Logstash neu. Logstash wählt nur die Datensätze aus, die nach dem letzten Lauf aktualisiert oder hinzugefügt wurden, und der Zeitstempel der letzten Ausführung wird in der Datei gespeichert, die mit der Eigenschaft in der Logstash-Konfigurationsdatei konfiguriert ist. last_run_metadata_path => “/usr/share/logstash/.logstash_jdbc_last_run”

Developer

Zugehörige Ressourcen