Hinweis:

Google Cloud Platform CloudSQL für MySQL in Oracle Cloud Infrastructure MySQL Heatwave mit Replikation migrieren

Einführung

In diesem Tutorial wird erläutert, wie Sie eine Livemigration Ihrer Google Cloud Platform CloudSQL für MySQL zu Oracle Cloud Infrastructure (OCI) MySQL Heatwave Database Service ausführen. Anhand dieses Artikels können wir verstehen, wie wir die MySQL-Replikation zwischen zwei verschiedenen Cloud-Providern verwenden können. Dies wird als Dokument für eine erfolgreiche Migration zu OCI Heatwave dienen. In diesem Tutorial nutzen wir folgende Produkte:-

  1. GCP CloudSQL für MySQL
  2. MySQL Heatwave für Online Transaction Processing (OLTP)
  3. OCI Object Storage
  4. OCI Compute als Bastion
  5. MySQL Shell

Ziele

Verbinden Sie Google Cloud Platform CloudSQL für MySQL mit MySQL Heatwave Database Service, und starten Sie dann die eingehende Replikation mit dem OCI-DB-System. Wir werden den allgemeinen Überblick über die Konnektivität zwischen Google Cloud Platform und MySQL abdecken, aber detaillierte Netzwerkmöglichkeiten zwischen Google Cloud Platform CloudSQL und MySQL Heatwave können in der offiziellen Dokumentation referenziert werden.

Architektur

Im Folgenden finden Sie eine Beispielarchitektur der Lösung auf hoher Ebene.

Hauptbild

Die gepunktete Linie stellt den Datenfluss dar, d.h. von GCP Cloud SQL für MySQL zum Objektspeicher für das erste Dataset. Sobald die Daten im Objektspeicher verfügbar sind, verwenden wir weitere Replikationskanäle, die mit dem OCI MySQL Heatwave-DB-System angeboten werden.

Voraussetzungen

Im Rahmen dieses Tutorials verwenden wir die eingehende Replikation. Mit Hilfe der eingehenden Replikation verwenden wir den in MySQL Heatwave Database Service konfigurierten Replikationskanal und können damit Transaktionen von einem Standort an einen anderen senden. Unsere Quellen können unterschiedlich sein, d.h. On Premise, Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform usw. In diesem Tutorial konzentrieren wir uns auf Google Cloud Platform Cloud SQL für MySQL, und unser Ziel ist MySQL Heatwave Database Service.

Weitere Informationen zum Überblick über MySQL Inbound Replication finden Sie hier. Dieses Tutorial ist praktisch, da es auch eine detaillierte Beschreibung der Quellkonfiguration, das Erstellen von Replikationsbenutzern, das Erstellen eines Replikationskanals und dessen Einschränkungen bietet.

Wir teilen den gesamten Migrationsprozess in die folgenden allgemeinen Schritte auf.

  1. Zugriff auf Cloud SQL der vorhandenen Google Cloud Platform für MySQL
  2. Vorbereitung des Cloud SQL der Google Cloud Platform für MySQL
  3. Bastion auf OCI mit MySQL Shell
  4. Überlegungen zum Networking zwischen Google Cloud Platform Cloud SQL für MySQL und OCI Heatwave-DB-System
  5. Konfiguration des Object Storage-Buckets auf OCI
  6. Daten in OCI Object Storage exportieren
  7. Erstellung eines neuen DB-Systems auf OCI
  8. Replikationskanal auf OCI erstellen

Aufgabe 1: Auf vorhandene Google Cloud Platform Cloud SQL für MySQL zugreifen

Wir verwenden die Beispieldatenbank, die auf Google Cloud Platform's Cloud SQL für MySQL gehostet wird, zu unserem Migrationszweck. Vorhandene MySQL-Instanz wird im öffentlichen Subnetz gehostet, was Google Cloud Platform zulässt. Daher verwenden wir sie als Quelldatenbank. Angenommen, Google Cloud Platform CloudSQL for MySQL führt Enterprise Edition mit MySQL Version 8.0 aus.

Bild 1

Bild 2

