Erste Schritte mit MySQL HeatWave auf OCI

MySQL HeatWave macht Sinn, wenn Sie gemischte Transaktions- und Analyse-Workloads in MySQL ausführen oder Daten für Analysen in eine separate Datenbank verschieben. Anstatt komplizierte ETL-Pipelines zum Verschieben von Daten zu erstellen, beschleunigt HeatWave – ein integrierter, leistungsstarker In-Memory-Abfragebeschleuniger – die MySQL-Performance für Analysen und gemischte Workloads um Größenordnungen, ohne Änderungen an aktuellen Anwendungen. Der Service basiert auf der MySQL Enterprise Edition, mit der Entwickler schnell sichere Cloud-native Anwendungen mit der weltweit gängigsten Open Source-Datenbank erstellen und bereitstellen können.

Oracle hat MySQL HeatWave entwickelt, damit sich Entwickler auf ihre Anwendungen konzentrieren können. Sie müssen nicht zwei Datenbanken für OLTP und OLAP verwalten, und Sie können sichere Echtzeitanalysen ohne die Komplexität, Latenz und Kosten der ETL-Duplizierung erhalten. MySQL HeatWave ist ein vollständig verwalteter Service, der Aufgaben wie Backup, Recovery sowie Datenbank- und Betriebssystem-Patching automatisiert. "Sorgen Sie sich weniger, knirschen Sie mehr", wie wir sagen. MySQL HeatWave wird vom Entwicklungsteam MySQL bei Oracle entwickelt und unterstützt.

Um mit OCI zu beginnen, erstellen wir ein VCN, stellen ein MySQL-DB-System bereit und erstellen ein HeatWave-Cluster, rufen einige Daten ab und analysieren sie. Suche nach den Ersten Schritten mit MySQL HeatWave auf AWS. Das zeigt Ihnen, wie Sie MySQL HeatWave in einem Multi-Cloud-Szenario nutzen können. Was für eine Zeit zum Leben!

Da wir gerade erst anfangen, beginnen wir wirklich am Anfang und erstellen ein VCN mit dem richtigen Zugriff. Anschließend erfahren Sie, wie Sie ein HeatWave-Cluster in OCI erstellen.

Voraussetzungen

  • Ein OCI-Account und ein Oracle Cloud-Accountname
  • Administratorzugriff
  • Ein kompatibler Browser (Chrome 69+, Safari 12.1+, Firefox 62+ oder ein Browser, für den Oracle Jet zugelassen ist)

Überblick

  1. VCN erstellen und für Datenbankzugriff konfigurieren
  2. Benutzer und Gruppen erstellen (falls noch nicht geschehen)
  3. DB-Systeme mit einer HeatWave-kompatiblen Ausprägung erstellen
  4. Stellen Sie eine Verbindung zu Cloud Shell her, und verwenden Sie die Shell MySQL
  5. Beispieldaten importieren
  6. HeatWave-Cluster hinzufügen
  7. Abfragen ausführen

In unserem Beispiel verwenden wir einen optimierten Ansatz, um die Verwendung von HeatWave einzurichten.

Beginnen wir mit den Grundlagen!

VCN erstellen und für Datenbankzugriff konfigurieren

Menu: Home > Netzwerk > Virtuelle Cloud-Netzwerke

Erstellen Sie VCN und Subnetze mit "Virtuelle Cloud-Netzwerke" > "VCN-Assistenten starten" > "VCN mit Internetverbindung erstellen". Natürlich erhalten Sie auch ein privates Subnetz.

Screenshot des VCN-Assistenten

Der praktische Assistent führt Sie durch die Erstellung einer Netzwerkumgebung für Ihr System, obwohl es viele Möglichkeiten gibt, dies zu konfigurieren, lassen Sie uns nicht abgelenkt werden. Beachten Sie, dass ich das Compartment ausgewählt habe, das ich zuvor eingerichtet habe, my_heatwave_testing - weil das wichtig ist!

Screenshot der VCN-Konfiguration

Jetzt können wir die Sicherheitsliste des VCN so konfigurieren, dass Traffic über MySQL Database Service-Ports zulässig ist. Klicken Sie auf das private Subnetz für das von Ihnen erstellte VCN, und klicken Sie auf die Sicherheitsliste dafür.

Screenshot der Sicherheitsliste

