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

Database di Azure per MySQL server singolo si trova nel percorso di ritiro. È consigliabile eseguire l'aggiornamento a Database di Azure per MySQL server flessibile. Per altre informazioni sulla migrazione a Database di Azure per MySQL server flessibile, vedere Che cosa accade a Database di Azure per MySQL server singolo?

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

  • Eseguire il dump e il ripristino dalla riga di comando (usando mysqldump).
  • Eseguire il dump e il ripristino con PHPMy Amministrazione.

È anche possibile fare riferimento a Guida alla migrazione del database per informazioni dettagliate e casi d'uso sulla migrazione dei database a Database di Azure per MySQL server flessibile. Questa guida fornisce indicazioni che guidano la corretta pianificazione e l'esecuzione di una migrazione di MySQL ad Azure.

Operazioni preliminari

Per proseguire con questa guida è necessario:

Suggerimento

Se si vuole eseguire la migrazione di database di grandi dimensioni con dimensioni di database superiori a 1 GB, è consigliabile usare strumenti della 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, in modo che il backup logico e il ripristino siano l'unica opzione di migrazione.

  • Migrazione dall'ambiente locale o dalla macchina virtuale: Database di Azure per MySQL server flessibile non supporta il ripristino di backup fisici, che esegue il backup logico e il ripristino come approccio ONLY.

  • Spostamento dell'archiviazione di backup dall'archiviazione con ridondanza locale all'archiviazione con ridondanza geografica: Database di Azure per MySQL server flessibile 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, eseguire il dump e il ripristino è l'opzione ONLY.

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

    Ad esempio, se si dispone di un'app WordPress o Web utilizzando le tabelle MyISAM, convertire prima di tutto tali tabelle eseguendo la migrazione in formato InnoDB prima di eseguire il ripristino in Database di Azure per MySQL server flessibile. 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 Database di Azure per MySQL configurata per l'esecuzione della versione 5.7. Il mysql_upgrade comando non funziona in un'istanza del server flessibile 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. mysql_upgrade Eseguire quindi prima di tentare la migrazione in un'istanza del server flessibile 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 in mysqldump durante il defer-table-indexes 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 nell'istanza del server flessibile Database di Azure per MySQL di destinazione

Creare un database vuoto nella destinazione Database di Azure per MySQL'istanza del server flessibile 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 connettersi, individuare le informazioni di connessione in Panoramica dell'istanza del server flessibile Database di Azure per MySQL.

Find the connection information in the Azure portal

Aggiungere le informazioni di connessione in MySQL Workbench.

MySQL Workbench Connection String

Preparazione dell'istanza del server flessibile Database di Azure per MySQL di destinazione per caricamenti rapidi dei dati

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

  • max_allowed_packet: impostare su 1073741824 (ovvero 1 GB) per evitare eventuali 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 il sovraccarico causato dalla registrazione lenta delle query durante il caricamento dei dati.
  • query_store_capture_mode: impostare su NONE per disattivare Query Store. In questo modo si elimina il sovraccarico causato dalle attività di campionamento da 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. Innodb_buffer_pool_size può essere aumentato solo aumentando le risorse di calcolo per l'istanza del server flessibile Database di Azure per MySQL.
  • innodb_io_capacity & innodb_io_capacity_max - Passare a 9000 dai parametri server in 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 in portale di Azure per migliorare la velocità della migrazione.
  • Aumentare il livello di Archiviazione: gli I/O per Database di Azure per MySQL server flessibile 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 lo spazio di archiviazione può essere ridimensionato solo, non verso il basso.

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] La password per il database (si noti che non c'è spazio 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 edizione Standard LECT 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 testdb database

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'opzione --database ed elencare i nomi di database separati da spazi.

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

Ripristinare il database MySQL usando la riga di comando

Dopo aver creato il database di destinazione, è possibile usare il comando mysql per ripristinare i dati nel database appena creato specifico 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 nella destinazione Database di Azure per MySQL'istanza del server flessibile.

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 per come usare questo mysql per il server flessibile:

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

Nota

È anche possibile usare l'utilità client MySQL Workbench per ripristinare il database MySQL.

Dump e ripristino con PHPMyAdmin

Seguire questa procedura per eseguire il dump e il ripristino di un database usando 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 Esporta . Viene visualizzata una nuova pagina per eseguire il dump del database.
  4. Nell'area Esporta selezionare il collegamento Seleziona tutto per scegliere le tabelle nel database.
  5. Nell'area Opzioni SQL selezionare le opzioni appropriate.
  6. Selezionare l'opzione Salva come file e l'opzione di compressione corrispondente e 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 configurazione phpMy Amministrazione selezionare Aggiungi per aggiungere l'istanza del server flessibile 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

  • Connessione applicazioni per Database di Azure per MySQL server flessibile.
  • Per altre informazioni sulla migrazione di database a Database di Azure per MySQL server flessibile, vedere La Guida alla migrazione del database.
  • Se si vuole eseguire la migrazione di database di grandi dimensioni con dimensioni di database superiori a 1 TB, è consigliabile usare strumenti della community come mydumper/myloader che supportano l'esportazione e l'importazione parallele. Informazioni su come eseguire la migrazione di database MySQL di grandi dimensioni.