Migrar a sua base de dados MySQL para a Dase de Dados do Azure para MySQL através da funcionalidade de captura e restauroMigrate your MySQL database to Azure Database for MySQL using dump and restore

APLICA-SE A: Base de Dados Azure para MySQL - Base de Dados Azure de servidor único para MySQL - Servidor Flexível

Este artigo explica duas formas comuns de fazer o back backs de apoio e restaurar as bases de dados na sua Base de Dados Azure para o MySQLThis article explains two common ways to back up and restore databases in your Azure Database for MySQL

  • Despejar e restaurar a partir da linha de comando (usando mysqldump)Dump and restore from the command-line (using mysqldump)
  • Despejar e restaurar usando PHPMyAdminDump and restore using PHPMyAdmin

Também pode consultar o Guia de Migração da Base de Dados para obter informações detalhadas e utilizar casos sobre bases de dados migratórias para a Base de Dados Azure para o MySQL.You can also refer to Database Migration Guide for detailed information and use cases about migrating databases to Azure Database for MySQL. Este guia fornece orientações que conduzirão ao planeamento e execução bem-sucedidos de uma migração MySQL para Azure.This guide provides guidance that will lead the successful planning and execution of a MySQL migration to Azure.

Antes de começarBefore you begin

Para passar por este guia, você precisa ter:To step through this how-to guide, you need to have:

Dica

Se procura migrar grandes bases de dados com tamanhos de base de dados superiores a 1 TBs, talvez deva considerar a utilização de ferramentas comunitárias como o mydumper/myloader que suporta a exportação e importação paralelas.If you are looking to migrate large databases with database sizes more than 1 TBs, you may want to consider using community tools like mydumper/myloader which supports parallel export and import. Saiba como migrar grandes bases de dados mySQL.Learn How to migrate large MySQL databases.

Casos de utilização comuns para despejo e restauroCommon use-cases for dump and restore

Os casos de utilização mais comuns são:Most common use-cases are:

  • Deslocando-se de outro prestador de serviços gerido - A maioria dos prestadores de serviços geridos não podem fornecer acesso ao ficheiro de armazenamento físico por razões de segurança, pelo que a cópia de segurança lógica e a restauração é a única opção para migrar.Moving from other managed service provider - Most managed service provider may not provide access to the physical storage file for security reasons so logical backup and restore is the only option to migrate.

  • Migrar do ambiente no local ou máquina virtual - Azure Database for MySQL não suporta a restauração de backups físicos que fazem backups lógicos e restauram como a abordagem ÚNICA.Migrating from on-premises environment or Virtual machine - Azure Database for MySQL doesn't support restore of physical backups which makes logical backup and restore as the ONLY approach.

  • Mover o armazenamento de backup de armazenamento localmente redundante para armazenamento geo-redundante - A Azure Database for MySQL permite configurar armazenamento localmente redundante ou geo-redundante para cópia de segurança só é permitido durante a criação do servidor.Moving your backup storage from locally redundant to geo-redundant storage - Azure Database for MySQL allows configuring locally redundant or geo-redundant storage for backup is only allowed during server create. Assim que o servidor tiver sido aprovisionado, não poderá alterar a opção de redundância do armazenamento de cópias de segurança.Once the server is provisioned, you cannot change the backup storage redundancy option. Para mover o seu armazenamento de reserva de armazenamento local redundante para armazenamento geo-redundante, despejar e restaurar é a opção ÚNICA.In order to move your backup storage from locally redundant storage to geo-redundant storage, dump and restore is the ONLY option.

  • A migração de motores de armazenamento alternativos para InnoDB - Azure Database para o MySQL suporta apenas o motor de armazenamento InnoDB, pelo que não suporta motores de armazenamento alternativos.Migrating from alternative storage engines to InnoDB - Azure Database for MySQL supports only InnoDB Storage engine, and therefore does not support alternative storage engines. Se as suas tabelas estiverem configuradas com outros motores de armazenamento, converta-as no formato do motor InnoDB antes da migração para Azure Database para o MySQL.If your tables are configured with other storage engines, convert them into the InnoDB engine format before migration to Azure Database for MySQL.

    Por exemplo, se tiver um WordPress ou WebApp utilizando as tabelas MyISAM, primeiro converta essas tabelas migrando para o formato InnoDB antes de restaurar a Base de Dados Azure para o 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. Utilize a cláusula ENGINE=InnoDB para definir o motor utilizado ao criar uma nova tabela e, em seguida, transfira os dados para a tabela compatível antes da restauração.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
    