Klicken Sie nun auf "Sicherheitsliste hinzufügen".

Wir fügen einige Ingress-Regeln hinzu, die für die Aktivierung der richtigen Ports (3306 und 33060) erforderlich sind. Hier sind die Details:



Source CIDR: 0.0.0.0/0
Destination Port Range: 3306,33060
Description: MySQL Port

Klicken Sie auf "Ingress-Regeln hinzufügen".

Screenshot der Ingress-Regeln

Sieht gut aus!

Benutzer und Gruppen erstellen (falls noch nicht geschehen)

Wenn Sie bereits der Administrator sind, können Sie den nächsten Schritt überspringen. Dies ist jedoch der Fall, wenn Sie dem OCI-Mandanten Benutzer hinzufügen, die möglicherweise auch Zugriff zur Verwaltung des DB-Systems benötigen. Wir müssen Berechtigungen festlegen und den Zugriff etwas einschränken, selbst in unserem Beispiel "streamlined". Sie können jedoch hier alles über die Verwaltung von Gruppen lesen. Normalerweise erstellen wir eine Gruppe, erstellen Policys und fügen der Gruppe Benutzer hinzu.

Lassen Sie uns mit den Identitäts- und Sicherheitsoptionen befreundet sein.

Erstellen Sie eine Gruppe für Ihre Benutzer. In meinem Beispiel habe ich eine Gruppe mit dem Namen MySQL Admins erstellt.

Fügen Sie der Gruppe Benutzer hinzu. In unserem Beispiel werden wir uns dieser Gruppe anschließen.

Natürlich erstellen Sie für eine Gruppe zuerst alle Benutzer, die Sie benötigen, fügen Sie diese zu der Gruppe hinzu, die Zugriff auf den von Ihnen festgelegten Ebenen benötigen, und seien Sie versichert, dass Sie sie mit den entsprechenden Zugriffskontrollen loslassen können.

Wir erlauben den Zugriff, indem wir Richtlinien festlegen, die es einer Gruppe ermöglichen, vollen Zugriff (Admins) zu haben, und einer Gruppe mit eingeschränktem Zugriff (zum Beispiel Datenbankbenutzer).

Beispiel-Policys:



Allow group MySQLAdmins to {SUBNET_READ, SUBNET_ATTACH, SUBNET_DETACH, VCN_READ, COMPARTMENT_INSPECT} in tenancy
Allow group MySQLAdmins to manage mysql-family in tenancy
Allow group MySQLAdmins to use tag-namespaces in tenancy

Dadurch ist es nur möglich, unser Compartment zu konfigurieren und zu verwalten, und es wird der Geltungsbereich des Zugriffs definiert, der auf die Datenbankinstanz angewendet wird.

Weitere Informationen zum Hinzufügen von Benutzern und zum Festlegen von Policys in OCI finden Sie in dieser Dokumentation.

DB-System mit kompatibler Ausprägung HeatWave erstellen

Menü > Datenbanken > DB-Systeme

DB-System erstellen

Beachten Sie, dass Sie vom System eine Warnung erhalten, wenn Sie noch keine Benutzer, kein VCN usw. eingerichtet haben. Das ist schön. Vergessen Sie nicht, zu prüfen, in welchem Compartment Sie dies erstellen, erneut unter "Listengeltungsbereich" auf der linken Seite. Klicken Sie auf "DB-System erstellen".

Screenshot der DB-Systeminformationen

Prüfen Sie das Compartment erneut, geben Sie ihm einen Namen, und wählen Sie (natürlich) HeatWave aus.

Screenshot von "Administratorzugangsdaten erstellen"

Sie erstellen Admin-Zugangsdaten. Speichern Sie diese an einem praktischen, aber sicheren Ort.

In "Networking konfigurieren" verwenden Sie das zuvor erstellte virtuelle Cloud-Netzwerk, aber wir verwenden das private Subnetz. Behalten Sie die Standard-Availability-Domain bei, und gehen Sie zu "Hardware konfigurieren".

Screenshot der Konfigurationsplatzierung

Stellen Sie sicher, dass im Abschnitt "Hardware konfigurieren" die ausgewählte Ausprägung "MySQL" lautet. HeatWave.VM.Standard.

Außerdem:

  • Anzahl CPU-Cores: 16
  • Speichergröße: 512 GB
  • Datenspeichergröße: 1024
