Problemas conocidos con la migración a Azure Database for MySQL
Los problemas conocidos asociados a las migraciones a Azure Database for MySQL se describen en las siguientes secciones.
Problema de migración de esquemas para el destino del servidor flexible de MySQL v8.0
Error: se puede producir un error en una migración a un servidor flexible de mySQL con la versión 8.0.30 o posterior del motor cuando la característica para generar claves principales invisibles para las tablas InnoDB está habilitada (consulte MySQL :: Manual de referencia de MySQL 8.0 :: 13.1.20.11 Claves principales invisibles generadas). El error se puede producir al migrar el esquema de tabla del origen al destino, al aplicar cambios durante la fase de replicación de migraciones en línea, al reintentar una migración o al migrar a un destino en el que el esquema se ha migrado manualmente.
Mensaje de error potencial:
- "Error desconocido."
- "No se pudo generar la clave principal invisible. Ya existe una columna de incremento automático".
- "La columna 'my_row_id' de la tabla de destino 'nombre de tabla' en la base de datos 'base de datos' no existe en la tabla de origen".
Limitación: DMS no admite la migración a la instancia del servidor flexible de MySQL donde se ha habilitado sql_generate_invisible_primary_key.
Solución alternativa: establezca el parámetro de servidor sql_generate_invisible_primary_key para el servidor flexible de MySQL de destino en OFF. El parámetro de servidor se puede encontrar en el panel Parámetros del servidor en la pestaña Todos del servidor flexible de MySQL de destino. Además, quita la base de datos de destino e inicia la migración de DMS para no tener esquemas no coincidentes.
Modo SQL incompatible
Uno o varios modos SQL incompatibles pueden provocar muchos errores diferentes. A continuación se muestra un error de ejemplo junto con los modos de servidor que se deben examinar si se produce este error.
Error: error al preparar la tabla '{table}' en la base de datos '{database}' en el servidor '{server}' para la migración durante la actividad '{activity}'. Como resultado, esta tabla no se migrará.
Limitación: este error se produce cuando uno de los modos de SQL siguientes está establecido en un servidor, pero no en el otro.
Solución alternativa:
NO_ZERO_DATE
Cuando el valor predeterminado de una fecha en una tabla o los datos es 0000-00-00 en el origen y el servidor de destino tiene establecido el modo SQL NO_ZERO_DATE, se producirá un error en la migración de esquemas o datos. Existen dos soluciones alternativas. La primera consiste en cambiar los valores predeterminados de las columnas para que sean NULL o una fecha válida. La segunda opción es quitar el modo SQL NO_ZERO_DATE de la variable de modo SQL global.
NO_AUTO_CREATE_USER
Al ejecutar migraciones desde el servidor de origen de MySQL 5.7 al servidor de destino de MySQL 8.0 que realiza la migración de esquemas de rutinas, se producirán errores si el modo SQL no_auto_create_user está establecido en el servidor de origen MySQL 5.7.
Problemas de retención de Binlog
Error: error irrecuperable al leer binlog. Este error puede indicar que el nombre del archivo binlog o la posición inicial se han especificado incorrectamente.
Limitación: este error se produce si el período de retención de binlog es demasiado corto.
Solución alternativa: hay varias variables que se pueden configurar en este caso: binlog_expire_logs_seconds determina el período de retención y la eliminación de binlog se puede evitar por completo desactivando binlog_expire_logs_auto_purge. MySQL 5.7 ha dejado en desuso la variable del sistema expire_logs_days.
Tiempo de espera para obtener bloqueos de tabla
Error: se ha producido una excepción al intentar adquirir un bloqueo de lectura en el servidor "{server}" para la creación de una vista coherente.
Limitación: este error se produce cuando hay un tiempo de espera mientras se obtienen bloqueos en todas las tablas cuando se ha habilitado la coherencia transaccional.
Solución alternativa: asegúrese de que las tablas seleccionadas no estén bloqueadas o de que no se ejecuten transacciones de larga duración en ellas.
Escritura de más de 4 MB de datos en Azure Storage
Error: el cuerpo de la solicitud es demasiado grande y supera el límite máximo permitido.
Limitación: es probable que este error se produzca cuando hay demasiadas tablas para migrar (>10 000). Hay un límite de 4 MB para cada llamada al servicio Azure Storage.
Solución alternativa: póngase en contacto con el soporte técnico creando una solicitud de soporte técnico y podemos proporcionar scripts personalizados para acceder directamente a nuestras API de REST.
Problema de entrada de clave duplicada
Error: el error suele ser un síntoma de tiempos de espera, problemas de red o escalado de destino.
Posible mensaje de error: no se pudo escribir un lote en la tabla '{table}' debido a un error SQL generado por el servidor de destino. Para el contexto, el lote contenía un subconjunto de filas devueltas por la siguiente consulta de origen.
Limitación: este error puede deberse a un tiempo de espera o a una conexión interrumpida al destino, lo que da lugar a claves principales duplicadas. También puede estar relacionado con varias migraciones al destino que se ejecuta al mismo tiempo, o a que el usuario tenga cargas de trabajo de prueba que se ejecutan en el destino mientras se ejecuta la migración. Además, es posible que en el destino sea necesario que las claves principales sean únicas, aunque no lo sean en el origen.
Solución alternativa: para resolver este problema, asegúrese de que no hay migraciones duplicadas en ejecución y de que las claves principales de origen son únicas. Si el error persiste, póngase en contacto con el soporte técnico creando una solicitud de soporte técnico y podemos proporcionar scripts personalizados para acceder directamente a nuestras API de REST.
Error de filas no coincidentes en la operación replicada
Error: la migración en línea no puede replicar el número esperado de cambios.
Posible mensaje de error: error al aplicar registros al servidor de destino que se leyeron del registro binario del servidor de origen. Los cambios se iniciaron en el registro binario '{mysql-bin.log}' y la posición '{position}' y finalizaron en el registro binario '{mysql-bin.log}' y la posición '{position}'. Todos los registros del servidor de origen antes de colocar '{position}' en el registro binario '{mysql-bin.log}' se han confirmado en el destino.
Limitación: en el origen, había instrucciones de insertar y eliminar en una tabla y las eliminaciones eran por un índice único aparente.
Solución alternativa: se recomienda migrar la tabla manualmente.
Error truncado de datos de tabla
Error: la columna Enumeración tiene un valor NULL en una o varias filas y el modo SQL de destino está establecido en estricto.
Posible mensaje de error: no se pudo escribir un lote en la tabla '{table}' debido a un error de truncamiento de datos. Asegúrese de que los datos no son demasiado grandes para el tipo de datos de la columna de la tabla MySQL. Si el tipo de columna es una enumeración, asegúrese de que el modo SQL no esté establecido como TRADITIONAL, STRICT_TRANS_TABLES o STRICT_ALL_TABLES, y que sea el mismo en el origen y el destino.
Limitación: el error se produce cuando se han escrito datos históricos en el servidor de origen cuando tenían cierta configuración, pero cuando se cambian, los datos no se pueden mover.
Solución alternativa: para resolver el problema, se recomienda cambiar el modo SQL de destino a no estricto o cambiar todos los valores NULL para que sean valores válidos.
Error al crear el objeto
Error: se produjo un error después de que se produjera un error en la validación de la vista.
Limitación: el error se produce al intentar migrar una vista y no se encuentra la tabla a la que se supone que la vista hace referencia.
Solución alternativa: se recomienda migrar la tas vistas manualmente.
No se puede encontrar la tabla
Error: error debido a que no se encuentra la tabla a la que se hace referencia.
Posible mensaje de error: la canalización no pudo crear el esquema del objeto '{object}' para la actividad '{activity}' mediante la estrategia MySqlSchemaMigrationViewUsingTableStrategy debido a una ejecución de consulta.
Limitación: el error se puede producir cuando la vista hace referencia a una tabla que se ha eliminado o cambiado de nombre, o bien cuando la vista se ha creado con información incorrecta o incompleta. Este error se puede producir si se migra un subconjunto de tablas, pero las tablas de las que dependen no.
Solución alternativa: se recomienda migrar la tas vistas manualmente. Comprueba si todas las tablas a las que se hace referencia en las claves externas y las instrucciones CREATE VIEW están seleccionadas para la migración.
Todas las conexiones agrupadas interrumpidas
Error: se interrumpieron todas las conexiones del servidor de origen.
Limitación: el error se produce cuando se pierden todas las conexiones que se adquieren al principio de la carga inicial debido al reinicio del servidor, problemas de red, tráfico pesado en el servidor de origen u otros problemas transitorios. Este error no se puede recuperar. Además, este error se produce si se realiza un intento de migrar un servidor durante la ventana de mantenimiento.
Solución alternativa: se debe reiniciar la migración y se recomienda aumentar el rendimiento del servidor de origen. Otro problema es que los scripts que eliminan las conexiones de larga duración impiden que estos scripts funcionen.
Instantánea coherente rota
Limitación: el error se produce cuando el cliente realiza DDL durante la carga inicial de la instancia de migración.
Solución alternativa: para resolver este problema, se recomienda evitar realizar cambios de DDL durante la carga inicial.
Restricción de clave externa
Error: el error se produce cuando se produce un cambio en el tipo de clave externa al que se hace referencia desde la tabla.
Posible mensaje de error: la columna de referencia '{pk column 1}' y la columna a la que se hace referencia '{fk column 1}' en la restricción de clave externa '{key}' no son compatibles.
Limitación: el error puede provocar un error en la migración de esquemas de una tabla, ya que es posible que la columna PK de la tabla 1 no sea compatible con la columna FK de la tabla 2.
Solución alternativa: para resolver este problema, se recomienda quitar la clave externa y volver a crearla una vez completado el proceso de migración.