Daten in Oracle HeatWave importieren

Verwenden Sie die Shell MySQL, um eine Verbindung zum Datenbanksystem herzustellen und Ihre Daten mit den Utilitys zum Laden von Dumps und Dumps der Shell MySQL in Oracle HeatWave zu importieren.

Anweisungen zum Einrichten von Clientverbindungen zu einem Datenbanksystem und zum Installieren von MySQL Shell finden Sie unter Verbindung zu Oracle herstellen HeatWave.

Im Folgenden finden Sie eine Zusammenfassung eines Prozesses mit Oracle Database Service for Azure zum Exportieren von Daten aus einer lokalen MySQL-Serverinstanz und zum Importieren in das Datenbanksystem für das HeatWave-Cluster:

  • Verwenden Sie in Ihrem lokalen Netzwerk eines der Dumputilitys von MySQL Shell, um die Daten aus der Serverinstanz MySQL in ein Set mit lokalen Dumpdateien zu exportieren. Wenden Sie die Kompatibilitätsoptionen für Oracle HeatWave an.
  • Übertragen Sie die Dumpdateien mit Ihrer bevorzugten Dateiübertragungsmethode an eine Azure-VM, die eine Verbindung zum Datenbanksystem herstellen kann.
  • Verwenden Sie auf der Azure-VM das Dumpladeutility der Shell MySQL, um die Dumpdateien in das Datenbanksystem zu importieren. Laden Sie die Daten dann mit dem Feature "Automatisches paralleles Laden" von Oracle HeatWave in die HeatWave-Knoten.
Wenn Sie diesen Prozess mit Beispieldumpdateien testen möchten, die bereits von den Dumputilitys von MySQL Shell erstellt wurden, können Sie den airportdb-Download verwenden (etwa 640 MB). Zum Herunterladen und Entpacken verwenden Sie die folgenden Befehle:

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

wget https://downloads.mysql.com/docs/airport-db.zip
unzip airport-db.zip
Verwenden Sie unter Windows die angegebene URL, um das ZIP-Archiv herunterzuladen. Das Entpacken des komprimierten tar- oder ZIP-Archivs führt zu einem Verzeichnis namens airport-db, das die Datendateien enthält.