Screenshot der Hardwarekonfiguration

Im Abschnitt "Backup konfigurieren" können Sie das standardmäßige Backupfenster von sieben Tagen beibehalten.

Screenshot der Konfiguration des Sicherungsplans

Blättern Sie weiter und klicken Sie auf Erweiterte Optionen anzeigen.

Gehen Sie zur Registerkarte "Networking", und geben Sie im Feld "Hostname" den genauen Namen des DB-Systems ein. Dadurch kann sich Ihr Cluster bei DNS registrieren und Sie können über einen vollqualifizierten Domainnamen (FQDN) auf den Host zugreifen.

Screenshot der Netzwerkkonfiguration

Stellen Sie sicher, dass die Portkonfiguration Folgendes entspricht:

  • MySQL Port: 3306
  • MySQL X-Protokollport: 33060

In diesem Beispiel werden Daten während der Ressourcenerstellung automatisch mit Daten importiert, die in einem Object Storage-Bucket gespeichert sind und über eine vorab authentifizierte Anforderung (PAR) verfügbar gemacht werden.

Screenshot des Datenimports

Wenn Sie die Daten lieber mit der Shell MySQL laden möchten, können Sie diesen Schritt überspringen.

Klicken Sie auf das Register "Datenimport". Sie werden aufgefordert, die URL für Ihre PAR hier einzufügen. Die Objekt-PAR-URL muss eine Manifestdatei sein, die mit der Option ociParaMifest des Shell-Dumps MySQL utilityHere erstellt werden kann. Sie können auch eine Objektspeicher-Bucket-PAR oder Objekte mit Präfix-PAR verwenden.

Hier ist ein Beispiellink, mit dem Sie Airport-DB zu Testzwecken importieren können.



https://objectstorage.us-ashburn-1.oraclecloud.com/p/zRBSs7nKURyZRcIoV4QlYhascC5gkZcJeQoBS8c2ssyEPID3PSDAnh73OMClQQH4/n/idazzjlcjqzj/b/airportdb-bucket-10282022/o/airportdb/@.manifest.json

Alle Einstellungen... Klicken Sie auf Erstellen!

Dieses Mal wird ein gelbes Sechseck angezeigt, schließlich wird es grün und Ihr DB-System wird hochgefahren und gestartet. Machen Sie etwas Tee oder schnappen Sie sich ein Glas Wasser, Sie haben viel getan.

Verbindung herstellen und MySQL Shell verwenden

Stellen Sie mit der praktischen Cloud Shell eine Verbindung zu MySQL und MySQL Shell her. Es ist ein kleines Linux-Terminal, das in das OCI-Dashboard eingebettet ist (und es ist bezaubernd). Klicken Sie in der oberen rechten Ecke auf das Cloud Shell-Eingabeaufforderungssymbol, und unten im Browser wird eine Befehlszeile geöffnet. Stellen Sie sicher, dass Sie das Setup des privaten Netzwerks für Ihre cloud shell konfigurieren, und wählen Sie das zuvor erstellte VCN aus.

Screenshot der mysql-Shell
Screenshot der Einrichtung des privaten mysql-Shell-Netzwerks

Die coole Sache ist, MySQL Shell ist bereits installiert!

Wenn Sie das HeatWave-kompatible DB-System erstellen, stellen Sie die Verbindung mit der MySQL-Shell her.

mysqlsh --host  -u  -p

Sie können mehr über die MySQL Shell erfahren.

Weitere Informationen zum Verbinden von Datenbanksystemen.

Daten importieren

Wenn Sie während der Ressourcenerstellung mit der PAR-Option Daten importieren möchten, können Sie diesen Schritt überspringen. Andernfalls können Sie hier fortfahren, um AirportDB (PDF) zu importieren.

In Cloud Shell:



wget https://downloads.mysql.com/docs/airport-db.tar.gz
tar xvzf airport-db.tar.gz

Dadurch wird ein einzelnes Verzeichnis namens airport-db erstellt, das die Datendateien enthält.

Starten Sie die Shell MySQL, und stellen Sie eine Verbindung zum DB-Systemendpunkt MySQL her:

mysqlsh _Username@DBSystem_IP_Address_or_host_Name

