Créer et exécuter une tâche de migration MySQL contenant des métadonnées avec une clause DEFINER

Présentation

Un job de migration MySQL ne migre pas les données utilisateur. Par conséquent, les sources contenant des métadonnées définies par l'utilisateur avec la clause DEFINER échouent lorsqu'elles sont appelées sur la nouvelle réplique Cloud SQL, car les utilisateurs n'y existent pas encore.

Pour identifier les valeurs DEFINER présentes dans vos métadonnées, interrogez votre base de données source MySQL. Vérifiez les résultats pour les entrées root%localhost ou pour les utilisateurs qui n'existent pas dans l'instance de destination :

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');

Pour exécuter un job de migration à partir d'une source qui inclut ces métadonnées, effectuez l'une des opérations suivantes :

  • Créez les utilisateurs sur l'instance de réplique Cloud SQL de destination avant de démarrer votre job de migration.

    1. Pour créer un brouillon de job de migration sans le démarrer, sélectionnez Créer au lieu de Créer et démarrer.

    2. Sur votre instance Cloud SQL de destination, recréez les utilisateurs de votre instance MySQL source à l'aide de l'API Cloud SQL ou de la Google Cloud console.

    3. Dans la liste des jobs de migration ou sur la page du job spécifique, démarrez le job de migration.

  • Mettez à jour la clause DEFINER sur INVOKER sur votre instance MySQL source avant de configurer votre job de migration.