Importante

  • Para evitar problemas de compatibilidade, confirme que utiliza a mesma versão do MySQL nos sistemas de origem e de destino ao capturar as bases de dados.To avoid any compatibility issues, ensure the same version of MySQL is used on the source and destination systems when dumping databases. Por exemplo, se o seu servidor MySQL existente for a versão 5.7, então deve migrar para a Base de Dados Azure para o MySQL configurado para executar a versão 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. O mysql_upgrade comando não funciona numa Base de Dados Azure para o servidor MySQL e não é suportado.The mysql_upgrade command does not function in an Azure Database for MySQL server, and is not supported.
  • Se precisar de fazer upgrade através das versões MySQL, primeiro despeje ou exporte a sua base de dados de versão inferior para uma versão mais alta do MySQL no seu próprio 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. Em mysql_upgrade seguida, corra , antes de tentar migrar para uma base de dados Azure para MySQL.Then run mysql_upgrade, before attempting migration into an Azure Database for MySQL.

Considerações de desempenhoPerformance considerations

Para otimizar o desempenho, tome conhecimento destas considerações ao despejar grandes bases de dados:To optimize performance, take notice of these considerations when dumping large databases:

  • Utilize a exclude-triggers opção no mysqldump ao despejar bases de dados.Use the exclude-triggers option in mysqldump when dumping databases. Exclua os gatilhos dos ficheiros de despejo para evitar que os comandos do gatilho disparem durante a restauração dos dados.Exclude triggers from dump files to avoid the trigger commands firing during the data restore.
  • Utilize a single-transaction opção para definir o modo de isolamento de transação para REPETível READ e envie uma declaração DE SQL DE START TRANSACTION para o servidor antes de despejar dados.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. Despejar muitas tabelas numa única transação faz com que algum armazenamento extra seja consumido durante a restauração.Dumping many tables within a single transaction causes some extra storage to be consumed during restore. A single-transaction opção e a lock-tables opção são mutuamente exclusivas porque lock tables faz com que quaisquer transações pendentes sejam cometidas implicitamente.The single-transaction option and the lock-tables option are mutually exclusive because LOCK TABLES causes any pending transactions to be committed implicitly. Para despejar mesas grandes, combine a single-transaction opção com a quick opção.To dump large tables, combine the single-transaction option with the quick option.
  • Utilize a extended-insert sintaxe de várias linhas que inclui várias listas DE VALOR.Use the extended-insert multiple-row syntax that includes several VALUE lists. Isto resulta num ficheiro de despejo menor e acelera as inserções quando o ficheiro é recarregado.This results in a smaller dump file and speeds up inserts when the file is reloaded.
  • Utilize a order-by-primary opção no mysqldump ao despejar bases de dados, de modo a que os dados são descritos na ordem principal.Use the order-by-primary option in mysqldump when dumping databases, so that the data is scripted in primary key order.
  • Utilize a disable-keys opção no mysqldump ao despejar dados, para desativar as restrições de chaves estrangeiras antes da carga.Use the disable-keys option in mysqldump when dumping data, to disable foreign key constraints before load. A desativação de verificações de chaves estrangeiras proporciona ganhos de desempenho.Disabling foreign key checks provides performance gains. Ative os constrangimentos e verifique os dados após a carga para garantir a integridade referencial.Enable the constraints and verify the data after the load to ensure referential integrity.
  • Utilize mesas divisórias quando apropriado.Use partitioned tables when appropriate.
  • Carregue os dados em paralelo.Load data in parallel. Evite demasiado paralelismo que o faria atingir um limite de recursos e monitorizar os recursos utilizando as métricas disponíveis no portal 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.
  • Utilize a defer-table-indexes opção no mysqlpump ao despejar bases de dados, de modo que a criação de índices acontece após o envio de dados das tabelas.Use the defer-table-indexes option in mysqlpump when dumping databases, so that index creation happens after tables data is loaded.
  • Utilize a skip-definer opção no mysqlpump para omitir cláusulas de definição e SQL SECURITY a partir da criação de declarações para visualizações e procedimentos armazenados.Use the skip-definer option in mysqlpump to omit definer and SQL SECURITY clauses from the create statements for views and stored procedures. Quando recarrega o ficheiro de despejo, cria objetos que utilizam os valores de DEFINIÇÃO PADRÃO e SQL SECURITY.When you reload the dump file, it creates objects that use the default DEFINER and SQL SECURITY values.
  • Copie os ficheiros de cópias de segurança para uma bolha/loja Azure e execute a restauração a partir daí, o que deve ser muito mais rápido do que executar o restauro através da Internet.Copy the backup files to an Azure blob/store and perform the restore from there, which should be a lot faster than performing the restore across the Internet.

