Crea y ejecuta un trabajo de migración de MySQL que contenga metadatos con una cláusula DEFINER

Descripción general

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

Para identificar qué valores de DEFINER existen en tus metadatos, puedes ejecutar las siguientes consultas en tu base de datos de origen de MySQL. Verifica los resultados en busca de entradas para root%localhost o para 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 un trabajo de migración desde una fuente que incluye esos metadatos, puedes realizar una de las siguientes acciones:

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

    1. Crea un trabajo de migración sin iniciarlo. Es decir, elige Crear en lugar de Crear y comenzar.

    2. Crea los usuarios de tu instancia de MySQL de origen en tu instancia de Cloud SQL de destino con la API o la IU de Cloud SQL.

    3. Inicia el trabajo de migración desde la lista de trabajos de migración o la página del trabajo específico.

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