Migre su Base de datos MySQL a Azure Database for MySQL mediante el volcado y la restauración.Migrate your MySQL database to Azure Database for MySQL using dump and restore

SE APLICA A: Servidor único de Azure Database for MySQL Servidor flexible de Azure Database for MySQL

En este artículo se explican dos formas habituales de hacer una copia de seguridad y restaurar bases de datos en Azure Database for MySQL.This article explains two common ways to back up and restore databases in your Azure Database for MySQL

  • Volcado y restauración desde la línea de comandos (mediante mysqldump)Dump and restore from the command-line (using mysqldump)
  • Volcado y restauración mediante PHPMyAdminDump and restore using PHPMyAdmin

También puede consultar la Guía de migración de bases de datos, donde encontrará información detallada y casos de uso sobre la migración de bases de datos a Azure Database for MySQL.You can also refer to Database Migration Guide for detailed information and use cases about migrating databases to Azure Database for MySQL. En esta guía se proporcionan instrucciones que conducen al planeamiento y la ejecución correctos de una migración de MySQL a Azure.This guide provides guidance that will lead the successful planning and execution of a MySQL migration to Azure.

Antes de empezarBefore you begin

Para seguir esta guía de procedimientos, necesita lo siguiente:To step through this how-to guide, you need to have:

Sugerencia

Si desea migrar bases de datos de gran tamaño con tamaños de base de datos superiores a 1 TB, considere la posibilidad de usar herramientas de la comunidad como mydumper/myloader, que admite la importación y exportación 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. Aprenda cómo migrar bases de datos de MySQL grandes.Learn How to migrate large MySQL databases.

Casos de uso comunes de volcado y restauraciónCommon use-cases for dump and restore

Los casos de uso más comunes son:Most common use-cases are:

  • Transferencia desde otro proveedor de servicios administrados: es posible que la mayoría de proveedores de servicios administrados no proporcione acceso al archivo de almacenamiento físico por motivos de seguridad, por lo que la copia de seguridad y restauración lógica es la única opción 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.

  • Migración desde el entorno o la máquina virtual local: Azure Database for MySQL no admite la restauración de copias de seguridad físicas, lo que hace que la copia de seguridad y restauración lógica sea el ÚNICO enfoque.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.

  • Transferencia del almacenamiento de copia de seguridad de un almacenamiento con redundancia local a un almacenamiento con redundancia geográfica: Azure Database for MySQL permite configurar el almacenamiento con redundancia local o con redundancia geográfica para la copia de seguridad solo durante la creación del 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. Una vez que se ha aprovisionado el servidor, no se puede cambiar la opción de redundancia del almacenamiento de copia de seguridad.Once the server is provisioned, you cannot change the backup storage redundancy option. Para trasladar el almacenamiento de copia de seguridad del almacenamiento con redundancia local a otro con redundancia geográfica, la ÚNICA opción es el volcado y restauración.In order to move your backup storage from locally redundant storage to geo-redundant storage, dump and restore is the ONLY option.

  • Migración desde motores de almacenamiento alternativos a InnoDB: Azure Database for MySQL solo admite el motor de almacenamiento InnoDB y, por tanto, no es compatible con otros 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. Si las tablas están configuradas con otros motores de almacenamiento, conviértalos al formato del motor InnoDB antes de realizar la migración a Azure Database for 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 ejemplo, si tiene una aplicación WordPress o WebApp que usa las tablas MyISAM, convierta primero esas tablas; para ello, mígrelas al formato InnoDB antes de restaurarlas en Azure Database for 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. Use la cláusula ENGINE=InnoDB para configurar el motor utilizado al crear una nueva tabla y luego transfiera los datos a la tabla compatible antes de la restauración.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 compatibilidad, asegúrese de usar la misma versión de MySQL en los sistemas de origen y de destino al realizar el volcado de las bases de datos.To avoid any compatibility issues, ensure the same version of MySQL is used on the source and destination systems when dumping databases. Por ejemplo, si el servidor MySQL existente tiene la versión 5.7, debe migrar a Azure Database for MySQL configurado para ejecutar esta versión.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. El comando mysql_upgrade no funciona en un servidor de Azure Database for MySQL y no se admite.The mysql_upgrade command does not function in an Azure Database for MySQL server, and is not supported.
  • Si tiene que actualizar entre versiones de MySQL, primero vuelque o exporte la base de datos con una versión menor a una versión superior de MySQL en su propio entorno.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. A continuación, ejecute mysql_upgrade antes de intentar la migración a una instancia de Azure Database for MySQL.Then run mysql_upgrade, before attempting migration into an Azure Database for MySQL.

