Eseguire la migrazione del database MySQL nel database di Azure mediante dump e ripristinoMigrate your MySQL database to Azure Database for MySQL using dump and restore

Questo articolo illustra due modi comuni per eseguire il backup e il ripristino dei database nel database di Azure per MySQLThis article explains two common ways to back up and restore databases in your Azure Database for MySQL

  • Dump e ripristino dalla riga di comando( tramite mysqldump)Dump and restore from the command-line (using mysqldump)
  • Dump e ripristino con PHPMyAdminDump and restore using PHPMyAdmin

Prima di iniziareBefore you begin

Per proseguire con questa guida è necessario:To step through this how-to guide, you need to have:

Usare strumenti comuniUse common tools

Usare utilità e strumenti comuni, come ad esempio MySQL Workbench, mysqldump, Toad o Navicat per connettersi in modalità remota e ripristinare i dati nel database di Azure per MySQL.Use common utilities and tools such as MySQL Workbench, mysqldump, Toad, or Navicat to remotely connect and restore data into Azure Database for MySQL. Usare tali strumenti sul computer client con una connessione internet per connettersi al database di Azure per MySQL.Use such tools on your client machine with an internet connection to connect to the Azure Database for MySQL. Usare una connessione SSL crittografata per le procedure di sicurezza consigliate. Vedere anche Configure SSL connectivity in Azure Database for MySQL (Configurare la connettività SSL nel database di Azure per MySQL).Use an SSL encrypted connection for best security practices, see also Configure SSL connectivity in Azure Database for MySQL. Durante la migrazione al database di Azure per MySQL non è necessario spostare i file di dump in alcun percorso cloud speciale.You do not need to move the dump files to any special cloud location when migrating to Azure Database for MySQL.

Usi comuni per il dump e ripristinoCommon uses for dump and restore

È possibile usare le utilità di MySQL come mysqldump e mysqlpump per il dump e il caricamento di database in un database MySQL di Azure in diversi scenari comuni.You may use MySQL utilities such as mysqldump and mysqlpump to dump and load databases into an Azure MySQL Database in several common scenarios. In altri scenari è invece possibile usare l'approccio di importazione ed esportazione.In other scenarios, you may use the Import and Export approach instead.

  • Usare i dump del database quando si esegue la migrazione dell'intero database.Use database dumps when you are migrating the entire database. Questa indicazione è utile quando si sposta una grande quantità di dati di MySQL o quando si vuole ridurre al minimo l'interruzione del servizio per applicazioni o siti live.This recommendation holds when moving a large amount of MySQL data, or when you want to minimize service interruption for live sites or applications.
  • Verificare che tutte le tabelle nel database usino il motore di archiviazione InnoDB quando si caricano dati nel database di Azure per MySQL.Make sure all tables in the database use the InnoDB storage engine when loading data into Azure Database for MySQL. Il database di Azure per MySQL supporta solo il motore di archiviazione InnoDB e pertanto non sono supportati motori di archiviazione alternativi.Azure Database for MySQL supports only InnoDB Storage engine, and therefore does not support alternative storage engines. Se le tabelle sono configurate con motori di archiviazione alternativi, convertirli nel formato di motore InnoDB prima della migrazione al database di Azure per MySQL.If your tables are configured with other storage engines, convert them into the InnoDB engine format before migration to Azure Database for 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 database di Azure per MySQL.For example, if you have a WordPress or WebApp using the MyISAM tables, first convert those tables by migrating into InnoDB format before restoring to Azure Database for 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.Use the clause ENGINE=InnoDB to set the engine used when creating a new table, then transfer the data into the compatible table before the restore.

    INSERT INTO innodb_table SELECT * FROM myisam_table ORDER BY primary_key_columns
    
  • 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.To avoid any compatibility issues, ensure the same version of MySQL is used on the source and destination systems when dumping databases. Ad esempio, se il server MySQL esistente è versione 5.7, è necessario eseguire la migrazione al database di Azure per MySQL configurato per l'esecuzione della versione 5.7.For example, if your existing MySQL server is version 5.7, then you should migrate to Azure Database for MySQL configured to run version 5.7. Il comando mysql_upgrade non funziona in un database di Azure per il server MySQL e non è supportato.The mysql_upgrade command does not function in an Azure Database for MySQL server, and is not supported. 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.If you need to upgrade across MySQL versions, first dump or export your lower version database into a higher version of MySQL in your own environment. Eseguire quindi mysql_upgrade prima di tentare la migrazione in un database di Azure per MySQL.Then run mysql_upgrade, before attempting migration into an Azure Database for MySQL.

Considerazioni sulle prestazioniPerformance considerations

