Esportazione di un'istanza MySQL

Esportare un'istanza MySQL in un bucket di storage degli oggetti utilizzando le utility di dump della shell MySQL. Successivamente, puoi utilizzare la funzione di importazione dei dati per importare i dati dal bucket di storage degli oggetti in un sistema DB presente nella stessa area.

Utilizzare una delle seguenti utility di dump:

  • util.dumpInstance(outputUrl[, options]): utility di esportazione dell'istanza MySQL che esporta tutti gli schemi compatibili in un bucket di storage degli oggetti o in file locali. Per impostazione predefinita, questa utility esporta utenti, eventi, routine e trigger. Vedere Dump Utilities.
  • util.dumpSchemas(schemas, outputUrl[, options]): utility di esportazione dello schema MySQL che esporta gli schemi selezionati in un bucket di storage degli oggetti o in file locali.
  • util.dumpTables(schema, tables, outputUrl[, options]): utility di esportazione della tabella MySQL che esporta le tabelle selezionate di uno schema in un bucket di storage degli oggetti o in file locali.

Durante l'esportazione dei dati, eseguire i controlli di compatibilità sugli schemi. In caso di problemi, la utility di dump interrompe l'esportazione e produce un elenco dettagliato dei problemi e suggerisce i passi per correggerli. Inoltre, se si verifica un'interruzione della connessione durante l'esportazione dei dati, è necessario rieseguire l'utilità di dump. Impossibile sospendere e riprendere l'esportazione dei dati.

Uso della shell MySQL

Utilizzare la utility MySQL Shell dumpInstance per esportare un'istanza MySQL in un bucket di storage degli oggetti.

Questa attività richiede quanto segue:
  • MySQL Shell 8.0.27 o successiva. Le esportazioni create dalla shell MySQL 8.0.27 o versioni successive non possono essere importate da versioni precedenti della shell MySQL. Si consiglia di utilizzare la versione più recente della shell MySQL.
  • Accesso allo storage degli oggetti e a un bucket esistente.
  • Un file di configurazione valido. Se la CLI è stata installata e configurata nella posizione predefinita, si dispone di un file di configurazione valido. Se l'interfaccia CLI non è stata installata e non è stata configurata, è necessario installarla o creare un file di configurazione manualmente. Vedere SDK and CLI Configuration File.
