Importazione dei dati in Oracle HeatWave

Utilizzare la shell MySQL per connettersi al sistema di database e importare i dati in Oracle HeatWave con le utility di caricamento del dump e del dump della shell MySQL.

Per istruzioni su come impostare le connessioni client a un sistema di database e installare la shell MySQL, vedere Connessione a Oracle HeatWave.

Di seguito è riportato un riepilogo di un processo con Oracle Database Service for Azure per esportare i dati da un'istanza server MySQL locale e importarli nel sistema di database per il cluster HeatWave.

  • Nella rete locale, utilizzare una delle utility di dump della shell MySQL per esportare i dati dall'istanza del server MySQL in un set di file di dump locali. Applicare le opzioni di compatibilità per Oracle HeatWave.
  • Trasferire i file di dump con il metodo di trasferimento file preferito a una VM di Azure in grado di connettersi al sistema di database.
  • Nella VM di Azure, utilizzare la utility di caricamento del dump di MySQL Shell per importare i file di dump nel sistema di database, quindi utilizzare la funzione di caricamento parallelo automatico di Oracle HeatWave per caricare i dati nei nodi HeatWave.
Se si desidera provare questo processo con file di dump di esempio già creati dalle utility di dump di MySQL Shell, è possibile utilizzare il download airportdb (delle dimensioni di circa 640 MB). Per scaricarlo e decomprimerlo, utilizzare i comandi seguenti:

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

wget https://downloads.mysql.com/docs/airport-db.zip
unzip airport-db.zip
In Windows, utilizzare l'URL fornito per scaricare l'archivio Zip. La decompressione dell'archivio tar o Zip compresso determina una directory denominata airport-db, che contiene i file di dati.

