IBM Cloud Docs
Migrazione a Databases for MySQL

Migrazione a Databases for MySQL

Esistono due opzioni per migrare i dati dai database MySQL esistenti a IBM Cloud® Databases for MySQL. Consigliamo due opzioni: mysqldump e mydumper. Il miglior strumento per te dipende da determinate condizioni, tra cui la connessione di rete, la dimensione del tuo dataset e le esigenze di schema intermedio.

Prima di iniziare

Prima di iniziare la migrazione dei dati, è necessario MySQL installato localmente in modo da avere gli strumenti mysql e mysqldump .

MySQL Workbench fornisce anche uno strumento grafico per la gestione dei server e dei database MySQL . Pur non strettamente richiesto, il Cloud Databases CLI rende anche semplice la connessione e il ripristino ad una nuova distribuzione Databases for MySQL .

mysqldump

Questa utility client MySQL nativa si installa per impostazione predefinita e può eseguire backup logici, riproducendo la struttura della tabella e i dati, senza copiare i file di dati reali. mysqldump scarica uno o più database MySQL per il backup o il trasferimento in un altro server MySQL . Per ulteriori informazioni, consultare la documentazione mysqldump.

mysqldump è opportuno utilizzare nelle seguenti condizioni:

  • Il dataset è inferiore a 10 GB.
  • Il tempo di migrazione non è critico e il costo di riprovare la migrazione è basso.
  • Non è necessario effettuare alcun schema intermedio o trasformazioni di dati.

Non consigliamo mysqldump se una delle seguenti condizioni sono soddisfatte:

  • Il tuo dataset è più grande di 10 GB.
  • La connessione di rete tra i database di origine e di destinazione è instabile o lenta.

Segui questi passi utilizzando lo strumento mysqldump :

