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.
In unserem Beispiel verwenden wir einen optimierten Ansatz, um die Verwendung von HeatWave einzurichten.
Beginnen wir mit den Grundlagen!
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.
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!
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.
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".
Sieht gut aus!
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.
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".
Prüfen Sie das Compartment erneut, geben Sie ihm einen Namen, und wählen Sie (natürlich) HeatWave aus.
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".
Stellen Sie sicher, dass im Abschnitt "Hardware konfigurieren" die ausgewählte Ausprägung "MySQL" lautet. HeatWave.VM.Standard.
Außerdem:
Im Abschnitt "Backup konfigurieren" können Sie das standardmäßige Backupfenster von sieben Tagen beibehalten.
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.
Stellen Sie sicher, dass die Portkonfiguration Folgendes entspricht:
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.
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.
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.
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.
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 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.
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.
Dies dauert einige Minuten, damit Sie dieses Getränk erneut erhitzen können, während sich der Cluster dreht.
Endlich der lustige Teil! Sobald das HeatWave-Cluster ausgeführt wird:
$> mysqlsh Username@DBSystem_IP_Address_or_Host_Name
MySQL>JS> \sql
MySQL>SQL> USE airportdb;
Default schema set to `airportdb`.Fetching table and column names from `airportdb` for auto-completion... Press ^C to stop.`
MySQL>SQL> call sys.heatwave_load(JSON_ARRAY(“airportdb”), NULL);
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.
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!