Share via


Problemas conocidos de migraciones a Azure Database for MySQL

Los problemas conocidos asociados con las migraciones a Azure Database for MySQL se describen en las secciones siguientes.

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 se habilita la característica para generar claves principales invisibles para las tablas de InnoDB (vea MySQL :: Manual de referencia de MySQL 8.0 :: 13.1.20.11 Claves principales invisibles generadas). El error puede producirse al migrar el esquema de tabla desde el 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 donde el esquema se ha migrado manualmente.

    Mensaje de error potencial:

    • "Error desconocido".
    • "No se pudo generar una 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 'database' no existe en la tabla de origen".

    Limitación: la migración a la instancia del servidor flexible de MySQL en la que dmS no admite 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 DESACTIVADO. El parámetro de servidor se puede encontrar en la hoja Parámetros del servidor en la pestaña Todos del servidor flexible mySQL de destino. Además, quite la base de datos de destino e inicie la migración de DMS para que no tenga 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 SQL siguientes se establece en un servidor, pero no en el otro.

    Solución alternativa:

    NO_ZERO_DATE NO_AUTO_CREATE_USER
    Cuando el valor predeterminado de una fecha en una tabla o los datos son 0000-00-00 en el origen y el servidor de destino tiene establecido el modo SQL de NO_ZERO_DATE, se producirá un error en la migración de esquemas o datos. Hay dos posibles 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 consiste en quitar el modo NO_ZERO_DATE SQL de la variable de modo SQL global. 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 no_auto_create_user modo SQL está establecido en el servidor de origen de 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 especificaron 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 pueden evitar por completo estableciendo binlog_expire_logs_auto_purge desactivado. MySQL 5.7 ha dejado de usar la variable del sistema expire_logs_days.

Tiempo de espera de obtención de bloqueos de tabla

  • Error: se produjo una excepción al intentar adquirir un bloqueo de lectura en el servidor '{server}' para crear vistas coherentes.

    Limitación: este error se produce cuando hay un tiempo de espera mientras se obtienen bloqueos en todas las tablas cuando se habilita 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 mediante la creación de una solicitud de soporte técnico y podemos proporcionar scripts personalizados para acceder directamente a nuestras API 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.

    Mensaje de error potencial: no se pudo escribir un lote en la tabla '{table}' debido a un error SQL generado por el servidor de destino. En 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 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 el usuario que tiene cargas de trabajo de prueba que se ejecutan en el destino mientras se ejecuta la migración. Además, el destino puede requerir que las claves principales sean únicas, aunque no sean necesarias para ser así en el origen.

    Solución alternativa: para resolver este problema, asegúrese de que no se ejecutan migraciones duplicadas y de que las claves principales de origen son únicas. Si el error persiste, póngase en contacto con el soporte técnico mediante la creación de una solicitud de soporte técnico y podemos proporcionar scripts personalizados para acceder directamente a nuestras API 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.

    Mensaje de error potencial: 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 insert y delete 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 de enumeración tiene un valor NULL en una o varias filas y el modo SQL de destino está establecido en estricto.

    Mensaje de error potencial: 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 tabla MySQL. Si el tipo de columna es una enumeración, asegúrese de que el modo SQL no esté establecido como TRADICIONAL, STRICT_TRANS_TABLES o STRICT_ALL_TABLES y sea el mismo en el origen y el destino.

    Limitación: el error se produce cuando los datos históricos se escribieron en el servidor de origen cuando tenían cierta configuración, pero cuando se cambia, 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 un objeto

  • Error: se produjo un error después de que se produjo 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 las vistas manualmente.

No se puede encontrar la tabla

  • Error: No se encuentra ningún error al hacer referencia a la tabla.

    Mensaje de error potencial: 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 puede producirse cuando la vista hace referencia a una tabla que se ha eliminado o cambiado el nombre, o cuando la vista se creó con información incorrecta o incompleta. Este error puede producirse si se migra un subconjunto de tablas, pero las tablas de las que dependen no.

    Solución alternativa: se recomienda migrar las vistas manualmente. Compruebe si todas las tablas a las que se hace referencia en 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 adquiridas al inicio 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 abstenerse de realizar cambios de DDL durante la carga inicial.

Restricción de clave externa

  • Error: el error se produce cuando hay un cambio en el tipo de clave externa al que se hace referencia desde la tabla.

    Mensaje de error potencial: hacer referencia a la columna '{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.

Pasos siguientes