Criar uma base de dados na base de dados Azure alvo para servidor MySQLCreate a database on the target Azure Database for MySQL server

Crie uma base de dados vazia na base de dados Azure target para o servidor MySQL onde pretende migrar os dados.Create an empty database on the target Azure Database for MySQL server where you want to migrate the data. Utilize uma ferramenta como a bancada MySQL Workbench ou mysql.exe para criar a base de dados.Use a tool such as MySQL Workbench or mysql.exe to create the database. A base de dados pode ter o mesmo nome que a base de dados que contém os dados despejados ou pode criar uma base de dados com um nome diferente.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.

Para se conectar, localize as informações de ligação na visão geral da sua Base de Dados Azure para o MySQL.To get connected, locate the connection information in the Overview of your Azure Database for MySQL.

Encontre as informações de ligação no portal Azure

Adicione as informações de ligação na sua bancada MySQL Workbench.Add the connection information into your MySQL Workbench.

Cadeia de conexão mysql workbench

Preparar a base de dados Azure alvo para o servidor MySQL para cargas de dados rápidasPreparing the target Azure Database for MySQL server for fast data loads

Para preparar o target Azure Database para o servidor MySQL para cargas de dados mais rápidas, os seguintes parâmetros e configuração do servidor precisam de ser alterados.To prepare the target Azure Database for MySQL server for faster data loads, the following server parameters and configuration needs to be changed.

  • max_allowed_packet – definido para 1073741824 (ou seja, 1GB) para evitar qualquer problema de transbordo devido a longas filas.max_allowed_packet – set to 1073741824 (i.e. 1GB) to prevent any overflow issue due to long rows.
  • slow_query_log – definido para OFF para desligar o registo de consulta lenta.slow_query_log – set to OFF to turn off the slow query log. Isto eliminará a sobrecarga causada por uma consulta lenta durante as cargas de dados.This will eliminate the overhead caused by slow query logging during data loads.
  • query_store_capture_mode – definido para ZERO para desligar a Loja de Consultas.query_store_capture_mode – set to NONE to turn off the Query Store. Isto eliminará as despesas gerais causadas pelas atividades de amostragem pela Query Store.This will eliminate the overhead caused by sampling activities by Query Store.
  • innodb_buffer_pool_size – Escalar o servidor para 32 vCore Memory Optimized SKU do nível de Preços do portal durante a migração para aumentar o innodb_buffer_pool_size.innodb_buffer_pool_size – Scale up the server to 32 vCore Memory Optimized SKU from the Pricing tier of the portal during migration to increase the innodb_buffer_pool_size. Innodb_buffer_pool_size só podem ser aumentados aumentando o cálculo para a Base de Dados Azure para o servidor MySQL.Innodb_buffer_pool_size can only be increased by scaling up compute for Azure Database for MySQL server.
  • innodb_io_capacity & innodb_io_capacity_max - Altere para 9000 a partir dos parâmetros do Servidor no portal Azure para melhorar a utilização do IO para otimizar a velocidade de migração.innodb_io_capacity & innodb_io_capacity_max - Change to 9000 from the Server parameters in Azure portal to improve the IO utilization to optimize for migration speed.
  • innodb_write_io_threads & innodb_write_io_threads - Altere para 4 a partir dos parâmetros do Servidor no portal Azure para melhorar a velocidade de migração.innodb_write_io_threads & innodb_write_io_threads - Change to 4 from the Server parameters in Azure portal to improve the speed of migration.
  • Escalar o nível de armazenamento – Os IOPs para Azure Database para o servidor MySQL aumentam progressivamente com o aumento do nível de armazenamento.Scale up Storage tier – The IOPs for Azure Database for MySQL server increases progressively with the increase in storage tier. Para cargas mais rápidas, pode querer aumentar o nível de armazenamento para aumentar os IOPs a provisionados.For faster loads, you may want to increase the storage tier to increase the IOPs provisioned. Por favor, lembre-se que o armazenamento só pode ser aumentado, não para baixo.Please do remember the storage can only be scaled up, not down.