Sobald wir die öffentliche IP kennen, können wir unsere IP-Adresse auf die Ausnahmeliste setzen und problemlos eine Verbindung zum MySQL-Client herstellen. Sie können auch die MySQL-Shell oder das gcloud-Utility verwenden, um eine Verbindung zur Datenbank herzustellen. Wir können die Ausnahmeliste unserer öffentlichen IP durchführen, indem wir im Netzwerkabschnitt für Google Cloud Platform Cloud SQL für MySQL hinzufügen und auf Änderungen speichern klicken.

Bild 3

Hinweis: Hier werden auch weitere IPs hinzugefügt. In den späteren Abschnitten wird darüber gesprochen.

Nachdem wir eine Verbindung hergestellt haben, können wir die vorhandenen Datenbanken in der Google Cloud Platform CloudSQL für die Instanz MySQL abfragen. Zu unserem Migrationszweck konzentrieren wir uns nur auf die Beispieldatenbank Sakila.

Bild 4

Aufgabe 2: Google Cloud Platform Cloud SQL für MySQL vorbereiten

Da die eingehende Replikation verwendet wird, müssen zwei Schritte auf dem Quellserver ausgeführt werden. Wir müssen einen Benutzer erstellen, der für die Replikation verwendet wird. Außerdem müssen wir sicherstellen, dass GTID auf unserem Quellserver aktiviert ist. Mit GTIDs (globale Transaktions-ID) kann jede Transaktion identifiziert und verfolgt werden, während sie auf dem ursprünglichen Quellserver festgeschrieben wird. Dieselbe Transaktion wird dann auf das Zielreplikat angewendet.

  1. Erstellen Sie einen Replikationsbenutzer, und weisen Sie Rollen mit den folgenden Befehlen zu.

    mysql> create user repl@'%' IDENTIFIED BY 'yourreplpassword' REQUIRE SSL;
    mysql> grant replication slave on *.* to repl@'%';
    mysql> select user from mysql.user;;
    
  2. Stellen Sie sicher, dass GTIDs aktiviert sind. Standardmäßig sind GTIDs aktiviert. Falls sie nicht aktiviert sind, können Sie sie aktivieren.

    mysql>show global variables like 'gtid%';

    Bild 5

Aufgabe 3: Bastion auf OCI mit MySQL Shell bereitstellen

Mit Oracle Cloud Infrastructure sind MySQL-DB-Systemendpunkte nicht direkt über das Internet zugänglich. Der Grund dafür ist eine verbesserte Sicherheit, die mit Hilfe des privaten Endpunkts unter dem konfigurierten VCN bereitgestellt wird. Daher müssen wir den OCI MySQL Heatwave Database Service mit einer Compute-Instanz, einem VPN, einer Bastion oder einem Network Load Balancer verbinden, um auf den privaten Endpunkt zuzugreifen.

Sie können eine der oben genannten Optionen auswählen. In unserem Fall verwenden wir die Compute-Instanz, die als Bastion für den MySQL Heatwave Database Service fungiert. Den Rest der Optionen finden Sie hier.

Bei der Verwendung der Compute-Instanz müssen wir das Compute im öffentlichen Subnetz unseres VCN bereitstellen, in dem das private Subnetz MySQL Heatwave Database Service hostet. Beim Konfigurieren der Compute-Instanz müssen Sie sich nicht um die Ressourcenkonfiguration für die Compute-Instanz kümmern, da sie nur für die Installation der MySQL-Shell oder des MySQL-Clients und für die Verbindung mit Google Cloud Platform Cloud SQL für MySQL verwendet wird.

Informationen zum Erstellen einer Compute-Instanz finden Sie hier.

Wie Sie im folgenden Image sehen, haben wir die Compute-Instanz im öffentlichen Subnetz des VCN erstellt, unter dem MySQL Heatwave Database Service gehostet wird. Dieser Bastion-Server fungiert als Zwischenprodukt zwischen OCI und Google Cloud Platform, wo wir auf beide MySQL-Instanzen zugreifen können. Um eine Verbindung zur MySQL-Datenbankinstanz herzustellen, können Sie entweder die MySQL-Shell oder den MySQL-Client verwenden.

Bild 6

Installieren Sie die Mysql-Shell, indem Sie den folgenden Befehl ausführen.

`sudo yum install mysql-shell`

Weitere Informationen finden Sie in der Dokumentation.

Aufgabe 4: Überlegungen zum Networking zwischen Cloud SQL für MySQL und OCI MySQL Heatwave Database Service prüfen