Consideraciones de rendimientoPerformance considerations

Para optimizar el rendimiento, tenga en cuenta estas consideraciones al volcar grandes bases de datos:To optimize performance, take notice of these considerations when dumping large databases:

  • Use la opción exclude-triggers en mysqldump al volcar las bases de datos.Use the exclude-triggers option in mysqldump when dumping databases. Excluya los desencadenadores de los archivos de volcado para evitar que los comandos de desencadenamiento se disparen durante la restauración de datos.Exclude triggers from dump files to avoid the trigger commands firing during the data restore.
  • Use la opción single-transaction para establecer el modo de aislamiento de transacción a REPEATABLE READ y enviar una instrucción SQL START TRANSACTION al servidor antes de volcar datos.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. El volcado de muchas tablas en una única transacción provoca el consumo de almacenamiento adicional durante la restauración.Dumping many tables within a single transaction causes some extra storage to be consumed during restore. Las opciones single-transaction y lock-tables son mutuamente excluyentes porque LOCK TABLES hace que las transacciones pendientes se confirmen implícitamente.The single-transaction option and the lock-tables option are mutually exclusive because LOCK TABLES causes any pending transactions to be committed implicitly. Para volcar las tablas grandes, combine la opción single-transaction con la opción quick.To dump large tables, combine the single-transaction option with the quick option.
  • Use la sintaxis de varias filas extended-insert que incluye varias listas VALUE.Use the extended-insert multiple-row syntax that includes several VALUE lists. Esto da como resultado un archivo de volcado de memoria más pequeño y acelera las inserciones cuando se vuelve a cargar el archivo.This results in a smaller dump file and speeds up inserts when the file is reloaded.
  • Use la opción order-by-primary de mysqldump al volcar las bases de datos, para que el script de los datos se genere en el orden de la clave principal.Use the order-by-primary option in mysqldump when dumping databases, so that the data is scripted in primary key order.
  • Use la opción disable-keys de mysqldump al volcar los datos para deshabilitar las restricciones de clave externa antes de la carga.Use the disable-keys option in mysqldump when dumping data, to disable foreign key constraints before load. El hecho de deshabilitar las comprobaciones de clave externa favorece un aumento del rendimiento.Disabling foreign key checks provides performance gains. Habilite las restricciones y compruebe los datos después de la carga para garantizar la integridad referencial.Enable the constraints and verify the data after the load to ensure referential integrity.
  • Use tablas con particiones cuando sea necesario.Use partitioned tables when appropriate.
  • Cargue los datos en paralelo.Load data in parallel. Evite demasiado paralelismo que podría provocar que se alcanzara un límite de recursos, y supervise los recursos mediante las métricas disponibles en Azure Portal.Avoid too much parallelism that would cause you to hit a resource limit, and monitor resources using the metrics available in the Azure portal.
  • Use la opción defer-table-indexes de mysqlpump al volcar las bases de datos, para que la creación de índices tenga lugar una vez cargados los datos de las tablas.Use the defer-table-indexes option in mysqlpump when dumping databases, so that index creation happens after tables data is loaded.
  • Use la opción skip-definer de mysqlpump para omitir las cláusulas DEFINER y SQL SECURITY de las instrucciones CREATE para las vistas y los procedimientos almacenados.Use the skip-definer option in mysqlpump to omit definer and SQL SECURITY clauses from the create statements for views and stored procedures. Al volver a cargar el archivo de volcado de memoria, se crean objetos que usan los valores DEFINER y SQL SECURITY predeterminados.When you reload the dump file, it creates objects that use the default DEFINER and SQL SECURITY values.
  • Copie los archivos de copia de seguridad en un blob o almacén de Azure y realice la restauración desde allí, lo que debería ser mucho más rápido que realizar la restauración a través de 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.

Creación de una base de datos en el servidor de destino de Azure Database for MySQLCreate a database on the target Azure Database for MySQL server

Cree una base de datos vacía en el servidor de destino de Azure Database for MySQL donde se van a migrar los datos.Create an empty database on the target Azure Database for MySQL server where you want to migrate the data. Use una herramienta como MySQL Workbench o mysql.exe para crear la base de datos.Use a tool such as MySQL Workbench or mysql.exe to create the database. La base de datos puede tener el mismo nombre que la base de datos que contiene los datos volcados, o puede crear una base de datos con un nombre 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 conectarse, busque la información de conexión en la página Introducción de su instancia de Azure Database for MySQL.To get connected, locate the connection information in the Overview of your Azure Database for MySQL.

Obtención de la información de conexión en Azure Portal