Eseguire mysqldump sul proprio database di origine per creare un file SQL, utilizzabile per ricreare il database. Al minimo migrare mysql utilizzando la CLI richiede i seguenti argomenti:

  • Hostname (indicatore-h )
  • Numero di porta (indicatore-P )
  • Username (indicatore-u )
  • -- mode - mode = VERIFY_IDENTITY (i client richiedono una connessione crittografata ed eseguono verifica contro il certificato CA del server e contro il nomehost del server nel suo certificato)
  • -- ssl-ca (il nome del percorso del file CA (Certificate Authority), che può essere trovato all'interno della scheda Endpoints CLI della pagina Panoramica nella UI.)
  • Nome database
  • file di risultato (-r flag)

Il tuo comando CLI sembra questo

mysqldump -h <host_name> -P <port_number> -u <user_name> --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt --set-gtid-purged=OFF -p <database_name> -r dump.sql

Per generare un file di log del lavoro mysqldump che tiene traccia degli errori mentre è in esecuzione, utilizzare un comando come questo

mysqldump -h <host_name> -P <port_number> -u <user_name> --log-error=error.log --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt --set-gtid-purged=OFF -p ibmclouddb -r dump.sql

Lo stesso può essere fatto mentre importava, ad esempio

mysql -h <host_name> -P <port_number> -u admin --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt -p ibmclouddb < dump.sql > import_logfile.log

Per ulteriori informazioni sull'utilizzo di MySQL Replication with Global Transaction Identifiers (GTIDs), consultare il manuale Utilizzo di GTIDs per Failover e Scaleout nel manuale di riferimento MySQL .

Il comando mysql ha molte opzioni; consultare la documentazione ufficiale e riferimento al comando per una visione più completa delle sue funzionalità.

Ripristino dell'output di mysqldump

L'output risultante di mysqldump può quindi essere caricato in una nuova distribuzione Databases for MySQL . Poiché l'output è SQL, può essere semplicemente inviato al database tramite il comando mysql . Consigliamo di eseguire le importazioni con l'utente admin.

Consultare la documentazione Connesso con mysql per i dettagli sulla connessione come admin utilizzando mysql. Per connettersi con il comando mysql è necessaria la stringa di connessione dell'utente admin e il certificato TLS, che possono essere trovati entrambi nella UI. Il certificato deve essere decodificato dal base64 e memorizzato come file locale arbitrario. Per importare il dump.sql precedentemente creato in una distribuzione di database denominata example-mysql, il comando mysql può essere chiamato con -f dump.sql come parametro. Il parametro racconta mysql per leggere ed eseguire le istruzioni SQL nel file.

Come notato nella documentazione Connesso con mysql , il plug-in Cloud Databases CLI semplifica la connessione. L'importazione mysql precedente può essere eseguita utilizzando un comando come:

mysql -h <host_name> -P <port_number> -u admin --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt -p ibmclouddb < dump.sql

Se non viene specificato alcun utente, il comando utilizza automaticamente l'utente admin e le richieste interattive per la password. Il certificato TLS viene recuperato e utilizzato automaticamente.

Mentre il processo di ripristino è in esecuzione, vengono emessi diversi messaggi riguardanti le modifiche apportate alla distribuzione del database.

mydumper

mydumper, e il suo myloader di backup logico accoppiato, utilizzano funzionalità di multithreading per eseguire la migrazione dei dati analogamente a mysqldump; tuttavia, mydumper fornisce molti miglioramenti come backup paralleli, letture coerenti e più facili da gestire l'output. Il parallelismo consente prestazioni migliori durante sia il processo di importazione che di esportazione, mentre l'output può essere più facile da gestire perché le singole tabelle vengono scaricate in file separati.

mydumper è appropriato da utilizzare nelle seguenti condizioni:

  • Il dataset è maggiore di 10 GB.
  • La connessione di rete tra database di origine e destinazione è veloce e stabile.
  • È necessario fare uno schema intermedio o le trasformazioni dei dati.

Non consigliamo di utilizzare mydumper se si incontrano una delle seguenti condizioni:

  • Il tuo dataset è inferiore a 10 GB.
  • La connessione di rete tra i database di origine e di destinazione è instabile o molto lenta.

Prima di iniziare a migrare i tuoi dati con mydumper, vedi per primo il progetto mydumper per i dettagli e le istruzioni dettagliate sull'installazione e l'ambiente di sviluppatore necessario,

In seguito, fare riferimento alla pagina Come utilizzare mydumper per informazioni sull'utilizzo degli strumenti mydumper e myloader per eseguire la migrazione completa dei dati.

Ottimizzazione Variabili Configurabili InnoDB

È possibile configurare le seguenti opzioni MySQL InnoDB per ottimizzare le prestazioni, in base alla capacità macchina e al carico di lavoro del database.

innodb_buffer_pool_size_percentuale

  • Descrizione: Il parametro innodb_buffer_pool_size_percentage value definisce la quantità di memoria dedicata del tuo contenitore di database.
  • Impostazione predefinita: 50
  • Max: 100
  • Min: 10
  • Richiede riavvio: True

Poiché il proprio database stesso utilizza una data quantità di memoria, se il parametro innodb_buffer_pool_size_percentage value è configurato troppo in alto, allora i requisiti di memoria del database + innodb_buffer_pool_size_percentage possono diventare superiori ai limiti di memoria disponibili, determinando così uno stato di memoria esaurito (OOM).

Il valore del parametro innodb_buffer_pool_size_percentage differisce in base alla dimensione del tuo database. Il valore predefinito è 50%, sicuro per i database di tutte le dimensioni. Configurare il valore in base alle necessità; se si incontrano OOM allora il valore è impostato troppo in alto e si dovrebbe abbassare.

innodb_flush_log_at_trx_commit

  • Descrizione: Controlli l'equilibrio tra la rigida conformità ACID per le operazioni di impegno e le prestazioni superiori

  • Impostazione predefinita: 2

L'impostazione predefinita di 2 non è completamente ACID - compliant (impostazione predefinita di 1 è necessaria per la piena conformità ACID), ma è più performante ed è comunque sicura.

  • Max: 2
  • Min: 0
  • Richiede riavvio: Falso

Per ulteriori informazioni, consultare la documentazione MySQL innodb_flush_log_at_trx_commit.

innodb_log_buffer_size

  • Descrizione: La dimensione in byte del buffer che InnoDB utilizza per scrivere sui file di log su disco.
  • Impostazione predefinita: 32 MiB
  • Max: 4294967295
  • Min: 1048576
  • Richiede riavvio: True

Per ulteriori informazioni, consultare la documentazione MySQL innodb_log_buffer_size.

innodb_log_file_size

  • Descrizione: Dimensione file di registrazione InnoDB in byte.
  • Impostazione predefinita: 64 MB
  • Max: 274877906900
  • Min: 4194304
  • Richiede riavvio: True

Per ulteriori informazioni, consultare la documentazione MySQL innodb_log_file_size.

innodb_lru_scan_depth

  • Descrizione: Un parametro che influenzia gli algoritmi e l'euristica per l'operazione di svuotamento per il pool di buffer InnoDB.
  • Impostazione predefinita: 1024
  • Max: nessun valore max
  • Min: 100
  • Richiede riavvio: True

Per ulteriori informazioni, consultare la documentazione MySQL innodb_lru_scan_depth.

innodb_read_io_thread

  • Descrizione: Il numero di thread I/O per le operazioni di lettura in InnoDB.
  • Impostazione predefinita: 4
  • Max: 64
  • Min: 1
  • Richiede riavvio: True

Per ulteriori informazioni, consultare la documentazione MySQL innodb_read_io_threads.

innodb_write_io_thread

  • Descrizione: Il numero di thread I/O per le operazioni di lettura in InnoDB.
  • Impostazione predefinita: 4
  • Max: 64
  • Min: 1
  • Richiede riavvio: True

Per ulteriori informazioni, consultare la documentazione MySQL innodb_write_io_threads.

net_read_timeout

  • Descrizione: Il numero di secondi di attesa per ulteriori dati da una connessione prima di interrompere la lettura.
  • Impostazione predefinita: 30
  • Max:
  • Min: 1
  • Richiede riavvio: True

Per ulteriori informazioni, consultare la documentazione MySQL net_read_timeout.

timeout net_write_timeout

  • Descrizione: Il numero di secondi di attesa per un blocco da scrivere a una connessione prima di interrompere la scrittura.
  • Impostazione predefinita: 60
  • Max:
  • Min: 1
  • Richiede riavvio: True

Per ulteriori informazioni, consultare la documentazione net_write_timeout.