Wichtig ist hier, dass die Kommunikation zwischen Quell- und Zielserver erfolgreich hergestellt wird.

Auf der Google Cloud Platform-Konsole müssen wir sicherstellen, dass die öffentliche IP-Adresse für unsere Bastioninstanz auch auf die Ausnahmeliste gesetzt ist. Dies kann mit demselben Prozess erreicht werden, den wir oben für die Verbindung der Datenbank mit dem MySQL-Client verfolgt haben.

In der OCI-Konsole muss die Kommunikation zwischen der Bastion-Compute-Instanz hergestellt werden, die im öffentlichen Subnetz von MySQLVCN und MySQL Heatwave Database Service gehostet wird, die im privaten Subnetz innerhalb desselben VCN gehostet wird. Wir müssen den Datenverkehr zulassen und können Ingress-Regeln mit im privaten Subnetz öffnen und Verbindungen zulassen.

Aufgabe 5: Object Storage-Bucket auf OCI konfigurieren

Wir müssen Objektspeicher auf OCI konfigurieren, um anfänglichen Datendump von Google Cloud Platform CloudSQL für MySQL zu speichern. Dies ist eine einmalige Aktivität. Mit diesen Daten wird die Datenbank in MySQL Heatwave Database Service erstellt.

Informationen zum Erstellen von Buckets auf OCI finden Sie unter Bucket erstellen.

Bild 7

Nachdem der obige Bucket erstellt wurde, müssen Sie eine Verbindung zwischen Objektspeicher-Bucket und Bastioninstanz herstellen. Zu diesem Zweck verwenden wir die OCI-Konfigurationsdatei, die von der MySQL-Shell verwendet wird.

Hinweis: Der Parameter key_file muss während der API-Schlüsselerstellung mit dem Speicherort des Private Keys aktualisiert werden, der in der OCI-Konsole generiert wurde.

Aufgabe 6: Daten in OCI Object Storage exportieren

Wir verwenden das Shell-Utility MySQL auf dem Bastionserver, um Daten aus dem Cloud-SQL-Code der Google Cloud Platform für MySQL zu exportieren. Das Shellutility MySQL ist ein leistungsstarkes Tool, mit dem Sie eine ganze Instanz auf einmal exportieren und verschiedene Optionen bereitstellen können.

In dieser Übung exportieren wir das Schema aus der CloudSQL für die Mysql-Datenbank von Google Cloud Platform in unseren OCI-Objektspeicher.

Stellen Sie zunächst über unsere Bastion-Compute-Instanz eine Verbindung zur MySQL-Instanz her.

Bild 12

util.dumpSchemas(["sakila"], "", { osBucketName: "MysqlBucket", osNamespace: "orasenatdpltintegration01", ocimds: true, ociParManifest: true, threads: 8, compatibility: ["force_innodb", "skip_invalid_accounts", "strip_definers", "strip_restricted_grants",  "strip_tablespaces"], dryRun: "true"})

Je nach Anforderung können die restlichen Optionen verwendet werden. Weitere Informationen finden Sie hier.

Bild 13

Prüfen Sie nach Abschluss des Trockenlaufs die Ausgabe, und lösen Sie Probleme. Wenn keine Kompatibilitätsprobleme vorliegen, führen Sie den Vorgang ohne dryRun wie unten beschrieben aus:-

Bild 14

Sie enthält detaillierte Informationen zur Exportaktivität sowie die Dauer. Da es sich um eine Beispieldatenbank mit rund 45k Datensätzen handelt, wurde sie schnell beendet.

Nach dem erfolgreichen Prozess sind Ihre Daten nun in Ihrem Bucket vorhanden, der Bestandteil des Objektspeichers ist.

Bild 15

Aufgabe 7: Neues DB-System auf OCI erstellen

Weitere Informationen zum Konfigurieren des MySQL-DB-Systems finden Sie unter DB-Systeme erstellen.

Denken Sie nur daran, dass wir bereits Daten im Objektspeicher haben. Verwenden Sie das also, um das DB-System zu konfigurieren. Sie können die Daten auch später laden, aber diese Option spart viel Zeit. Zur Verwendung dieser Option müssen Sie eine PAR-Anforderung erstellen.

Bild 16

Bild 17

Stellen Sie sicher, dass Sie die hier generierte URL gespeichert haben, da diese wie unten verwendet wird.

