Migración de la base de datos MySQL a Azure Database for MySQL: servidor flexible mediante volcado y restauración

SE APLICA A: Azure Database for MySQL: servidor único Azure Database for MySQL: servidor flexible

Importante

El servidor único de Azure Database for MySQL está en la ruta de retirada. Se recomienda encarecidamente actualizar al servidor flexible de Azure Database for MySQL. Para más información sobre la migración al servidor flexible de Azure Database for MySQL, consulte ¿Qué ocurre con Azure Database for MySQL con servidor único?

En este artículo se explican dos formas comunes de realizar copias de seguridad y restaurar bases de datos en el servidor flexible de Azure Database for MySQL.

  • Volcar y restaurar desde la línea de comandos (mediante mysqldump).
  • Volcar y restaurar mediante PHPMy Administración.

También puede consultar la Guía de migración de bases de datos para obtener información detallada y casos de uso sobre la migración de bases de datos al servidor flexible de 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.

Antes de empezar

Para seguir esta guía de procedimientos, necesita lo siguiente:

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. Aprenda Cómo migrar bases de datos de MySQL grandes.

Casos de uso comunes de volcado y restauración

Los casos de uso más comunes son:

  • 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.

  • Migración desde un entorno local o una máquina virtual: el servidor flexible de Azure Database for MySQL no admite la restauración de copias de seguridad físicas, lo que hace que la copia de seguridad lógica y la restauración sean el único enfoque.

  • Traslado del almacenamiento de copia de seguridad de almacenamiento con redundancia local a almacenamiento con redundancia geográfica: el servidor flexible de Azure Database for MySQL permite configurar el almacenamiento con redundancia local o con redundancia geográfica para la copia de seguridad solo se permite durante la creación del servidor. Una vez que se ha aprovisionado el servidor, no se puede cambiar la opción de redundancia del almacenamiento de copia de seguridad. 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.

  • Migración desde motores de almacenamiento alternativos a InnoDB : el servidor flexible de Azure Database for MySQL solo admite el motor de almacenamiento InnoDB y, por tanto, no admite motores de almacenamiento alternativos. Si las tablas están configuradas con otros motores de almacenamiento, conviértalas en el formato del motor innoDB antes de la migración al servidor flexible de Azure Database for MySQL.

    Por ejemplo, si tiene wordPress o WebApp mediante las tablas MyISAM, convierta primero esas tablas mediante la migración al formato InnoDB antes de restaurar en el servidor flexible de 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.

    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. Por ejemplo, si el servidor MySQL existente es la versión 5.7, debe migrar a una instancia de servidor flexible de Azure Database for MySQL configurada para ejecutar la versión 5.7. El mysql_upgrade comando no funciona en una instancia de servidor flexible de Azure Database for MySQL y no se admite.
  • 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. A continuación, ejecute mysql_upgrade antes de intentar la migración a una instancia de servidor flexible de Azure Database for MySQL.

Consideraciones de rendimiento

Para optimizar el rendimiento, tenga en cuenta estas consideraciones al volcar grandes bases de datos:

  • Use la opción exclude-triggers en mysqldump al volcar las bases de datos. Excluya los desencadenadores de los archivos de volcado para evitar que los comandos de desencadenamiento se disparen durante la restauración de datos.
  • 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. El volcado de muchas tablas en una única transacción provoca el consumo de almacenamiento adicional durante la restauración. Las opciones single-transaction y lock-tables son mutuamente excluyentes porque LOCK TABLES hace que las transacciones pendientes se confirmen implícitamente. Para volcar las tablas grandes, combine la opción single-transaction con la opción quick.
  • Use la sintaxis de varias filas extended-insert que incluye varias listas VALUE. 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.
  • 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 la opción disable-keys de mysqldump al volcar los datos para deshabilitar las restricciones de clave externa antes de la carga. El hecho de deshabilitar las comprobaciones de clave externa favorece un aumento del rendimiento. Habilite las restricciones y compruebe los datos después de la carga para garantizar la integridad referencial.
  • Use tablas con particiones cuando sea necesario.
  • Cargue los datos en paralelo. 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.
  • Use la opción defer-table-indexes de mysqldump al volcar las bases de datos, para que la creación de índices tenga lugar una vez cargados los datos de las tablas.
  • 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.

Creación de una base de datos en la instancia de servidor flexible de Azure Database for MySQL de destino

Cree una base de datos vacía en la instancia de servidor flexible de Azure Database for MySQL de destino donde quiera migrar los datos. Use una herramienta como MySQL Workbench o mysql.exe para crear la base de datos. 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.

Para conectarse, busque la información de conexión en Información general de la instancia de servidor flexible de Azure Database for MySQL.

Find the connection information in the Azure portal

Agregue la información de conexión a MySQL Workbench.

MySQL Workbench Connection String

Preparación de la instancia de servidor flexible de Azure Database for MySQL de destino para cargas de datos rápidas

