Migración de la base de datos MySQL a Azure Database for MySQL: servidor flexible mediante volcado y restauración
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.
- Volcado y restauración desde la línea de comandos (mediante mysqldump).
- Volcado y restauración mediante 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 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:
- Una instancia de servidor flexible de Azure Database for MySQL: Azure Portal
- Utilidad de línea de comandos mysqldump instalada en la máquina.
- MySQL Workbench u otra herramienta de MySQL de terceros para ejecutar los comandos de volcado y restauración.
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 admiten 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.
Mover el almacenamiento de copia de seguridad de un almacenamiento con redundancia local a un almacenamiento con redundancia geográfica: el servidor flexible de Azure Database for MySQL permite la configuración de un almacenamiento con redundancia local o con redundancia geográfica para copia de seguridad solo se puede realizar 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 comando
mysql_upgrade
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 opcionessingle-transaction
ylock-tables
son mutuamente excluyentes porque LOCK TABLES hace que las transacciones pendientes se confirmen implícitamente. Para volcar las tablas grandes, combine la opciónsingle-transaction
con la opciónquick
. - 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 la Información general de la instancia de servidor flexible de Azure Database for MySQL.
Agregue la información de conexión a MySQL Workbench.
Preparación de la instancia de Azure Database for MySQL: servidor flexible 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 IOPS para el servidor flexible Azure Database for MySQL aumentan progresivamente con el incremento 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
Nota
También puede usar la utilidad de cliente MySQL Workbench para restaurar la base de datos MySQL.
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 habitual phpMyAdmin, que es posible que ya tenga instalada localmente en su entorno. Para exportar la Base de datos MySQL mediante PHPMyAdmin:
- Abra phpMyAdmin.
- Seleccione la base de datos. Seleccione el nombre de la base de datos en la lista de la izquierda.
- Seleccione el vínculo Exportar. Aparece una nueva página para ver el volcado de la base de datos.
- En el área de exportación, haga clic en el vínculo Seleccionar todo para seleccionar todas las tablas de la base de datos.
- En el área de opciones de SQL, haga clic en las opciones adecuadas.
- 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:
- Abra phpMyAdmin.
- En la página de instalación phpMyAdmin, 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.
- 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.
- Seleccione el vínculo SQL para mostrar la página donde puede escribir comandos SQL, o bien cargue su archivo SQL.
- Use el botón Browse (Examinar) para buscar el archivo de base de datos.
- 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.