Condividi tramite


Eseguire la migrazione del database MySQL a Database di Azure per MySQL - Server flessibile usando dump e ripristino

SI APPLICA A:Database di Azure per MySQL - Server singolo Database di Azure per MySQL - Server flessibile

Importante

Il server singolo del Database di Azure per MySQL è in fase di ritiro. È consigliabile eseguire l'aggiornamento al server flessibile del Database di Azure per MySQL. Per altre informazioni sulla migrazione a Database di Azure per MySQL - Server flessibile, vedere Cosa succede a Database di Azure per MySQL - Server singolo?

Questo articolo illustra due modi comuni per eseguire il backup e il ripristino dei database nel server flessibile di Database di Azure per MySQL.

  • Dump e ripristino dalla riga di comando (tramite mysqldump).
  • Dump e ripristino con PHPMyAdmin.

È anche possibile fare riferimento alla Guida alla migrazione del database per informazioni dettagliate e casi d'uso sulla migrazione dei database al server flessibile di Database di Azure per MySQL. Questa guida fornisce indicazioni che consentono di pianificare ed eseguire correttamente una migrazione di MySQL ad Azure.

Operazioni preliminari

Per proseguire con questa guida è necessario:

Suggerimento

Se si sta cercando di eseguire la migrazione di database di grandi dimensioni con dimensioni di database maggiori di 1 TB, è consigliabile usare strumenti community come mydumper/myloader che supportano l'esportazione e l'importazione parallele. Informazioni su come eseguire la migrazione di database MySQL di grandi dimensioni.

Casi d’uso comuni per dump e ripristino

I casi d'uso più comuni sono:

  • Spostamento da un altro provider di servizi gestiti: la maggior parte dei provider di servizi gestiti potrebbe non fornire l'accesso al file di archiviazione fisica per motivi di sicurezza, perciò il backup logico e il ripristino sono l'unica opzione di migrazione.

  • Migrazione dall'ambiente locale o dalla macchina virtuale: il server flessibile di Database di Azure per MySQL non supporta il ripristino di backup fisici, perciò il backup logico e il ripristino sono l’UNICO approccio possibile.

  • Spostamento dell'archiviazione di backup dall'archiviazione con ridondanza locale all'archiviazione con ridondanza geografica: il server flessibile di Database di Azure per MySQL consente di configurare l'archiviazione con ridondanza locale o con ridondanza geografica per il backup solo durante la creazione del server. Dopo il provisioning del server, non è possibile cambiare l'opzione di ridondanza per l'archivio di backup. Per spostare l'archiviazione di backup dall'archiviazione con ridondanza locale all'archiviazione con ridondanza geografica, dump e ripristino è l'UNICA opzione.

  • Migrazione da motori di archiviazione alternativi a InnoDB: il server flessibile di Database di Azure per MySQL supporta solo il motore di archiviazione InnoDB, pertanto non supporta motori di archiviazione alternativi. Se le tabelle sono configurate con motori di archiviazione alternativi, convertirli nel formato di motore InnoDB prima della migrazione al server flessibile di Database di Azure per MySQL.

    Se ad esempio si possiede WordPress o WebApp con le tabelle MyISAM, convertire le tabelle eseguendo la migrazione nel formato InnoDB prima del ripristino al server flessibile di Database di Azure per MySQL. Usare la clausola ENGINE=InnoDB per impostare il motore usato per la creazione di una nuova tabella e quindi trasferire i dati nella tabella compatibile prima del ripristino.

    INSERT INTO innodb_table SELECT * FROM myisam_table ORDER BY primary_key_columns
    

Importante

  • Per evitare eventuali problemi di compatibilità, verificare che venga usata la stessa versione di MySQL nei sistemi di origine e di destinazione durante il dump dei database. Ad esempio, se il server MySQL esistente è versione 5.7, è necessario eseguire la migrazione a un’istanza del server flessibile di Database di Azure per MySQL configurato per l'esecuzione della versione 5.7. Il comando mysql_upgrade non funziona in un’istanza del server flessibile di Database di Azure per MySQL e non è supportato.
  • Se è necessario eseguire l'aggiornamento in tutte le versioni di MySQL, eseguire prima il dump o esportare il database di una versione inferiore in una versione successiva di MySQL nel proprio ambiente. Eseguire quindi mysql_upgrade prima di tentare la migrazione in un’istanza del server flessibile di Database di Azure per MySQL.

Considerazioni sulle prestazioni