Para preparar la instancia de servidor flexible de Azure Database for MySQL de destino para cargas de datos más rápidas, es necesario cambiar los siguientes parámetros de servidor y configuración.

  • max_allowed_packet: establézcalo en 1073741824 (es decir, 1 GB) para evitar cualquier problema de desbordamiento debido a filas largas.
  • slow_query_log: establézcalo en OFF para desactivar el registro de consultas lentas. Esto elimina la sobrecarga causada por un registro de consultas lento durante las cargas de datos.
  • query_store_capture_mode: establézcalo en NONE para desactivar el Almacén de consultas. Esto elimina la sobrecarga causada por las actividades de muestreo en el Almacén de consultas.
  • 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 solo se puede aumentar mediante el escalado vertical de proceso para la instancia de servidor flexible de Azure Database for MySQL.
  • 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_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.
  • Escalado vertical del nivel de almacenamiento: las E/S por segundo del servidor flexible de Azure Database for MySQL aumentan progresivamente con el aumento del nivel de almacenamiento. Para agilizar las cargas, puede aumentar la capa de almacenamiento para aumentar la IOPs aprovisionada. Recuerde que el almacenamiento solo se puede escalar verticalmente, no reducir.

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.

Volcado y restauración mediante la utilidad mysqldump

Creación de un archivo de copia de seguridad a partir de la línea de comandos mediante 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:

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

Los parámetros que se proporcionan son los siguientes:

  • [uname] El nombre de usuario de base de datos
  • [pass] La contraseña de la base de datos (observe que no hay ningún espacio entre -p y la contraseña)
  • [dbname] El nombre de la base de datos
  • [backupfile.sql] El nombre de archivo para la copia de seguridad de la base de datos
  • [--opt] La opción mysqldump

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. 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. 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 --single-transaction.

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 testdb

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. Por ejemplo, para realizar una copia de seguridad solo de las tablas table1 y table2 de "testdb", siga este ejemplo:

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.

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

Una vez que haya creado la base de datos de destino, puede usar el comando mysql para restaurar los datos en la base de datos específica recién creada desde el archivo de volcado.

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 la instancia de servidor flexible de Azure Database for MySQL de destino.

Este es un ejemplo de cómo usar este elemento mysql para un servidor único:

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:

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

Volcado y restauración mediante PHPMyAdmin

Siga estos pasos para realizar un volcado y restaurar una base de datos mediante PHPMyadmin.

Nota

En el caso de un servidor único, el nombre de usuario debe tener este formato, "nombredeusuario@nombredeservidor" pero, en el de un servidor flexible, puede usar solo "nombredeusuario". Si usa "nombredeusuario@nombredeservidor" para un servidor flexible, se producirá un error en la conexión.

Exportación con PHPMyadmin

Para exportar, puede usar la herramienta común phpMyAdmin que puede haber instalado ya localmente en su entorno. Para exportar la Base de datos MySQL mediante PHPMyAdmin:

  1. Abra phpMyAdmin.
  2. Seleccione la base de datos. Seleccione el nombre de la base de datos en la lista de la izquierda.
  3. Seleccione el vínculo Exportar. Aparece una nueva página para ver el volcado de la base de datos.
  4. En el área de exportación, haga clic en el vínculo Seleccionar todo para seleccionar todas las tablas de la base de datos.
  5. En el área de opciones de SQL, haga clic en las opciones adecuadas.
  6. Seleccione la opción Guardar como archivo y la opción correspondiente de compresión y, a continuación, seleccione el botón Ir. Debería aparecer un cuadro de diálogo en el que se le pide que guarde el archivo localmente.

Importación mediante PHPMyAdmin

La importación de la base de datos es similar a la exportación. Haga lo siguiente:

  1. Abra phpMyAdmin.
  2. En la página phpMy Administración configuración, seleccione Agregar para agregar la instancia de servidor flexible de Azure Database for MySQL. Proporcione la información de conexión e inicio de sesión.
  3. Cree una base de datos con el nombre adecuado y selecciónela en la parte izquierda de la pantalla. Para volver a escribir la base de datos existente, seleccione el nombre de la base de datos, active todas las casillas situadas al lado de los nombres de tabla y seleccione Anular para eliminar las tablas existentes.
  4. Seleccione el vínculo SQL para mostrar la página donde puede escribir comandos SQL, o bien cargue su archivo SQL.
  5. Use el botón Browse (Examinar) para buscar el archivo de base de datos.
  6. Haga clic en el botón Ir para exportar la copia de seguridad, ejecutar los comandos de SQL y volver a crear la base de datos.

Problemas conocidos

Para obtener información sobre problemas conocidos, sugerencias y trucos, le recomendamos que consulte nuestro blog de techcommunity.

Pasos siguientes

  • Conectar aplicaciones al servidor flexible de Azure Database for MySQL.
  • Para más información sobre la migración de bases de datos al servidor flexible de Azure Database for MySQL, consulte la Guía de migración de bases de datos.
  • 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. Aprenda Cómo migrar bases de datos de MySQL grandes.