Bild 18

Nachdem Sie die PAR-URL angegeben haben, wird das DB-System MySQL automatisch mit der Sakila-Datenbank erstellt.

Führen Sie zur Validierung den folgenden Befehl aus.

Bild 19

Daraufhin befindet sich die Quelldatenbank im Ziel-DB-System. Jetzt wird die Replikation zwischen Quelle und Ziel erstellt.

Aufgabe 8: Replikationskanal auf OCI erstellen

Mit Hilfe von Replikationskanälen wird das Quelldatenbanksystem mit dem Zieldatenbanksystem verbunden. Alle Transaktionen werden mithilfe dieser Kanäle kopiert. Die Erstellung dieser Kanäle ist ziemlich einfach, da wir nur wenige Details über unsere Quelle und unser Ziel angeben müssen. Es wird immer empfohlen, verschlüsselte Verbindungen zu verwenden. Deshalb haben wir beim Erstellen des Benutzers in früheren Schritten das Schlüsselwort SSL angegeben.

Da die Replikationsquelle unterschiedlich sein kann, ermöglichen wir auch Kanalfilter, die für verschiedene Public Cloud-Provider variieren. Weitere Informationen dazu finden Sie hier.

Die folgende Abbildung zeigt verschiedene Optionen, die beim Erstellen des Replikationskanals auf OCI vorhanden sind. Sie müssen den Quellhostnamen oder die öffentliche IP-Adresse zusammen mit der Portnummer angeben. Wir authentifizieren uns mit Hilfe des Repl-Benutzers, den wir zuvor erstellt haben.

Bild 20

Bild 21

Außerdem geben Sie das Zieldatenbanksystem an, das Sie für die Replikation erstellt haben. Bei Replikationsfiltern steht Ihnen eine Option zur Verfügung, mit der Sie gegebenenfalls Ihre Replikationsfilter aus dem Dropdown-Menü auswählen können.

Wenn das Quellsystem nach dem Export nicht weiter geladen wird, sollte der Replikationskanal aktiviert und abgeschlossen werden. Es besteht jedoch die Möglichkeit, dass die Last aufgrund einer GTID-Unstimmigkeit inkonsistent ist und erforderliche Maßnahmen ergriffen werden müssen. Es gibt verschiedene Phasen des Replikationskanals. Die zugehörigen Details finden Sie hier.

Einzelheiten zu den häufigsten Fehlermeldungen, die während der Konfiguration der eingehenden Replikation auftreten können, finden Sie im Leitfaden zur Fehlerbehebung.

Fügen Sie Dummy-Daten in die Google Cloud Platform-Quelle ein, wie in der folgenden Abbildung dargestellt.

Bild 21

Fragen Sie die Beispieldatenbank unter MySQL Heatwave Database Service ab.

Bild 22

In der Konsole wird angezeigt, dass zwischen Quelle und Ziel keine Verzögerung besteht und Transaktionen kopiert und festgeschrieben werden. Daher können wir Replikationskanäle für Disaster Recovery und Migration verwenden. Basierend auf ordnungsgemäßer Planungs- und Anwendungsausfallzeit können wir Cutover-Aktivitäten ausführen und den MySQL Heatwave-Datenbankservice verwenden, der Ihre One-Stop-Lösung für OLTP-Transaktionen und analytische Workloads ist.

Nächste Schritte

In diesem Tutorial wurde gezeigt, dass OCI MySQL Heatwave Database Service einen ziemlich einfachen Mechanismus für die Verwendung der eingehenden Replikation bereitstellt. Es unterstützt mehrere Quellen und stellt sogar Replikationskanalfilter in Bezug auf diese Quellen bereit. Die eingehende Replikation kann verwendet werden, um Ihr Dataset in Oracle Cloud aufzunehmen und das Heatwave-Angebot zu verwenden. Nicht nur dies, MySQL Heatwave Lakehouse wurde eingeführt, und Sie können große Datenmengen in Terabyte in mehreren Formaten bereitstellen. Weitere Informationen finden Sie unter MySQL Heatwave Database Service und wie Sie die Abfrageperformance durch In-Memory Query Accelerator maximieren.

Danksagungen

Weitere Lernressourcen

Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem die Website education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Produktdokumentation finden Sie im Oracle Help Center.