Agregue la información de conexión a MySQL Workbench.Add the connection information into your MySQL Workbench.

Cadena de conexión de MySQL Workbench

Preparación del servidor de Azure Database for MySQL de destino para cargas de datos rápidasPreparing the target Azure Database for MySQL server for fast data loads

Para preparar el servidor de Azure Database for MySQL de destino para cargas de datos más rápidas, es necesario cambiar los siguientes parámetros y configuración del servidor.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: establézcalo en 1073741824 (es decir, 1 GB) para evitar cualquier problema de desbordamiento debido a filas largas.max_allowed_packet – set to 1073741824 (i.e. 1GB) to prevent any overflow issue due to long rows.
  • slow_query_log: establézcalo en OFF para desactivar el registro de consultas lentas.slow_query_log – set to OFF to turn off the slow query log. Esto eliminará la sobrecarga causada por un registro de consultas lento durante las cargas de datos.This will eliminate the overhead caused by slow query logging during data loads.
  • query_store_capture_mode: establézcalo en NONE para desactivar el Almacén de consultas.query_store_capture_mode – set to NONE to turn off the Query Store. Esto eliminará la sobrecarga causada por las actividades de muestreo en el Almacén de consultas.This will eliminate the overhead caused by sampling activities by Query Store.
  • innodb_buffer_pool_size: escale verticalmente el servidor a 32 núcleo virtual de SKU con optimización de memoria desde el plan de tarifa del portal durante la migración para aumentar el 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 solo se puede aumentar escalando el proceso para Azure Database for MySQL Server.Innodb_buffer_pool_size can only be increased by scaling up compute for Azure Database for MySQL server.
  • innodb_io_capacity e innodb_io_capacity_max: cambie a 9000 de los parámetros del servidor en Azure Portal para mejorar el uso de la E/S a fin de optimizar la velocidad de la migración.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 e innodb_write_io_threads: cambie a 4 desde los parámetros del servidor en Azure Portal para mejorar la velocidad de la migración.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 verticalmente la capa de almacenamiento: las IOPs para el servidor de Azure Database for MySQL aumentan progresivamente con el aumento de la capa de almacenamiento.Scale up Storage tier – The IOPs for Azure Database for MySQL server increases progressively with the increase in storage tier. Para agilizar las cargas, puede aumentar la capa de almacenamiento para aumentar la IOPs aprovisionada.For faster loads, you may want to increase the storage tier to increase the IOPs provisioned. Recuerde que el almacenamiento solo se puede escalar verticalmente, no reducir.Please do remember the storage can only be scaled up, not down.

Una vez completada la migración, puede revertir los parámetros del servidor y la configuración del nivel de proceso a sus valores anteriores.Once the migration is completed, you can revert back the server parameters and compute tier configuration to its previous values.

Volcado y restauración mediante la utilidad mysqldumpDump and restore using mysqldump utility

Creación de un archivo de copia de seguridad a partir de la línea de comandos mediante mysqldumpCreate a backup file from the command-line using mysqldump

Para hacer copia de seguridad de una base de datos MySQL existente en el servidor local en el entorno local o en una máquina virtual, ejecute el siguiente 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]

Los parámetros que se proporcionan son los siguientes:The parameters to provide are:

  • [uname] El nombre de usuario de base de datos[uname] Your database username
  • [pass] La contraseña de la base de datos (observe que no hay ningún espacio entre -p y la contraseña)[pass] The password for your database (note there is no space between -p and the password)
  • [dbname] El nombre de la base de datos[dbname] The name of your database
  • [backupfile.sql] El nombre de archivo para la copia de seguridad de la base de datos[backupfile.sql] The filename for your database backup
  • [--opt] La opción mysqldump[--opt] The mysqldump option

Por ejemplo, para hacer una copia de seguridad de una base de datos llamada "testdb" en el servidor MySQL con el nombre de usuario "testuser" y sin contraseña en archivo untestdb_backup.sql, use el siguiente 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. El comando realiza una copia de la base de datos testdb en un archivo denominado testdb_backup.sql, que contiene todas las instrucciones SQL necesarias para volver a crear la base de datos.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. Asegúrese de que el nombre de usuario "testuser" tenga al menos el privilegio SELECT para las tablas volcadas, SHOW VIEW para las vistas volcadas, TRIGGER para los desencadenadores volcados y LOCK TABLES si no se usa la opción de una transacción.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';

Ahora, ejecute mysqldump para crear la copia de seguridad de la base de datos testdbNow run mysqldump to create the backup of testdb database

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