Per ottimizzare le prestazioni, tenere presenti le considerazioni seguenti durante il dump di database di grandi dimensioni:

  • Usare l'opzione exclude-triggers in mysqldump durante il dump dei database. Escludere i trigger dai file di dump per evitare l'attivazione dei comandi di trigger durante il ripristino dei dati.
  • Usare l'opzione single-transaction per impostare la modalità di isolamento della transazione su REPEATABLE READ e inviare un'istruzione SQL START TRANSACTION al server prima di creare un dump dei dati. Il dump di molte tabelle all'interno di una singola transazione causa l'uso di spazio di archiviazione aggiuntivo durante il ripristino. Le opzioni single-transaction e lock-tables si escludono a vicenda in quanto LOCK TABLES causa il commit implicito di eventuali transazioni in sospeso. Per eseguire il dump di tabelle di grandi dimensioni, combinare l'opzione single-transaction con l'opzione quick.
  • Usare la sintassi a più righe extended-insert che include vari elenchi VALUES. Ciò consente di ottenere un file di dump più piccolo e di velocizzare gli inserimenti quando il file viene ricaricato.
  • Usare l'opzione order-by-primary in mysqldump durante il dump dei database, in modo che i dati vengano inseriti nello script nell'ordine delle chiavi primarie.
  • Usare l'opzione disable-keys in mysqldump durante il dump dei dati, per disabilitare i vincoli della chiave esterna prima del caricamento. La disabilitazione dei controlli della chiave esterna offre miglioramenti delle prestazioni. Abilitare i vincoli e verificare i dati dopo il caricamento per garantire l'integrità referenziale.
  • Usare le tabelle partizionate quando appropriato.
  • Caricare i dati in parallelo. Evitare un eccessivo parallelismo che comporterebbe il raggiungimento del limite di risorse e monitorare le risorse con le metriche offerta nel portale di Azure.
  • Usare l'opzione defer-table-indexes in mysqldump durante il dump dei database, in modo che la creazione dell'indice venga eseguita dopo il caricamento dei dati delle tabelle.
  • Copiare i file di backup in un archivio/BLOB di Azure ed eseguire il ripristino da tale posizione. In questo modo, l'operazione dovrebbe essere eseguita in modo molto più veloce rispetto al ripristino attraverso Internet.

Creare un database sull’istanza del server flessibile di Database di Azure per MySQL di destinazione

Creare un database vuoto nell’istanza del server di Database di Azure per il server MySQL di destinazione in cui si vuole eseguire la migrazione dei dati. Usare uno strumento come MySQL Workbench o mysql.exe per creare il database. Il database può avere lo stesso nome del database che contiene i dati di dump; in alternativa, è possibile creare un database con un nome diverso.

Per la connessione, individuare le informazioni di connessione nella pagina Panoramica dell’istanza del server flessibile di Database di Azure per MySQL.

Trovare le informazioni di connessione nel portale di Azure

Aggiungere le informazioni di connessione in MySQL Workbench.

Stringa di connessione MySQL Workbench

Preparazione del database di Azure di destinazione per l’istanza del server flessibile di MySQL per i caricamenti rapidi di dati

Per preparare l’istanza del server flessibile di Database di Azure per MySQL di destinazione per caricamenti di dati più veloci, è necessario modificare i parametri del server e la configurazione seguenti.

  • max_allowed_packet: impostare su 1073741824 (ovvero, 1 GB) per evitare problemi di overflow dovuti a righe lunghe.
  • slow_query_log: impostare su OFF per disattivare il log di query lento. In questo modo si elimina l'overhead causato dalla registrazione lenta di query durante i caricamenti dei dati.
  • query_store_capture_mode: impostare su NONE per disattivare Query Store. In questo modo si elimina l'overhead causato dalle attività di campionamento di Query Store.
  • innodb_buffer_pool_size: aumentare le prestazioni del server a 32 SKU con ottimizzazione per la memoria vCore dal piano tariffario del portale durante la migrazione per aumentare innodb_buffer_pool_size. È possibile aumentare innodb_buffer_pool_size solo aumentando il calcolo per l’istanza del server flessibile di Database di Azure per MySQL.
  • innodb_io_capacity & innodb_io_capacity_max: passare a 9000 dai parametri server nel portale di Azure per migliorare l'utilizzo di I/O per ottimizzare la velocità di migrazione.
  • innodb_write_io_threads & innodb_write_io_threads: passare a 4 dai parametri del server nel portale di Azure per migliorare la velocità di migrazione.
  • Aumentare il livello di archiviazione: le operazioni di I/O al secondo per il server flessibile di Database di Azure per MySQL aumentano progressivamente con l'aumento del livello di archiviazione. Per caricamenti più veloci è consigliabile aumentare il livello di archiviazione per aumentare le operazioni di I/O al secondo di cui è stato eseguito il provisioning. Tenere presente che l'archiviazione può essere solo aumentata, non ridotta.

Al termine della migrazione, è possibile ripristinare i valori precedenti dei parametri del server e della configurazione del livello di calcolo.

Eseguire il dump e il ripristino con l'utilità mysqldump

Creare un file di backup dalla riga di comando tramite mysqldump

Per eseguire il backup di un database MySQL esistente nel server locale o in una macchina virtuale, eseguire il comando seguente:

mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]

I parametri da specificare sono:

  • [uname] Username del database
  • [pass] Password del database (si noti che non è presente alcuno spazio vuoto tra -p e la password)
  • [dbname] Nome del database
  • [backupfile.sql] Filename per il backup del database
  • [-opt] Opzione mysqldump

Ad esempio, per eseguire il backup di un database denominato "testdb" nel proprio server MySQL con il nome utente "testuser" e senza password in un file testdb_backup.sql, usare il comando seguente. Il comando esegue il backup del database testdb in un file denominato testdb_backup.sql, che contiene tutte le istruzioni SQL necessarie per ricreare il database. Assicurarsi che il nome utente “testuser” abbia almeno il privilegio SELECT per le tabelle di dump, SHOW VIEW per le viste di dump, TRIGGER per i trigger di dump e LOCK TABLES se l'opzione --single-transaction non viene usata.

GRANT SELECT, LOCK TABLES, SHOW VIEW ON *.* TO 'testuser'@'hostname' IDENTIFIED BY 'password';

Eseguire ora mysqldump per creare il backup del database testdb

mysqldump -u root -p testdb > testdb_backup.sql

Per selezionare tabelle specifiche nel database di cui si deve eseguire il backup, elencare i nomi delle tabelle separati da spazi. Ad esempio, per eseguire il backup delle sole tabelle table1 e table2 in "testdb", seguire questo esempio:

mysqldump -u root -p testdb table1 table2 > testdb_tables_backup.sql

Per eseguire il backup di più database contemporaneamente, usare l’interruttore --database ed elencare i nomi dei database separati da spazi.

mysqldump -u root -p --databases testdb1 testdb3 testdb5 > testdb135_backup.sql

Ripristinare il database MySQL mediante una riga di comando

Dopo avere creato il database di destinazione è possibile usare il comando mysql per ripristinare i dati nel database appena creato specificatamente dal file di dump.

mysql -h [hostname] -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]

In questo esempio, ripristinare i dati nel database appena creato nell’istanza del server flessibile di Database di Azure per MySQL di destinazione.

Ecco un esempio di come usare questo mysql per Server singolo:

mysql -h mydemoserver.mysql.database.azure.com -u myadmin@mydemoserver -p testdb < testdb_backup.sql

Ecco un esempio di come usare questo mysql per Server flessibile:

mysql -h mydemoserver.mysql.database.azure.com -u myadmin -p testdb < testdb_backup.sql

Dump e ripristino con PHPMyAdmin

Seguire questi passaggi per eseguire il dump e il ripristino di un database con PHPMyadmin.

Nota

Per il server singolo, il nome utente deve essere in questo formato, “username@servername”, ma per il server flessibile è sufficiente usare “username”. Se si usa “username@servername” per il server flessibile, la connessione avrà esito negativo.

Esportazione con PHPMyadmin

Per l'esportazione è possibile usare lo strumento comune phpMyAdmin, che potrebbe essere già installato in locale nel proprio ambiente. Per esportare il database MySQL mediante PHPMyAdmin:

  1. Aprire phpMyAdmin.
  2. Selezionare il database. Selezionare il nome del database nell'elenco a sinistra.
  3. Selezionare il collegamento Esportazione. Viene visualizzata una nuova pagina per eseguire il dump del database.
  4. Nell'area Esportazione, fare clic sul collegamento Seleziona tutto per scegliere le tabelle nel database.
  5. Nell'area delle opzioni SQL, selezionare le opzioni appropriate.
  6. Selezionare l'opzione Salva come file e l'opzione di compressione corrispondente, quindi selezionare il pulsante Vai. Verrà visualizzata una finestra di dialogo che richiede di salvare il file in locale.

Importazione mediante PHPMyAdmin

L'importazione del database è simile all'esportazione. Esegui le seguenti azioni:

  1. Aprire phpMyAdmin.
  2. Nella pagina di impostazione di phpMyAdmin, selezionare Aggiungi per aggiungere l’istanza del server flessibile di Database di Azure per MySQL. Specificare i dettagli della connessione e le informazioni di accesso.
  3. Creare un database denominato in modo appropriato e selezionarlo a sinistra della schermata. Per riscrivere il database esistente, selezionare il nome del database, selezionare tutte le caselle di controllo accanto ai nomi delle tabelle e selezionare Elimina per eliminare le tabelle esistenti.
  4. Selezionare il collegamento SQL per visualizzare la pagina in cui è possibile digitare i comandi SQL o caricare il file SQL.
  5. Usare il pulsante Browse (Sfoglia) per trovare il file nel database.
  6. Selezionare il pulsante Vai per esportare il backup, eseguire i comandi SQL e ricreare il database.

Problemi noti

Per problemi noti, suggerimenti e consigli, è consigliabile consultare il blog techcommunity.

Passaggi successivi