Migracion (MDS) MySQL (local) a Flexible Server

Sebastian Pacheco 411 Puntos de reputación
2026-01-05T19:14:16.5+00:00

Hola a todos... quiero ver como puedo migrar mi MySQL 5.7 que esta en un servidor local (ubuntu 18.04) hacia Azure Myslq Flexible Server. Estaba viendo y la herramieta DMS me serviria, pero revisando mi actual BD tiene unos TRIGGER y ROUTINES con DEFINER "root@192.168...."

Se supone que eso no funcionaria en Azure, ya que no existe ni root ni esa IP. Que proceso debo hacer para arreglar esos DEFINER antes de comenzar la migracion ?

Deberia hacer un dump de los objetos?

mysqldump -u root -p mi_bd \   
--routines \   
--triggers \   
--no-data \   
--no-create-info \   
> mibd_objects.sql

Luego debria borrar los definer del dump recien hecho?

sed -i 's/DEFINER=`[^`]*`@`[^`]*`//g' mi_bd_objects.sql

y luego volver a cargar ese "mi_bd_objects.sql" a mi BD??

mysql -u root -p mi_bd < mi_bd_objects.sql

Luego hacer comenza el proceso se crearan los DEFINER con el usuario de azure en mysql flexible server?

Si no es asi, como seria?

Gracias!

Azure Database Migration Service
Azure Database Migration Service
Un servicio de Azure diseñado para ayudar a simplificar, guiar y automatizar las migraciones de bases de datos a Azure.
0 comentarios No hay comentarios
{count} votos

2 respuestas

Ordenar por: Muy útil
  1. Suchitra Suregaunkar 8,070 Puntos de reputación Personal externo de Microsoft Moderador
    2026-01-22T05:00:42.0566667+00:00

    Hola Sebastián Pacheco

    Al migrar una ** base de datos **MySQL 5.7 local a Azure Database for MySQL – Flexible Server, los objetos que contienen valores codificados DEFINER en forma rígida (por ejemploroot@192.168.x.x) no son compatibles tal cual. Azure MySQL es un servicio gestionado que no proporciona ni un root usuario ni SUPER, y tales definidores causarán fallos en la importación de esquemas o errores en la creación de objetos en el servidor objetivo.

    El método correcto y compatible es corregir el DEFINER en el volcado del esquema y luego importarlo a Azure. No necesitas reimportar los objetos modificados a la base de datos de origen.

    Paso 1: Volcar objetos del esquema (rutinas, disparadores, eventos)

    
    mysqldump -u root -p mi_bd \
      --routines \
      --triggers \
      --events \
      --no-data \
      --single-transaction \
      --set-gtid-purged=OFF \
      --no-tablespaces \
      > mi_bd_schema.sql
    
    

    Referencia: https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-migrate-dump-restore

    Paso 2: Eliminar o reemplazar DEFINER en el archivo de volcado:

    Debes asegurarte de que no quede ningún DEFINER no soportado en el archivo de esquema. Dos opciones compatibles son:

    Opción A (recomendada): Reemplazar por CURRENT_USER

    
    sed -E 's/DEFINER=`[^`]+`@`[^`]+`/DEFINER=CURRENT_USER/g' \
    mi_bd_schema.sql > mi_bd_schema_fixed.sql
    
    
    

    Opción B: Eliminar por completo la cláusula DEFINER:

    sed -i 's/DEFINER=`[^`]*`@`[^`]*`//g' mi_bd_schema.sql
    

    Si DEFINER se omite, MySQL asigna automáticamente el definidor al usuario que ejecuta la importación. Este comportamiento es el predeterminado de MySQL y se utiliza para migraciones entre entornos.

    Paso 3: Importar el esquema en Azure MySQL Flexible Server

    
    mysql -h <server>.mysql.database.azure.com \
      -u <admin_user> -p \
      mi_bd < mi_bd_schema_fixed.sql
    

    El DEFINER se configurará como el usuario administrador de Azure MySQL (o el usuario que realice la importación).

    Resultado típico:

    DEFINER=`admin_user`@`%`
    
    

    Azure MySQL Flexible Server no soporta el privilegio SUPER. Al importar rutinas o disparadores, puede que reciba: ERROR 1419: No tienes el privilegio SUPER y el registro binario está activado

    Debes activar el siguiente parámetro del servidor en el Flexible Server:

    log_bin_trust_function_creators = ON
    

    Este parámetro se puede configurar a través de:

    • Azure Portal → Flexible Server → Server Parameters
    • Or Azure CLI

    Azure Database Migration Service (DMS):

    • Migra datos con éxito de MySQL local a Flexible Server
    • No resuelve automáticamente valores DEFINER inválidos
    • La documentación de Microsoft sigue esperando que los objetos de esquema sean compatibles con las reglas de la plataforma objetivo, incluidas las limitaciones de usuario/privilegio.

    Referencia: https://learn.microsoft.com/en-us/azure/dms/tutorial-mysql-azure-external-to-flex-online-portal

    Por lo tanto, es necesario fijar cláusulas DEFINER independientemente de si se usa DMS.

    Por favor, háganos saber si la solución proporcionada le ha funcionado.

    Si necesitas más ayuda, no dudes en contactarme.

    Gracias,

    Suchitra.

    0 comentarios No hay comentarios

  2. Sebastian Pacheco 411 Puntos de reputación
    2026-01-06T23:46:31.0633333+00:00

    alguien sabe sobre esto??

    0 comentarios No hay comentarios

Su respuesta

Las respuestas pueden ser marcadas como "Aceptadas" por el autor de la pregunta y "Recomendadas" por los moderadores, lo que ayuda a los usuarios a saber que la respuesta ha resuelto el problema del autor.