Wenn Sie dazu aufgefordert werden, geben Sie das zuvor angegebene Admin-Kennwort ein. Sobald eine Verbindung hergestellt ist, verwenden Sie das Dumpladerprogramm, um Daten zu importieren.

MySQL>JS> util.loadDump("airport-db", {threads: 16, deferTableIndexes: "all", ignoreVersion: true})

Der Import sollte einige Minuten dauern, dann können Sie fortfahren!

HeatWave-Cluster hinzufügen

HeatWave ist wirklich für Big Data-Sets konzipiert und erfordert eine schnelle Analyse. Obwohl ich also nur eine Beispieldatenbank importiere, können Sie so viel laden, wie Sie möchten (vorausgesetzt, Sie haben den Speicher dafür zugewiesen). Außerdem können Abfragen im Cluster ausgeführt werden, ohne dass sie in eine separate Datenbank ausgelagert werden. Es kann einige Minuten dauern, bis das Cluster erstellt wird.

Gehen Sie zu den ersten Schritten in der OCI-Konsole zu Ihrem DB-System: Datenbanken > DB-Systeme >, und klicken Sie auf das zuletzt erstellte DB-System.

Unter "Ressourcen" wird HeatWave (unter anderem praktische Elemente) angezeigt. Klicken Sie darauf.

Screenshot der Registerkarte "Ressourcen"

Natürlich möchten Sie HeatWave-Cluster hinzufügen (mit der Schaltfläche auf der rechten Seite, auf halbem Weg auf der Seite), oder klicken Sie oben auf das Menü Weitere Aktionen, und wählen Sie Heatwave-Cluster hinzufügen aus. Übernehmen Sie die Standardwerte (16 CPU-Core mit 512 GB RAM und 1 Knoten), und klicken Sie auf die Schaltfläche zum Hinzufügen des HeatWave-Clusters.

Screenshot von "Cluster hinzufügen"
Screenshot der Konfiguration des Heatwave-Clusters

Dies dauert einige Minuten, damit Sie dieses Getränk erneut erhitzen können, während sich der Cluster dreht.

Daten in HeatWave laden und Abfragen ausführen

Endlich der lustige Teil! Sobald das HeatWave-Cluster ausgeführt wird:

  1. Starten Sie die Shell MySQL, und stellen Sie eine Verbindung zum Endpunkt des DB-Systems MySQL her:
    $> mysqlsh Username@DBSystem_IP_Address_or_Host_Name
  2. Ändern Sie den Ausführungsmodus der Shell MySQL in SQL:
    MySQL>JS> \sql
  3. Wechsel zur airportdb-Datenbank:
    
    
    MySQL>SQL> USE airportdb;  
    Default schema set to `airportdb`.Fetching table and column names from `airportdb` for auto-completion... Press ^C to stop.`
  4. Daten aus MySQL InnoDB in HeatWave laden
    MySQL>SQL> call sys.heatwave_load(JSON_ARRAY(“airportdb”), NULL);
  5. Prüfen Sie mit EXPLAIN, ob die Abfrage in das Cluster HeatWave ausgelagert werden kann:
    Screenshot von mysql-Abfrage 1
    Hinweis: Wenn die Abfrage ausgelagert werden kann, wird in der Spalte Extra in der EXPLAIN-Ausgabe "Using Secondary Engine RAPID" gemeldet.
  6. Nachdem Sie geprüft haben, ob die Abfrage ausgelagert werden kann, führen Sie die Abfrage aus, und notieren Sie sich die Ausführungszeit.
    Screenshot von mysql-Abfrage 2

Sehen wir uns nun an, wie lange dies mit dem DB-System MySQL "plain vanilla" dauern würde. Dazu deaktivieren Sie die Variable use_secondary_engine.

Screenshot von mysql-Abfrage 3

Zusammenfassung

Was wir bisher getan haben, ist alles auf OCI, ein virtuelles Cloud-Netzwerk mit Ports für die Verwendung mit MySQL einzurichten, eine MySQL-Datenbank einzurichten und ein HeatWave-Cluster hinzuzufügen. Anschließend haben wir einige Testdaten importiert und einige Abfragen ausgeführt, um die Geschwindigkeit von HeatWave im Vergleich zum DB-System selbst zu ermitteln.

Möchten Sie mehr erfahren? Nehmen Sie an der Diskussion in unserem öffentlichen Slack-Kanal teil!