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

Présentation

Une tâche de migration MySQL ne migre pas les données utilisateur. Par conséquent, les sources contenant des métadonnées définies par les utilisateurs avec la clause DEFINER échoueront lorsqu'elles seront 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, vous pouvez exécuter les requêtes suivantes sur 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 une tâche de migration à partir d'une source qui inclut ces métadonnées, vous pouvez effectuer l'une des opérations suivantes :

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

    1. Créez un job de migration sans le démarrer. Autrement dit, choisissez Créer au lieu de Créer et démarrer.

    2. Créez les utilisateurs de votre instance MySQL source sur votre instance Cloud SQL de destination à l'aide de l'API ou de l'UI Cloud SQL.

    3. Démarrez la tâche de migration depuis la liste des tâches de migration ou la page de la tâche spécifique.

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