Crear y ejecutar una tarea de migración de MySQL que contenga metadatos con una cláusula DEFINER

Información general

Un trabajo de migración de MySQL no migra datos de usuario. Por lo tanto, las fuentes que contengan metadatos definidos por usuarios con la cláusula DEFINER fallarán cuando se invoquen en la nueva réplica de Cloud SQL, ya que los usuarios aún no existen en ella.

Para identificar qué valores de DEFINER hay en sus metadatos, puede ejecutar las siguientes consultas en su base de datos de origen MySQL. Comprueba los resultados de las entradas de root%localhost o de los usuarios que no existen en la instancia de destino:

SELECT DISTINCT DEFINER FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA NOT 
IN ('mysql', 'sys');
SELECT DISTINCT DEFINER FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA NOT 
IN ('mysql', 'sys');
SELECT DISTINCT DEFINER FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_SCHEMA NOT 
IN ('mysql', 'sys');
SELECT DISTINCT DEFINER FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA NOT 
IN ('mysql', 'sys');

Para ejecutar una tarea de migración desde una fuente que incluya estos metadatos, puedes hacer una de las siguientes acciones:

  • Crea los usuarios en la instancia de réplica de Cloud SQL de destino antes de iniciar la tarea de migración.

    1. Crea una tarea de migración sin iniciarla. Es decir, elige Crear en lugar de Crear y empezar.

    2. Crea los usuarios de tu instancia de MySQL de origen en tu instancia de Cloud SQL de destino mediante la API o la interfaz de usuario de Cloud SQL.

    3. Inicia la tarea de migración desde la lista de tareas de migración o desde la página de la tarea específica.

  • Actualiza la cláusula DEFINER a INVOKER en tu instancia de MySQL de origen antes de configurar tu tarea de migración.