Führen Sie die folgenden Schritte im Einzelnen aus:

  1. Verwenden Sie das Instanzdumputility util.dumpInstance oder das Schemadumputility util.dumpSchemas der Shell MySQL, um die Daten aus einer MySQL-Serverinstanz in ein Set mit lokalen Dumpdateien auszugeben.
    Die Referenzdokumentation für die Dumputilitys von MySQL Shell finden Sie unter Instanzdumputility, Schemadumputility und Tabellendumputility. Hier finden Sie die Syntax zum Aufrufen der Utilitys sowie die vollständige Liste der Optionen, die Sie zur Strukturierung der Dumpausgabe hinzufügen können, z.B. zum Ein- und Ausschließen von Tabellen.
    Wenn Sie den Prozess mit airportdb ausführen, können Sie diesen Schritt überspringen, es sei denn, Sie möchten die Datenübertragung von Ihrem lokalen Netzwerk zur Azure-VM ausprobieren. Laden Sie in diesem Fall die airportdb-Dateien herunter, und dekomprimieren Sie sie auf dem lokalen Rechner.
    1. Starten Sie auf einem Rechner im lokalen Netzwerk die Shell MySQL, und wählen Sie den Modus JavaScript aus, indem Sie \js oder den Python-Modus eingeben, indem Sie \py eingeben. Diese Beispiele werden im Modus JavaScript gezeigt.
    2. Führen Sie den folgenden Befehl aus, um eine globale Session zu starten, indem Sie eine Verbindung zum Endpunkt der MySQL Server-Instanz herstellen:
      \connect <UserName>@<EndpointIPAddress>
      • \connect: Der Shell-Befehl MySQL, um eine neue Verbindung herzustellen.
      • <UserName>: Der Benutzername für ein Administratorkonto für die MySQL Server-Instanz.
      • <EndpointIPAddress>: Die IP-Adresse des Endpunkts der MySQL Server-Instanz.
      Geben Sie das Kennwort für den Administratoraccount ein, wenn Sie dazu aufgefordert werden.
    3. Führen Sie einen Trockenlauf des Dumpprozesses aus, um Probleme hinsichtlich der Kompatibilität mit einem Oracle-Datenbanksystem HeatWave zu ermitteln. Sie können diese Probleme beheben, wenn Sie den Dumpprozess real ausführen.
      Verwenden Sie die folgenden Optionen für den Trockenlauf:
      dryRun: true
      Verwenden Sie diese Option bei der ersten Ausführung des Utilitys. Dadurch führt das Utility Kompatibilitätsprüfungen durch und listet die Ergebnisse auf, erstellt jedoch keine Dumps für die Daten.
      ocimds: true
      Mit dieser Option aktivieren Sie die Prüfungen und Änderungen auf Kompatibilität mit Oracle HeatWave. In einem Trockenlauf überprüft die Option das Utility auf Probleme in der Datenstruktur, die vor dem Import behoben werden müssen.
      Geben Sie einen Speicherort für die Dumpdateien an. In diesem Beispiel werden mit dem Instanzdumputility alle Schemas aus der Instanz in Dateien im Ordner C:/Users/hanna/worlddump ausgegeben, obwohl die Dateien noch nicht erstellt werden:
      util.dumpInstance("C:/Users/hanna/worlddump", {dryRun: true, ocimds: true})
      Sie erhalten eine Antwort wie diese mit den in der Dumpausgabe aufgeführten Problemen:
      
      Checking for compatibility with MySQL Database Service 8.0.30
      ...
      Compatibility issues with MySQL Database Service 8.0.30 were found. Please use the 
      'compatibility' option to apply compatibility adaptations to the dumped DDL.
      Util.dumpInstance: Compatibility issues were found (RuntimeError)
    4. Führen Sie den eigentlichen Dumpprozess aus, entfernen Sie die Option dryRun, und wenden Sie alle Kompatibilitätsänderungen an, die Sie in der Dumpausgabe empfohlen haben.
      Verwenden Sie diese Optionen für den realen Dump:
      ocimds: true
      Mit dieser Option aktivieren Sie die Prüfungen und Änderungen auf Kompatibilität mit Oracle HeatWave. Im realen Dumpprozess nimmt die Option Änderungen an den Dumpmetadaten vor, sodass der Import in einem Datenbanksystem funktioniert, und prüft auf verbleibende Probleme in der Datenstruktur, die nicht von den Kompatibilitätsänderungen abgedeckt werden.
      compatibility: [array of strings]
      Mit dieser Option können Sie der Dumpausgabe Kompatibilitätskorrekturen hinzufügen. Listen Sie die Änderungsoptionen auf, die in den Ergebnissen der Kompatibilitätsprüfungen angefordert werden.
      Beispiele:
      util.dumpInstance("C:/Users/hanna/worlddump", {
              > ocimds: true, compatibility: ["strip_definers", "strip_restricted_grants"]})
      Das Utility gibt die Metadaten und Daten in eine Gruppe von Dumpdateien in dem angegebenen Verzeichnis aus.
  2. Verwenden Sie Ihre bevorzugte Dateiübertragungsmethode, um eine Verbindung zu einer Azure-VM herzustellen, die eine Verbindung zum Datenbanksystem herstellen kann. Übertragen Sie alle Dumpdateien und den enthaltenen Ordner auf die Azure-VM.
    Wenn Sie den Prozess mit airportdb ausprobieren, können Sie die Dateien auf der Azure-VM herunterladen und entpacken.
  3. Verwenden Sie das Dumpladeutility util.loadDump der Shell MySQL auf der Azure-VM, um die Dumpdateien in das Datenbanksystem hochzuladen.
    Die Referenzdokumentation zum Dumpladeutility der Shell MySQL mit der Syntax und weiteren Optionen, die Sie zur Steuerung des Dumpuploads hinzufügen können, finden Sie unter Dumpladeutility.
    1. Starten Sie auf der Azure-VM die Shell MySQL, und wählen Sie den Modus JavaScript aus, indem Sie \js oder den Python-Modus eingeben, indem Sie \py eingeben. Diese Beispiele werden im Modus JavaScript gezeigt.
    2. Führen Sie den folgenden Befehl aus, um eine globale Session zu starten, indem Sie eine Verbindung zum Endpunkt des Datenbanksystems herstellen:
      \connect <UserName>@<DBSystemEndpointIPAddress>
      • \connect: Der Shell-Befehl MySQL, um eine neue Verbindung herzustellen.
      • <UserName>: Der Benutzername für den Administratoraccount, den Sie für das Oracle-Datenbanksystem HeatWave eingerichtet haben.
      • <DBSystemEndpointIPAddress>: Die IP-Adresse des Endpunkts des Datenbanksystems. Sie finden dies auf der Registerkarte Verbinden auf der Seite mit den Deployment-Details.
      Geben Sie das Kennwort für den Administratoraccount ein, wenn Sie dazu aufgefordert werden.
    3. Führen Sie das Utility zum Laden von Dumps aus, um die Dumpdateien aus dem Speicherort, in dem Sie sie auf der Azure-VM gespeichert haben, in das Datenbanksystem hochzuladen.
      Sie können zuerst einen Trockenlauf durchführen, wenn Sie prüfen möchten, ob keine Probleme vorliegen. Beispiele:
      util.loadDump("/mnt/data/worlddump", {dryRun:true})
      In diesem Beispiel für einen echten Upload wird das GTID-Set an das Datenbanksystem übertragen, und es wird eine Fortschrittsstatusdatei erstellt, damit Sie den Upload abbrechen und fortsetzen können:
      util.loadDump("/mnt/data/worlddump", {progressFile: "loadprogress.json", updateGtidSet: append})
    4. Wenn der Upload abgeschlossen ist, können Sie prüfen, ob die Daten im Datenbanksystem vorhanden sind, indem Sie die Shell MySQL in den SQL-Modus umschalten (geben Sie \sql ein, und drücken Sie die Eingabetaste). In diesem Modus können Sie mit MySQL-Anweisungen auf die Datenbanken und Tabellen zugreifen.
  4. Wenn Sie die HeatWave-Knoten bereits erstellt haben, laden Sie die Daten mit dem Feature "Automatisches paralleles Laden" von Oracle HeatWave in diese Knoten. Das automatische parallele Laden erleichtert das Laden von Daten in HeatWave, indem viele der erforderlichen Schritte automatisiert werden. Er kann von einem beliebigen MySQL-Client oder -Connector ausgeführt werden und wird als Stored Procedure namens heatwave_load implementiert, die sich im Schema MySQL sys befindet.
    1. Starten Sie auf der Azure-VM die Shell MySQL, und wählen Sie den SQL-Modus aus, indem Sie \sql eingeben.
    2. Führen Sie den folgenden Befehl aus, um eine globale Session zu starten, indem Sie eine Verbindung zum Endpunkt des Datenbanksystems herstellen:
      \connect <UserName>@<DBSystemEndpointIPAddress>
      • \connect: Der Shell-Befehl MySQL, um eine neue Verbindung herzustellen.
      • <UserName>: Der Benutzername für den Administratoraccount, den Sie für das Cluster HeatWave eingerichtet haben.
      • <DBSystemEndpointIPAddress>: Die IP-Adresse des Endpunkts des Datenbanksystems. Sie finden dies auf der Registerkarte Verbinden auf der Seite mit den Deployment-Details.
      Geben Sie das Kennwort für den Administratoraccount ein, wenn Sie dazu aufgefordert werden.
    3. Rufen Sie sys.heatwave_load auf, um die Daten in das HeatWave-Cluster zu laden, und benennen Sie das Schema (die Datenbank), das Sie laden möchten.
      Beispiel: Setzen Sie für die Beispieldatenbank airportdb den folgenden Befehl ab:
      CALL sys.heatwave_load(JSON_ARRAY("airportdb"),NULL);
Nachdem die Daten in das Datenbanksystem importiert wurden, können Sie mit dem Autopilot HeatWave eine geeignete Anzahl von HeatWave-Knoten für das Cluster HeatWave schätzen. Anweisungen finden Sie unter Provisioning von HeatWave-Knoten.