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 le nouveau réplica Cloud SQL, car les utilisateurs n'existent pas encore dans l'instance cible.

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 de réplication Cloud SQL de destination avant de démarrer votre tâche de migration.

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

    2. Créez les utilisateurs à partir 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 à partir de la liste des tâches de migration ou de la page de la tâche spécifique.

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