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

Übersicht

Bei einem MySQL-Migrationsjob werden keine Nutzerdaten migriert. Daher schlägt der Aufruf von Quellen, die von Nutzern mit der DEFINER-Klausel definierte Metadaten enthalten, beim Aufruf auf dem neuen Cloud SQL-Replikat fehl, da die Nutzer dort noch nicht vorhanden sind.

Um festzustellen, welche DEFINER-Werte in Ihren Metadaten vorhanden sind, können Sie die folgenden Abfragen in Ihrer MySQL-Quelldatenbank ausführen. 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 von einer Quelle auszuführen, die solche Metadaten enthält, haben Sie folgende Möglichkeiten:

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

    1. Erstellen Sie einen Migrationsjob, ohne ihn zu starten. Wählen Sie also Erstellen anstelle von Erstellen und starten aus.

    2. Erstellen Sie die Nutzer aus Ihrer Quell-MySQL-Instanz in Ihrer Cloud SQL-Zielinstanz mithilfe der Cloud SQL API oder -Benutzeroberfläche.

    3. Starten Sie den Migrationsjob über die Liste der Migrationsjobs oder die Seite des jeweiligen Jobs.

  • Aktualisieren Sie die DEFINER-Klausel auf INVOKER für die Quell-MySQL-Instanz, bevor Sie den Migrationsjob einrichten.