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

Un job de migration MySQL ne migre pas les comptes utilisateur ni les identifiants. Les sources contenant des métadonnées définies par les utilisateurs avec la clause DEFINER échouent lorsqu'elles sont appelées sur la nouvelle instance répliquée 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 MySQL source. Vérifiez les résultats pour les entrées de 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 incluant de telles métadonnées, effectuez l'une des opérations suivantes :

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

    1. Pour créer un job de migration en tant que brouillon 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 console Google Cloud .

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

  2. Remplacez la clause DEFINER par INVOKER sur votre instance MySQL source avant de configurer votre job de migration.