Uma vez concluída a migração, pode reverter os parâmetros do servidor e calcular a configuração do nível para os valores anteriores.Once the migration is completed, you can revert back the server parameters and compute tier configuration to its previous values.

Despejar e restaurar usando o utilitário mysqldumpDump and restore using mysqldump utility

Criar um ficheiro de backup a partir da linha de comando usando mysqldumpCreate a backup file from the command-line using mysqldump

Para fazer o back up de uma base de dados MySQL existente no servidor local ou numa máquina virtual, execute o seguinte comando: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]

Os parâmetros a fornecer são:The parameters to provide are:

  • [uname] Nome de utilizador da sua base de dados[uname] Your database username
  • [passe] A palavra-passe da sua base de dados (note que não há espaço entre -p e a palavra-passe)[pass] The password for your database (note there is no space between -p and the password)
  • [dbname] O nome da sua base de dados[dbname] The name of your database
  • [ficheiro de reserva.sql] O nome de ficheiro para a sua cópia de segurança da base de dados[backupfile.sql] The filename for your database backup
  • [--opt] A opção mysqldump[--opt] The mysqldump option

Por exemplo, para fazer o back-up de uma base de dados chamada 'testdb' no seu servidor MySQL com o nome de utilizador 'testuser' e sem palavra-passe para um ficheiro testdb_backup.sql, utilize o seguinte comando.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. O comando reensi para testdb um ficheiro chamado , que contém todas as testdb_backup.sql declarações SQL necessárias para recriar a base de dados.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. Certifique-se de que o nome de utilizador 'testuser' tem pelo menos o privilégio SELECT para mesas de despejo, SHOW VIEW para vistas despejadas, TRIGGER para gatilhos despejados e TABELAS DE BLOQUEIO se a opção de transação única não for utilizada.Make sure that the username 'testuser' has at least the SELECT privilege for dumped tables, SHOW VIEW for dumped views, TRIGGER for dumped triggers, and LOCK TABLES if the --single-transaction option is not used.

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

Agora executar mysqldump para criar a cópia de segurança da base de testdb dadosNow run mysqldump to create the backup of testdb database

$ mysqldump -u root -p testdb > testdb_backup.sql

Para selecionar tabelas específicas na sua base de dados para fazer o back up, liste os nomes das tabelas separados por espaços.To select specific tables in your database to back up, list the table names separated by spaces. Por exemplo, para apoiar apenas as tabelas1 e as tabelas2 do 'testdb', siga este exemplo: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

Para fazer o back up mais de uma base de dados ao mesmo tempo, use o interruptor de base de dados e liste os nomes da base de dados separados por espaços.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

Restaurar a sua base de dados MySQL utilizando a linha de comando ou a bancada mySQL WorkbenchRestore your MySQL database using command-line or MySQL Workbench

Uma vez criado a base de dados-alvo, pode utilizar o comando mysql ou a bancada mySQL workbench para restaurar os dados na base de dados recentemente criada a partir do ficheiro de despejo.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]

