Präzise Instanziierung für MySQL bis MySQL mit MySQL Shell-Utilitys und Oracle GoldenGate
Die präzise Instanziierungsmethode ermöglicht das erstmalige Laden von Daten aus einer Quelldatenbank in eine Zieldatenbank, während die Quelldatenbank für Anwendungsaktualisierungen online bleibt. Diese Methode gewährleistet eine präzise Positionierung der Change Data Capture- und Delivery-Prozesse, ohne dass doppelte Daten in der Zieldatenbank vorhanden sind und HANDLECOLLISIONS im Replicat nicht verwendet werden muss.
Die genaue Instanziierung für Oracle GoldenGate für MySQL verwendet die Utilitys für MySQL-Shelldump- und -Dumpladevorgänge und wird nur zwischen einer MySQL-Quelle und einer MySQL-Zieldatenbank unterstützt.
Für diese Methode muss die Shell MySQL installiert sein. Installationsschritte sind unter folgendem Link verfügbar:
<https://dev.mysql.com/doc/mysql-shell/ 8.0/en/mysql-shell-install.html>
Ausführliche Informationen und Einschränkungen der Utilitys MySQL Shell-Dump- und Dumpladevorgänge finden Sie unter den folgenden Links:
https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-dump-instance-schema.html
https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-load-dump.html
Sie verwenden das Shell-Dumputility MySQL, um je nach Ihren Anforderungen die Instanz, das Schema oder die Tabellen MySQL zu exportieren. Anschließend laden Sie die Objekte mit dem Dumpladeutility MySQL in die Zieldatenbank. Anschließend konfigurieren Sie GoldenGate Extract und Replicat, um kontinuierliche Änderungsdaten von der Quelle in die Zieldatenbank zu replizieren.
Das Shell-Dumputility MySQL erstellt mehrere Exportdateien, von denen eine eine eine @.json-Datei ist. Diese Datei wird benötigt, um die Positionierung von Extract beim Hinzufügen zur Quelldatenbank zu bestimmen.
Im Folgenden finden Sie ein Beispiel für eine präzise Instanziierungsmethode, die einen Schemadump aus der Quellinstanz verwendet und dann in die Zielinstanz geladen wird. Anschließend wird Oracle GoldenGate für die Replikation von Änderungsdaten konfiguriert: 1. Stellen Sie eine Verbindung zur Shell MySQL her. Details zu unterstützten Verbindungsoptionen mit der Shell MySQL finden Sie unter folgendem Link: https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-connections.html
<pre class="copy"><code>mysqlsh -mysqlx -u *username* -h *hostname* -P *port*</code></pre>
-
Stellen Sie nach der Verbindung mit der Shell MySQL sicher, dass Sie sich im Modus JavaScript befinden. Es sollte ein
JS >-Prompt angezeigt werden. Wenn Sie sich im SQL-Modus befinden, wechseln Sie mit dem Schalter\jsin den Modus JavaScript:MySQL sourcehost:33060+ ssl SQL > \js -
Prüfen Sie, ob die globale Variable
local_infileaufONgesetzt ist.MySQL sourcehost:33060+ ssl JS > \sql SHOW GLOBAL VARIABLES LIKE 'local_infile';Wenn die Variable
local_infileaufOFFgesetzt ist, aktivieren Sie sie mit dem folgenden Befehl:MySQL sourcehost:33060+ ssl JS > \sql SET GLOBAL local_infile = ON; -
Verwenden Sie als Nächstes eine der folgenden Funktionen, um die Instanz, das Schema oder die Tabellen zu exportieren, die Sie exportieren möchten.
util.dumpInstance(outputUrl[, options]) util.dumpSchemas(schemas, outputUrl[, options]) util.dumpTables(schema, tables, outputUrl[, options])In diesem Beispiel wird das HR-Schema in den Ordner
~/dumps/hr-schema-srcausgegeben:MySQL sourcehost:33060+ ssl JS >util.dumpSchemas(["hr"], "~/dumps/hr-schema-src") -
Nachdem der Export abgeschlossen ist, importieren Sie das Schema mit dem Utility
util.loadDumpin die Zielinstanz. Hinweis: Wenn sich die Zielinstanz auf einem anderen System als der Quelle befindet, müssen Sie die exportierten Dateien in das Zielsystem kopieren.
<pre class="copy"><code>MySQL targethost:33060+ ssl JS >util.loadDump("~/dumps/hr-schema-tgt", {schema: "tgt-hr"})</code></pre>
-
Wenn das Utility zum Laden von Daten abgeschlossen ist, öffnen Sie die Datei
@.jsonim Quelldumpordner. Diese Datei enthält die letzte festgeschriebene Transaktion, die im Dump enthalten ist, und ein Änderungsdatenextrakt muss mit diesem Transaktionswert konfiguriert werden. Im Folgenden finden Sie ein Beispiel für die Transaktionsinformationen in der Datei @.json:"binlogFile": "binlog.000005", "binlogPosition": 1289, "gtidExecuted": "1174b383-3441-11e8-b90a-c80aa9429920:1-9,\n1174b383-3441-11e8-b90a-c80aa9429921:1-9" -
Fügen Sie der Quelldatenbank einen Extract mit dem Wert
gtidExecutedoder den WertenbinlogFileundbinlogPositionbasierend auf Ihrer Datenbankkonfiguration hinzu.-
Wenn für die Quelldatenbank
gtid_modeaufONgesetzt ist, verwenden Sie den WertgtidExecutedaus der Datei@.json, um den Extract hinzuzufügen.Ein Beispiel mit der Positionierung
GTIDSETbasierend auf dem WertgtidExecuted:ADD EXTRACT extsrc, TRANLOG GTIDSET "1174b383-3441-11e8-b90a-c80aa9429920:1-9,\n1174b383-3441-11e8-b90a-c80aa9429921:1-9" -
Wenn für die Quelldatenbank
gtid_modeaufOFFgesetzt ist, verwenden Sie beim Hinzufügen des Extract die WertebinlogFileundbinlogPositionder Datei@.json.Ein Beispiel mit der Positionierung
LOGNUMundLOGPOSbasierend auf den WertenbinlogFileundbinlogPosition:ADD EXTRACT extsrc, TRANLOG, LOGNUM 5 LOGPOS 1289
-
-
Vervollständigen Sie schließlich die Oracle GoldenGate-Konfiguration, indem Sie die folgenden Prozesse hinzufügen:
-
Entsprechender Trail für den Extract
-
Verteilungspfad, falls erforderlich
-
Ein Replicat für die Zustellung an die Zieldatenbank
-
-
Starten Sie die Oracle GoldenGate-Prozesse, und überwachen Sie Extract und Replicat, um zu bestätigen, dass sie korrekt ausgeführt werden und dass die Verzögerung nahezu in Echtzeit reduziert wird.