Per ottimizzare le prestazioni, tenere presenti le considerazioni seguenti durante il dump di database di grandi dimensioni:To optimize performance, take notice of these considerations when dumping large databases:

  • Usare l'opzione exclude-triggers in mysqldump durante il dump dei database.Use the exclude-triggers option in mysqldump when dumping databases. Escludere i trigger dai file di dump per evitare l'attivazione dei comandi di trigger durante il ripristino dei dati.Exclude triggers from dump files to avoid the trigger commands firing during the data restore.
  • 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.Use the single-transaction option to set the transaction isolation mode to REPEATABLE READ and sends a START TRANSACTION SQL statement to the server before dumping data. Il dump di molte tabelle all'interno di una singola transazione causa l'uso di spazio di archiviazione aggiuntivo durante il ripristino.Dumping many tables within a single transaction causes some extra storage to be consumed during restore. L'opzione single-transaction e l'opzione lock-tables si escludono a vicenda in quanto LOCK TABLES causa il commit implicito di eventuali transazioni in sospeso. Per eseguire il dump tabelle di grandi dimensioni, combinare l'opzione single-transaction con l'opzione quick.The single-transaction option and the lock-tables option are mutually exclusive because LOCK TABLES causes any pending transactions to be committed implicitly.To dump large tables, combine the single-transaction option with the quick option.
  • Usare la sintassi a più righe extended-insert che include vari elenchi VALUES.Use the extended-insert multiple-row syntax that includes several VALUE lists. Ciò consente di ottenere un file di dump più piccolo e di velocizzare gli inserimenti quando il file viene ricaricato.This results in a smaller dump file and speeds up inserts when the file is reloaded.
  • 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.Use the order-by-primary option in mysqldump when dumping databases, so that the data is scripted in primary key order.
  • Usare l'opzione disable-keys in mysqldump durante il dump dei dati, per disabilitare i vincoli della chiave esterna prima del caricamento.Use the disable-keys option in mysqldump when dumping data, to disable foreign key constraints before load. La disabilitazione dei controlli della chiave esterna offre miglioramenti delle prestazioni.Disabling foreign key checks provides performance gains. Abilitare i vincoli e verificare i dati dopo il caricamento per garantire l'integrità referenziale.Enable the constraints and verify the data after the load to ensure referential integrity.
  • Usare le tabelle partizionate quando appropriato.Use partitioned tables when appropriate.
  • Caricare i dati in parallelo.Load data in parallel. Evitare un eccessivo parallelismo che comporterebbe il raggiungimento del limite di risorse e monitorare le risorse con le metriche offerta nel portale di Azure.Avoid too much parallelism that would cause you to hit a resource limit, and monitor resources using the metrics available in the Azure portal.
  • Usare l'opzione defer-table-indexes in mysqlpump durante il dump dei database, in modo che la creazione dell'indice venga eseguita dopo il caricamento dei dati delle tabelle.Use the defer-table-indexes option in mysqlpump when dumping databases, so that index creation happens after tables data is loaded.

Creare un file di backup dalla riga di comando tramite mysqldumpCreate a backup file from the command-line using mysqldump

Per eseguire il backup di un database MySQL esistente nel server locale o in una macchina virtuale, eseguire il comando seguente:To back up an existing MySQL database on the local on-premises server or in a virtual machine, run the following command:

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

I parametri da specificare sono:The parameters to provide are:

  • [uname] Username del database[uname] Your database username
  • [pass] Password del database (si noti che non è presente alcuno spazio vuoto tra -p e la password)[pass] The password for your database (note there is no space between -p and the password)
  • [dbname] Nome del database[dbname] The name of your database
  • [backupfile.sql] Filename per il backup del database[backupfile.sql] The filename for your database backup
  • [-opt] Opzione mysqldump[--opt] The mysqldump option

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.For example, to back up a database named 'testdb' on your MySQL server with the username 'testuser' and with no password to a file testdb_backup.sql, use the following command. 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.The command backs up the testdb database into a file called testdb_backup.sql, which contains all the SQL statements needed to re-create the 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.To select specific tables in your database to back up, list the table names separated by spaces. Ad esempio, per eseguire il backup delle sole tabelle table1 e table2 in "testdb", seguire questo esempio:For example, to back up only table1 and table2 tables from the 'testdb', follow this example:

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

Per eseguire il backup di più database contemporaneamente, usare lo switch -database ed elencare i nomi dei database separati da spazi.To back up more than one database at once, use the --database switch and list the database names separated by spaces.

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

Per eseguire il backup di tutti i database del server contemporaneamente è necessario usare l'opzione --all-databases (tutti i database).To back up all the databases in the server at one time, you should use the --all-databases option.

$ mysqldump -u root -p --all-databases > alldb_backup.sql 

