Detaillierte Erläuterung der Lösung zur Echtzeitsynchronisierung von MySQL nach Oracle

Detaillierte Erläuterung der Lösung zur Echtzeitsynchronisierung von MySQL nach Oracle

1 Anforderungen im Überblick

Die Daten mehrerer Tabellen in der MySQL5.6-Produktionsdatenbank werden in Echtzeit mit dem Oracle11g-Data Warehouse synchronisiert. Die historischen MySQL-Daten betragen 700 G, und täglich werden durchschnittlich etwa 50 G Protokolldateien generiert. Der MySQL-Protokollspeicherplatz beträgt 50 G, und die Protokolldateien werden nach Überschreiten des Limits ausgerollt. Der gesamte Synchronisierungsprozess darf den MySQL-Geschäftsbetrieb nicht beeinträchtigen.

2 Technische Grundlagen

Die LingBee-Datenintegrationssoftware BeeDI wird verwendet, um MySQL-Daten in Echtzeit mit Oracle zu synchronisieren, historische Daten vollständig über ETL zu synchronisieren und inkrementelle Daten in Echtzeit über Protokollanalyse zu synchronisieren.

Aufgrund der Beschränkung des Protokollspeicherplatzes dauert es mehr als einen Tag, wenn alle historischen Daten auf einmal synchronisiert werden. Die während des vollständigen Synchronisierungsprozesses generierten Protokolle werden gelöscht, wodurch Daten für die Echtzeit-Protokollanalyseaufgabe fehlen. Daher müssen historische Daten stapelweise synchronisiert werden. Die grundlegenden Vorgänge sind wie folgt:

a Teiltabellen vollständig synchronisieren.

b. Fügen Sie die vollständig synchronisierte Tabelle zur Echtzeit-Protokollanalyseaufgabe hinzu und starten Sie die Aufgabe. Wenn die entsprechenden Tabellendaten in MySQL und Oracle konsistent sind, stoppen Sie die Protokollanalyseaufgabe.

Wiederholen Sie die Schritte a und b, bis alle Tabellen zur Echtzeit-Protokollanalyseaufgabe hinzugefügt wurden.

3 MySQL-Umgebungskonfiguration

3.1 Einen Benutzer anlegen

Legen Sie in der Hauptdatenbank einen Synchronisationsbenutzer an. Am Beispiel der Benutzersynchronisation lauten die Anweisungen zum Anlegen des Benutzers und Zuweisen von Berechtigungen wie folgt:

BENUTZER 'sync'@'%' ERSTELLEN, IDENTIFIZIERT DURCH 'xxxxx';

GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT, REPLICATION SLAVE AUF *.* ZU 'sync'@'%';

3.2 BinLog aktivieren

Fragen Sie den Öffnungsstatus des Hauptdatenbankprotokolls und das Protokolldatensatzformat ab:

Variablen wie „log_bin“ anzeigen;

Variablen wie „%binlog_format%“ anzeigen;

Wenn der Protokollstatus AUS ist oder das Protokollformat nicht ROW ist, bearbeiten Sie die Datei my.ini und legen Sie die folgenden Elemente fest:

log-bin="xxxxxx" --Protokoll öffnen

binlog_format="ROW" --Protokolldatensatzformat

4 BeeDI Synchronbetrieb

4.1 Konfigurieren einer vollständigen Synchronisierungsaufgabe

Erstellen Sie einen neuen ETL-Job in BeeDI und legen Sie in den Zuordnungseigenschaften im Dialogfeld „ETL-Vorlageneigenschaften“ die LOB-Ladung auf gebundenen Speicher fest.

[LOB Load] wird verwendet, um die Oracle LOB-Datenlademethode anzugeben. Der Positionierungsspeicher aktualisiert den LOB-Inhalt durch Positionieren des LOB-Zeigers und der Bindungsspeicher aktualisiert den LOB-Inhalt durch Parameterbindung.

Um die Leistung der Datenextraktion zu optimieren, wird empfohlen, den Extraktionsmodus [Asynchron] im Dialogfeld [Optionen] der Extraktionskomponente einzustellen.

Um die Leistung beim Laden der Daten zu optimieren, wird empfohlen, im Dialogfeld „Optionen“ der Ladekomponente den Stapellademodus auszuwählen.

Die vollständige Konfiguration der Synchronisierungsaufgabe wird wie folgt abgeschlossen

Erstellen Sie gemäß der obigen Methode mehrere ETL-Jobs, von denen jeder einer Synchronisierungstabelle entspricht.

4.2 Konfigurieren von Aufgaben zur Echtzeitprotokollanalyse

Die Echtzeitanalyse verwendet einen Skriptjob, in dem alle zu synchronisierenden Tabellen angegeben werden. Der Skriptcode lautet wie folgt

4.3 Vollständige Synchronisierungsaufgabe ausführen

Wählen Sie den auszuführenden Vollsynchronisierungsauftrag aus und klicken Sie in der Symbolleiste auf die Schaltfläche [Start]. Sie können mehrere Vollsynchronisierungsaufträge gleichzeitig starten, solange die Ressourcen der Produktionsbibliothek und der Maschine, auf der sich BeeDI befindet, ausreichen.

4.4 Ausführen von Protokollanalyseaufgaben in Echtzeit