Neste exemplo, restaurar os dados na base de dados recém-criada na base de dados target Azure para o servidor MySQL.In this example, restore the data into the newly created database on the target Azure Database for MySQL server.

Aqui está um exemplo para como usar este mysql para single server :Here is an example for how to use this mysql for Single Server :

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

Aqui está um exemplo para como usar este mysql para servidor flexível :Here is an example for how to use this mysql for Flexible Server :

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

Despejar e restaurar usando PHPMyAdminDump and restore using PHPMyAdmin

Siga estes passos para despejar e restaurar uma base de dados usando PHPMyadmin.Follow these steps to dump and restore a database using PHPMyadmin.

Nota

Para um único servidor, o nome de utilizador deve estar neste formato , username@servername ' mas para o servidor flexível pode simplesmente usar 'username' Se utilizar username@servername ' para servidor flexível, a ligação falhará.For single server, the username must be in this format , 'username@servername' but for flexible server you can just use 'username' If you use 'username@servername' for flexible server, the connection will fail.

Exportação com PHPMyadminExport with PHPMyadmin

Para exportar, pode utilizar a ferramenta comum phpMyAdmin, que já pode ter instalado localmente no seu ambiente.To export, you can use the common tool phpMyAdmin, which you may already have installed locally in your environment. Para exportar a sua base de dados MySQL utilizando PHPMyAdmin:To export your MySQL database using PHPMyAdmin:

  1. Abra phpMyAdmin.Open phpMyAdmin.
  2. Selecione a sua base de dados.Select your database. Clique no nome da base de dados na lista à esquerda.Click the database name in the list on the left.
  3. Clique no link Exportação.Click the Export link. Uma nova página parece ver o despejo da base de dados.A new page appears to view the dump of database.
  4. Na área De Exportação, clique no link Select All para escolher as tabelas na sua base de dados.In the Export area, click the Select All link to choose the tables in your database.
  5. Na área de opções SQL, clique nas opções apropriadas.In the SQL options area, click the appropriate options.
  6. Clique na opção Guardar como opção de ficheiro e na opção de compressão correspondente e, em seguida, clique no botão Go.Click the Save as file option and the corresponding compression option and then click the Go button. Deve aparecer uma caixa de diálogo que o leva a guardar o ficheiro localmente.A dialog box should appear prompting you to save the file locally.

Importação usando PHPMyAdminImport using PHPMyAdmin

Importar a sua base de dados é semelhante à exportação.Importing your database is similar to exporting. Fazer as seguintes ações:Do the following actions:

  1. Abra phpMyAdmin.Open phpMyAdmin.
  2. Na página de configuração phpMyAdmin, clique em Adicionar para adicionar a sua Base de Dados Azure para o servidor MySQL.In the phpMyAdmin setup page, click Add to add your Azure Database for MySQL server. Forneça os detalhes da ligação e informações de login.Provide the connection details and login information.
  3. Crie uma base de dados devidamente nomeada e selecione-a à esquerda do ecrã.Create an appropriately named database and select it on the left of the screen. Para reescrever a base de dados existente, clique no nome da base de dados, selecione todas as caixas de verificação ao lado dos nomes das tabelas e selecione Drop para eliminar as tabelas existentes.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.
  4. Clique no link SQL para mostrar a página onde pode escrever em comandos SQL ou fazer upload do seu ficheiro SQL.Click the SQL link to show the page where you can type in SQL commands, or upload your SQL file.
  5. Utilize o botão de navegação para encontrar o ficheiro de base de dados.Use the browse button to find the database file.
  6. Clique no botão Go para exportar a cópia de segurança, execute os comandos SQL e recrie a sua base de dados.Click the Go button to export the backup, execute the SQL commands, and re-create your database.

Problemas ConhecidosKnown Issues

Para questões conhecidas, dicas e truques, recomendamos que olhe para o nosso blog techcommunity.For known issues, tips and tricks, we recommend you to look at our techcommunity blog.

Passos seguintesNext steps