Creare un database sul database di Azure per il server MySQL di destinazioneCreate a database on the target Azure Database for MySQL server

Creare un database vuoto nel database di Azure per il server MySQL di destinazione in cui si vuole eseguire la migrazione dei dati.Create an empty database on the target Azure Database for MySQL server where you want to migrate the data. Usare uno strumento come MySQL Workbench, Toad o Navicat per creare il database.Use a tool such as MySQL Workbench, Toad, or Navicat to create the 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.The database can have the same name as the database that is contained the dumped data or you can create a database with a different name.

Per la connessione, individuare le informazioni di connessione nella pagina Proprietà nel database di Azure per MySQL.To get connected, locate the connection information on the Properties page in your Azure Database for MySQL. Trovare le informazioni di connessione nel portale di AzureFind the connection information in the Azure portal

Aggiungere le informazioni di connessione in MySQL Workbench.Add the connection information into your MySQL Workbench. Stringa di connessione MySQL WorkbenchMySQL Workbench Connection String

Ripristinare il database MySQL mediante una riga di comando o MySQL WorkbenchRestore your MySQL database using command-line or MySQL Workbench

Dopo avere creato il database di destinazione è possibile usare il comando mysql o MySQL Workbench per ripristinare i dati nel database appena creato specificatamente dal file di dump.Once you have created the target database, you can use the mysql command or MySQL Workbench to restore the data into the specific newly created database from the dump file.

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

In questo esempio, ripristinare i dati nel database appena creato nel database di Azure per il server MySQL di destinazione.In this example, restore the data into the newly created database on the target Azure Database for MySQL server.

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

Esportazione mediante PHPMyAdminExport using PHPMyAdmin

Per l'esportazione è possibile usare lo strumento comune phpMyAdmin, che potrebbe essere già installato in locale nel proprio ambiente.To export, you can use the common tool phpMyAdmin, which you may already have installed locally in your environment. Per esportare il database MySQL mediante PHPMyAdmin:To export your MySQL database using PHPMyAdmin:

  • Aprire phpMyAdmin.Open phpMyAdmin.
  • Selezionare il database.Select your database. Fare clic sul nome del database nell'elenco a sinistra.Click the database name in the list on the left.
  • Fare clic sul collegamento Export (Esporta).Click the Export link. Viene visualizzata una nuova pagina per eseguire il dump del database.A new page appears to view the dump of database.
  • Nell'area Export (Esporta) fare clic sul collegamento Select All (Seleziona tutto) per scegliere le tabelle nel database.In the Export area, click the Select All link to choose the tables in your database.
  • Nell'area delle opzioni SQL, fare clic sulle opzioni appropriate.In the SQL options area, click the appropriate options.
  • Fare clic sull'opzione Save as file (Salva come file) e sull'opzione di compressione corrispondente e quindi fare clic sul pulsante Go (Vai).Click the Save as file option and the corresponding compression option and then click the Go button. Verrà visualizzata una finestra di dialogo che richiede di salvare il file in locale.A dialog box should appear prompting you to save the file locally.

Importazione mediante PHPMyAdminImport using PHPMyAdmin

L'importazione del database è simile all'esportazione.Importing your database is similar to exporting. Procedere come segue:Do the following actions:

  • Aprire phpMyAdmin.Open phpMyAdmin.
  • Nella pagina di impostazione di phpMyAdmin fare clic su Add (Aggiungi) per aggiungere il database di Azure per il server MySQL.In the phpMyAdmin setup page, click Add to add your Azure Database for MySQL server. Specificare i dettagli della connessione e le informazioni di accesso.Provide the connection details and login information.
  • Creare un database denominato in modo appropriato e selezionarlo a sinistra della schermata.Create an appropriately named database and select it on the left of the screen. Per riscrivere il database esistente, fare clic sul nome del database, selezionare tutte le caselle di controllo accanto ai nomi delle tabelle e selezionare Drop (Elimina) per eliminare le tabelle esistenti.To rewrite the existing database, click the database name, select all the check boxes beside the table names, and select Drop to delete the existing tables.
  • Fare clic sul collegamento SQL per visualizzare la pagina in cui è possibile digitare i comandi SQL o caricare il file SQL.Click the SQL link to show the page where you can type in SQL commands, or upload your SQL file.
  • Usare il pulsante Browse (Sfoglia) per trovare il file nel database.Use the browse button to find the database file.
  • Fare clic sul pulsante Go (Vai) per esportare il backup, eseguire i comandi SQL e ricreare il database.Click the Go button to export the backup, execute the SQL commands, and re-create your database.

Passaggi successiviNext steps

Come connettere le applicazioni al database di Azure per MySQLConnect applications to Azure Database for MySQL