Per esportare un'istanza MySQL in un bucket di storage degli oggetti, effettuare le operazioni riportate di seguito.
  1. Eseguire la shell MySQL nel computer client contenente il file di configurazione dell'interfaccia CLI.
  2. Passare al tipo di input JavaScript, digitando \js e premendo Invio.
  3. Eseguire il comando seguente per avviare una sessione globale collegandosi all'istanza MySQL:
    \c <UserName>@<MySQLIPAddress>
    • \c: specifica il comando Shell per stabilire una nuova connessione.
    • <UserName>: specifica il nome utente dell'istanza MySQL.
    • <MySQLIPAddress>: specifica l'indirizzo IP o il nome host dell'istanza MySQL.
  4. (Passo facoltativo consigliato) Eseguire il comando seguente per eseguire il test dell'esportazione dell'intera istanza MySQL. Verifica la presenza di problemi di compatibilità del sistema DB ed elenca tali problemi insieme alle soluzioni suggerite nell'output.
    util.dumpInstance("", {mode: "dryrun", ocimds: true})
    Identificare le opzioni di compatibilità che rimuovono i problemi rilevati. Per esportare correttamente l'istanza MySQL quando l'opzione ocimds è abilitata, è necessario includere queste opzioni di compatibilità.
  5. Eseguire il comando riportato di seguito per esportare l'intera istanza MySQL in un bucket di storage degli oggetti:
    util.dumpInstance("<BucketPrefix>", {osBucketName: "<MDSBucket>", threads: <ThreadSize>, ocimds: true, 
        compatibility: ["<comma separated list of compatibility options>], bytesPerChunk: "<ChunkSize>"})
    • util.dumpInstance: specifica il comando per esportare un'intera istanza MySQL.
    • <BucketPrefix>: (facoltativo) aggiunge un prefisso ai file caricati nel bucket. Se questa opzione è specificata, i file vengono caricati nel bucket definito con il prefisso nel formato seguente: <BucketPrefix>/filename, in modo simile a un percorso file. Ad esempio, se <BucketPrefix> è impostato su test, ogni file caricato nel bucket definito, <MDSBucket>, viene eseguito come test/filename. Se si scarica il file, il prefisso viene considerato come una cartella nel download. Per le esportazioni locali, questo parametro è il percorso della directory locale in cui si desidera esportare.

      Sebbene il contenuto di questo parametro sia facoltativo, le virgolette non lo sono. Anche se non si intende utilizzare un prefisso, è necessario includere le virgolette nella sintassi del comando.

    • osBucketName: specifica il nome con distinzione tra maiuscole e minuscole del bucket di storage degli oggetti in cui eseguire l'esportazione. La shell MySQL utilizza le informazioni sulla tenancy e l'utente definite nel file config.
    • threads: (facoltativo) specifica il numero di thread di elaborazione da utilizzare per questa attività. Il valore predefinito è 4. Per ottenere prestazioni ottimali, si consiglia di impostare questo parametro sul numero di memorie centrali CPU disponibili nel database server.
    • ocimds: controlla la compatibilità dei dati con il servizio HeatWave. Quando questa opzione è impostata su true, non è possibile esportare un'istanza se non è compatibile con il servizio HeatWave.
      Nota

      L'importazione dei dati in un sistema DB HeatWave con la utility util.loadDump richiede la creazione del dump con l'opzione ocimds.
    • compatibility: elenca i parametri che specificano quali modifiche vengono eseguite sui dati esportati. È necessario specificare l'elenco delle opzioni di compatibilità suggerite nella modalità dryrun. Vedere Controlli della compatibilità.
    • bytesPerChunk: (facoltativo) per i set di dati di grandi dimensioni, si consiglia di utilizzare questo parametro per definire i chunk più grandi. La dimensione predefinita del chunk è 64 MB. Ad esempio, bytesPerChunk: 128M, specifica una dimensione chunk di 128 MB.
I dati vengono caricati nel bucket specificato.

Controlli della compatibilità

Il servizio HeatWave dispone di diverse limitazioni relative alla sicurezza non presenti in un'istanza MySQL. Utilizzare l'opzione ocimds della utility di dump per eseguire controlli di compatibilità sui dati di dump e, in caso di problemi, la utility interrompe il dump e produce un elenco dettagliato dei problemi e suggerisce i passi per correggerli.

Il comando seguente mostra come eseguire i controlli di compatibilità utilizzando l'opzione ocimds in modalità dryrun. Alcuni problemi rilevati dall'opzione ocimds potrebbero richiedere la modifica manuale dello schema prima di poterlo caricare nel servizio HeatWave.

util.dumpInstance("", {mode: "dryrun", ocimds: true})

Dopo aver identificato i problemi di compatibilità e le opzioni di compatibilità, è possibile specificare le opzioni nel comando che esporta i dati.

util.dumpInstance("<BucketPrefix>", {osBucketName: "<MDSBucket>", ocimds: true, 
    compatibility: ["force_innodb", "strip_definers", "strip_restricted_grants", 
    "skip_invalid_accounts", "strip_tablespaces", "ignore_missing_pks"] } )

È possibile utilizzare le seguenti opzioni di compatibilità separate da virgole per modificare automaticamente i dati esportati, risolvendo alcuni dei seguenti problemi di compatibilità:

  • force_innodb: il servizio HeatWave supporta solo il motore di memorizzazione InnoDB. Questa opzione modifica la clausola ENGINE delle istruzioni CREATE TABLE che utilizzano motori di memorizzazione non compatibili e li sostituisce con InnoDB.
  • strip_definers: elimina la clausola "DEFINER=account" da viste, routine, eventi e trigger. HeatWave Il servizio richiede privilegi speciali per creare questi oggetti con un identificativo diverso dall'utente che carica lo schema. Eliminando la clausola DEFINER, questi oggetti verranno creati con il definer predefinito. Nelle viste e nelle routine la clausola SQL SECURITY è stata modificata da DEFINER a INVOKER. Ciò garantisce che vengano applicate le autorizzazioni di accesso dell'account che esegue la query o le chiama, anziché dell'utente che le ha create. Se il modello di sicurezza del database richiede viste e le routine dispongono di più privilegi rispetto al relativo chiamante, modificare manualmente lo schema prima di caricarlo. Vedere DEFINER e Sicurezza SQL.
  • strip_restricted_grants: alcuni privilegi sono limitati nel servizio HeatWave. Privilegi quali RELOAD, FILE, SUPER, BINLOG_ADMIN e SET_USER_ID. Non è possibile creare utenti che concedono questi privilegi. Questa opzione elimina questi privilegi dalle istruzioni GRANT di cui è stato eseguito il dump.
  • skip_invalid_accounts: non è possibile esportare un utente per il quale non è stata definita alcuna password. Questa opzione salta tali utenti.
  • strip_tablespaces: il servizio HeatWave ha alcune limitazioni sulle tablespace. Questa opzione elimina l'opzione TABLESPACE dalle istruzioni CREATE TABLE, in modo che tutte le tabelle vengano create nelle rispettive tablespace predefinite.
  • Flag chiave primaria:
    • create_invisible_pks: le chiavi primarie sono richieste dai sistemi DB High Availability. Se si intende esportare i dati per l'uso in un sistema DB ad alta disponibilità, aggiungere le chiavi primarie se non sono definite nelle tabelle. Questo flag di compatibilità aggiunge chiavi primarie invisibili a ogni tabella che le richiede. Consulta la sezione Prerequisiti.
    • ignore_missing_pks: se non si intende eseguire l'importazione in un sistema DB High Availability, questo flag di compatibilità ignora le chiavi primarie mancanti nel dump.

Inoltre, le opzioni DATA DIRECTORY, INDEX DIRECTORY e ENCRYPTION nelle istruzioni CREATE TABLE vengono sempre commentate negli script DDL se l'opzione ocimds è abilitata.

Nota

Se si intende esportare una versione precedente di MySQL, ad esempio 5.7.9, e se si utilizza una versione della shell MySQL precedente alla 8.0.30, si consiglia di eseguire la utility MySQL Shell Upgrade Checker per generare un report di tutti i potenziali problemi della migrazione. Vedere Utility Upgrade Checker.