Di seguito sono riportati i dettagli dei passi del processo.

  1. Utilizzare la utility di dump delle istanze MySQL della shell util.dumpInstance o la utility di dump degli schemi util.dumpSchemas per eseguire il dump dei dati da un'istanza del server MySQL a un set di file di dump locali.
    Per la documentazione di riferimento per le utility di dump di MySQL Shell, vedere Instance Dump Utility, Schema Dump Utility e Table Dump Utility. Qui è possibile trovare la sintassi per richiamare le utility e l'elenco completo delle opzioni che è possibile aggiungere per strutturare l'output di dump, ad esempio includere ed escludere le tabelle.
    Se si sta tentando di eseguire il processo con airportdb, è possibile saltare questo passo, a meno che non si desideri provare il trasferimento dei dati dalla rete locale alla VM di Azure. In tal caso, scaricare e decomprimere i file airportdb nel computer locale.
    1. In un computer della rete locale, avviare la shell MySQL e selezionare la modalità JavaScript digitando \js o la modalità Python digitando \py. Questi esempi sono mostrati in modalità JavaScript.
    2. Eseguire il comando seguente per avviare una sessione globale collegandosi all'endpoint dell'istanza di MySQL Server:
      \connect <UserName>@<EndpointIPAddress>
      • \connect: il comando della shell MySQL per stabilire una nuova connessione.
      • <UserName>: il nome utente di un account amministratore per l'istanza di MySQL Server.
      • <EndpointIPAddress>: l'indirizzo IP dell'endpoint dell'istanza di MySQL Server.
      Immettere la password per l'account amministratore quando richiesto.
    3. Eseguire un'esecuzione manuale del processo di dump per individuare eventuali problemi di compatibilità con un sistema di database HeatWave Oracle. È possibile risolvere questi problemi quando si esegue il processo di dump reale.
      Utilizzare queste opzioni per la corsa a secco:
      dryRun: true
      Utilizzare questa opzione la prima volta che si esegue la utility. Fa in modo che l'utilità esegua controlli di compatibilità ed elenchi i risultati, ma non esegua effettivamente il dump dei dati.
      ocimds: true
      Utilizzare questa opzione per abilitare i controlli e le modifiche per la compatibilità con Oracle HeatWave. In un'esecuzione manuale, l'opzione consente di verificare la presenza di eventuali problemi nella struttura dei dati che devono essere risolti prima dell'importazione.
      Specificare una posizione in cui verranno posizionati i file di dump. In questo esempio, la utility di dump delle istanze viene utilizzata per eseguire il dump di tutti gli schemi dall'istanza ai file nella cartella C:/Users/hanna/worlddump, anche se i file non sono ancora stati creati:
      util.dumpInstance("C:/Users/hanna/worlddump", {dryRun: true, ocimds: true})
      Riceverai una risposta come questa, con i problemi elencati nell'output del dump:
      
      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. Eseguire il processo di dump reale, rimuovere l'opzione dryRun e applicare le modifiche di compatibilità consigliate nell'output del dump.
      Utilizzare le seguenti opzioni per il dump reale:
      ocimds: true
      Utilizzare questa opzione per abilitare i controlli e le modifiche per la compatibilità con Oracle HeatWave. Nel processo di dump reale, l'opzione apporta modifiche ai metadati di dump in modo che l'importazione funzioni in un sistema di database e controlla eventuali problemi rimanenti nella struttura di dati non coperti dalle modifiche di compatibilità.
      compatibility: [array of strings]
      Utilizzare questa opzione per aggiungere correzioni di compatibilità all'output di dump. Elencare le opzioni di modifica richieste nei risultati dai controlli di compatibilità.
      Ad esempio:
      util.dumpInstance("C:/Users/hanna/worlddump", {
              > ocimds: true, compatibility: ["strip_definers", "strip_restricted_grants"]})
      L'utility esegue il dump dei metadati e dei dati in un set di file di dump nella posizione specificata.
  2. Utilizzare il metodo di trasferimento file preferito per stabilire una connessione a una VM di Azure in grado di connettersi al sistema di database. Trasferire tutti i file di dump e la cartella contenente nella VM di Azure.
    Se si sta tentando di eseguire il processo con airportdb, è possibile scaricare e decomprimere i file nella VM di Azure.
  3. Utilizzare la utility di caricamento del dump di MySQL Shell util.loadDump nella VM di Azure per caricare i file di dump nel sistema di database.
    Per la documentazione di riferimento per la utility di caricamento del dump di MySQL Shell, con la sintassi e altre opzioni che è possibile aggiungere per controllare il caricamento del dump, vedere Utility di caricamento dati.
    1. Nella VM di Azure, avviare la shell MySQL e selezionare la modalità JavaScript digitando \js o la modalità Python digitando \py. Questi esempi sono mostrati in modalità JavaScript.
    2. Eseguire il comando seguente per avviare una sessione globale collegandosi all'endpoint del sistema di database:
      \connect <UserName>@<DBSystemEndpointIPAddress>
      • \connect: il comando della shell MySQL per stabilire una nuova connessione.
      • <UserName>: il nome utente dell'account amministratore impostato per il sistema di database HeatWave Oracle.
      • <DBSystemEndpointIPAddress>: l'indirizzo IP dell'endpoint del sistema di database. È possibile trovarlo nella scheda Connetti della pagina dei dettagli della distribuzione.
      Immettere la password per l'account amministratore quando richiesto.
    3. Eseguire l'utility di caricamento del dump per caricare i file di dump nel sistema di database dalla posizione in cui sono stati inseriti nella VM di Azure.
      È possibile eseguire prima un'esecuzione manuale se si desidera verificare che non vi siano problemi. Ad esempio:
      util.loadDump("/mnt/data/worlddump", {dryRun:true})
      In questo esempio di caricamento reale, il set GTID viene trasferito al sistema di database e viene creato un file di stato di avanzamento in modo da poter annullare e riprendere il caricamento:
      util.loadDump("/mnt/data/worlddump", {progressFile: "loadprogress.json", updateGtidSet: append})
    4. Al termine del caricamento, è possibile verificare la presenza dei dati nel sistema di database passando alla modalità SQL della shell MySQL (digitare \sql e premere Invio). In questa modalità è possibile utilizzare le istruzioni MySQL per accedere ai database e alle tabelle.
  4. Se sono già stati creati i nodi HeatWave, utilizzare la funzione Caricamento parallelo automatico di Oracle HeatWave per caricare i dati in tali nodi. Il caricamento parallelo automatico facilita il processo di caricamento dei dati in HeatWave automatizzando molti dei passi coinvolti. Può essere eseguito da qualsiasi client o connettore MySQL ed è implementato come stored procedure denominata heatwave_load, che risiede nello schema MySQL sys.
    1. Nella VM di Azure, avviare MySQL Shell e selezionare la modalità SQL digitando \sql.
    2. Eseguire il comando seguente per avviare una sessione globale collegandosi all'endpoint del sistema di database:
      \connect <UserName>@<DBSystemEndpointIPAddress>
      • \connect: il comando della shell MySQL per stabilire una nuova connessione.
      • <UserName>: il nome utente dell'account amministratore impostato per il cluster HeatWave.
      • <DBSystemEndpointIPAddress>: l'indirizzo IP dell'endpoint del sistema di database. È possibile trovarlo nella scheda Connetti della pagina dei dettagli della distribuzione.
      Immettere la password per l'account amministratore quando richiesto.
    3. Chiamare sys.heatwave_load per caricare i dati nel cluster HeatWave, denominando lo schema (database) che si desidera caricare.
      Ad esempio, per il database airportdb di esempio, eseguire il comando seguente:
      CALL sys.heatwave_load(JSON_ARRAY("airportdb"),NULL);
Dopo aver importato i dati nel sistema di database, è possibile utilizzare HeatWave Autopilot per stimare un numero appropriato di nodi HeatWave per il cluster HeatWave. Per istruzioni, vedere Provisioning dei nodi HeatWave.