Si quiere incluir en la copia de seguridad solo algunas de las tablas, ordene los nombres de tabla en una lista separados por espacios y seleccione los que desee.To select specific tables in your database to back up, list the table names separated by spaces. Por ejemplo, para realizar una copia de seguridad solo de las tablas table1 y table2 de "testdb", siga este ejemplo: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 hacer una copia de seguridad de más de una base de datos a la vez, use el conmutador --database y ordene los nombres de las bases de datos en una lista separados por espacios.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

Restauración de la base de datos MySQL mediante la línea de comandos o MySQL WorkbenchRestore your MySQL database using command-line or MySQL Workbench

Una vez que haya creado la base de datos de destino, puede usar el comando mysql o MySQL Workbench para restaurar los datos en la base de datos específica recién creada desde el archivo de volcado.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]

En este ejemplo, restaure los datos en la base de datos recién creada en el servidor de destino de Azure Database for MySQL server.In this example, restore the data into the newly created database on the target Azure Database for MySQL server.

Este es un ejemplo de cómo usar este elemento mysql para un servidor único: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

Este es un ejemplo de cómo usar este elemento mysql para el servidor flexible: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

Volcado y restauración mediante PHPMyAdminDump and restore using PHPMyAdmin

Siga estos pasos para realizar un volcado y restaurar una base de datos mediante PHPMyadmin.Follow these steps to dump and restore a database using PHPMyadmin.

Nota

En el caso de un servidor único, el nombre de usuario debe tener este formato, "username@servername" pero, en el de un servidor flexible, puede usar solo "username". Si usa "username@servername" para un servidor flexible, se producirá un error en la conexión.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.

Exportación con PHPMyadminExport with PHPMyadmin

Para exportar, puede usar la herramienta común phpMyAdmin que puede haber instalado ya localmente en su entorno.To export, you can use the common tool phpMyAdmin, which you may already have installed locally in your environment. Para exportar la Base de datos MySQL mediante PHPMyAdmin:To export your MySQL database using PHPMyAdmin:

  1. Abra phpMyAdmin.Open phpMyAdmin.
  2. Seleccione la base de datos.Select your database. Haga clic en el nombre de la base de datos en la lista de la izquierda.Click the database name in the list on the left.
  3. Haga clic en el vínculo Exportar.Click the Export link. Aparece una nueva página para ver el volcado de la base de datos.A new page appears to view the dump of database.
  4. En el área de exportación, haga clic en el vínculo Select All (Seleccionar todo) para seleccionar todas las tablas de la base de datos.In the Export area, click the Select All link to choose the tables in your database.
  5. En el área de opciones de SQL, haga clic en las opciones adecuadas.In the SQL options area, click the appropriate options.
  6. Haga clic en la opción Save as file (Guardar como archivo) y en la opción correspondiente de compresión y luego haga clic en el botón Go (Ir).Click the Save as file option and the corresponding compression option and then click the Go button. Debería aparecer un cuadro de diálogo en el que se le pide que guarde el archivo localmente.A dialog box should appear prompting you to save the file locally.

Importación mediante PHPMyAdminImport using PHPMyAdmin

La importación de la base de datos es similar a la exportación.Importing your database is similar to exporting. Haga lo siguiente:Do the following actions:

  1. Abra phpMyAdmin.Open phpMyAdmin.
  2. En la página de instalación de phpMyAdmin, haga clic en Add (Agregar) para agregar el servidor de Azure Database for MySQL.In the phpMyAdmin setup page, click Add to add your Azure Database for MySQL server. Proporcione la información de conexión e inicio de sesión.Provide the connection details and login information.
  3. Cree una base de datos con el nombre adecuado y selecciónela en la parte izquierda de la pantalla.Create an appropriately named database and select it on the left of the screen. Para volver a escribir la base de datos existente, haga clic en el nombre de la base de datos, active todas las casillas situadas al lado de los nombres de tabla y seleccione Eliminar para eliminar las tablas 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. Haga clic en el vínculo SQL para mostrar la página donde puede escribir comandos SQL, o bien cargue su archivo SQL.Click the SQL link to show the page where you can type in SQL commands, or upload your SQL file.
  5. Use el botón Browse (Examinar) para buscar el archivo de base de datos.Use the browse button to find the database file.
  6. Haga clic en Go (Ir) para exportar la copia de seguridad, ejecutar los comandos SQL y volver a crear la base de datos.Click the Go button to export the backup, execute the SQL commands, and re-create your database.

Problemas conocidosKnown Issues

Para obtener información sobre problemas conocidos, sugerencias y trucos, le recomendamos que consulte nuestro blog de techcommunity.For known issues, tips and tricks, we recommend you to look at our techcommunity blog.

Pasos siguientesNext steps