Wenn alle vollständigen Synchronisierungsaufträge abgeschlossen sind, bearbeiten Sie das Echtzeit-Task-Skript und geben Sie die Tabellen an, die in der Variable cdc_tables vollständig synchronisiert wurden. Legen Sie den Startpunkt für die Protokollerfassung im Funktionsparameter inquireLog fest. Die Startzeit des ersten vollständigen Synchronisierungsauftrags kann als Startpunkt für die Protokollerfassung angegeben werden. Der Protokollerfassungspunkt muss nur einmal festgelegt werden, wenn die Aufgabe zum ersten Mal ausgeführt wird. Der Protokollerfassungspunkt wird automatisch verwaltet, wenn die Aufgabe später ausgeführt wird.

Klicken Sie im Planungsfenster im Kontextmenü auf „Hinzufügen“, um den auszuführenden Echtzeit-Protokollanalysejob zu laden. Wählen Sie den Echtzeitjob im Planungsfenster aus, klicken Sie in der Symbolleiste auf die Schaltfläche „Timing“, legen Sie das Timing in Sekunden fest und stellen Sie den Ausführungszyklus auf 1 Sekunde ein.

Nachdem die Echtzeitaufgabe ausgeführt wurde, werden die Informationen zur Protokollanalyse der MySQL-Datenbank im Protokollfenster ausgegeben, einschließlich der jede Minute gelesenen Protokolldatensätze und des aktuellsten Protokollanalysezeitpunkts.

4.5 Weitere Synchronisationstabellen hinzufügen

Wenn der Jobstatus, der der Echtzeitaufgabe entspricht, häufig das Zeitsymbol anzeigt, bedeutet dies, dass die Aufgabe in den Echtzeitstatus gewechselt ist. Zu diesem Zeitpunkt sind die Daten der MySQL-Quelltabelle und der Oracle-Zieltabelle konsistent. Stoppen Sie die Echtzeit-Protokollanalyseaufgabe und konfigurieren Sie die vollständige Synchronisierungsaufgabe anderer Tabellen (siehe 4.1 und 4.3). Wenn die gesamte Aufgabe abgeschlossen ist, bearbeiten Sie die Aufgabe zur Echtzeit-Protokollanalyse, fügen Sie weitere Tabellen hinzu, die vollständig synchronisiert wurden, und starten Sie die Echtzeitaufgabe (siehe 4.2 und 4.4).

5. Überprüfen der Konsistenz der Synchronisierungsdaten

Führen Sie select count(*) from [table] nacheinander in der Quelldatenbank und der Zieldatenbank aus, um zu vergleichen, ob die Anzahl der Tabellendatensätze gleich ist.

Führen Sie „select sum([numeric column]) from [table]“ in der Quelldatenbank und der Zieldatenbank aus, um zu vergleichen, ob die arithmetische Summe der angegebenen Felder gleich ist.

Dies ist das Ende dieses Artikels mit der detaillierten Erklärung der MySQL-Echtzeitsynchronisierungslösung mit Oracle. Weitere relevante Inhalte zur MySQL-Echtzeitsynchronisierung mit Oracle finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung des Missverständnisses zwischen MySQL und Oracle
  • Implementierung einer SpringBoot-Multidatenbankverbindung (MySQL+Oracle)
  • Beispiel zum Erstellen von Tabellenanweisungen für den Benutzer Scott in der MySQL-Version von Oracle
  • Beschreibung der Standardtransaktionsisolationsebene von MySQL und Oracle
  • Beschreibung der Entsprechung zwischen MyBatis JdbcType und Oracle- und MySql-Datentypen
  • Zusammenfassung der Unterschiede zwischen MySQL und Oracle (Vergleich der Funktionsleistung, Auswahl, SQL bei der Verwendung usw.)
  • Detailliertes Beispiel für MySQL ähnlich dem Schreiben von Oracle Rownum
  • Eine kurze Diskussion über die Unterschiede zwischen den drei wichtigsten Datenbanken: Mysql, SqlServer und Oracle
  • Probleme und Lösungen beim Ersetzen von Oracle durch MySQL

<<:  HTML-Basis-URL-Tag

>>:  So konfigurieren Sie den Nginx-Lastausgleich

Artikel empfehlen

Analysieren Sie den Unterschied zwischen berechnet und beobachtet in Vue

Inhaltsverzeichnis 1. Einführung in die Computert...

MySql-Gruppierung und zufälliges Abrufen eines Datenelements aus jeder Gruppe

Idee: Einfach erst zufällig sortieren und dann gr...

Docker View-Prozess, Speicher und Cup-Verbrauch

Docker-Ansichtsprozess, Speicher, Cup-Verbrauch S...

Praxis der Linux-Datei- und Benutzerverwaltung

1. Zeigen Sie die Dateien oder Verzeichnisse im V...

Lösung für die Upload-Einschränkung von Element-ui-Uploaddateien

Frage Die Angabe des Typs der hochgeladenen Datei...

So führen Sie .sh-Dateien im Linux-System aus

Es gibt zwei Möglichkeiten, .sh-Dateien im Linux-...

Beispiele für Vorschaufunktionen für verschiedene Dateitypen in vue3

Inhaltsverzeichnis Vorwort 1. Vorschau der Office...

Beispiel für die JavaScript-Funktion „CollectGarbage“

Sehen wir uns zunächst ein Beispiel für die Speic...

So verwenden Sie Vue3-Mixin

Inhaltsverzeichnis 1. Wie verwende ich Mixin? 2. ...

Lösen Sie das Problem des unzureichenden Docker-Festplattenspeichers

Nachdem der Server, auf dem sich Docker befindet,...