MySQL-Migrationsjob mit Metadaten mit DEFINER-Klausel erstellen und ausführen

Übersicht

Bei einem MySQL-Migrationsjob werden keine Nutzerdaten migriert. Daher schlagen Quellen, die nutzerdefinierte Metadaten mit der DEFINER-Klausel enthalten, fehl, wenn sie in der neuen Cloud SQL-Replikatinstanz aufgerufen werden, da die Nutzer dort noch nicht vorhanden sind.

Um festzustellen, welche DEFINER-Werte in Ihren Metadaten vorhanden sind, fragen Sie Ihre MySQL-Quelldatenbank ab. Prüfen Sie die Ergebnisse auf Einträge für root%localhost oder für Nutzer, die in der Zielinstanz nicht vorhanden sind:

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

Um einen Migrationsjob aus einer Quelle auszuführen, die solche Metadaten enthält, haben Sie folgende Möglichkeiten:

  • Erstellen Sie die Nutzer in der Cloud SQL-Zielreplikatinstanz, bevor Sie den Migrationsjob starten.

    1. Wenn Sie einen Migrationsjobentwurf erstellen möchten, ohne ihn zu starten, wählen Sie Erstellen anstelle von Erstellen und starten aus.

    2. Erstellen Sie die Nutzer aus Ihrer MySQL-Quellinstanz in Ihrer Cloud SQL-Zielinstanz neu. Verwenden Sie dazu die Cloud SQL API oder die Google Cloud Console.

    3. Starten Sie den Migrationsjob in der Liste der Migrationsjobs oder auf der Seite für den jeweiligen Job.

  • Aktualisieren Sie die DEFINER-Klausel in Ihrer MySQL-Quellinstanz auf INVOKER, bevor Sie den Migrationsjob einrichten.