יצירה והפעלה של משימת העברה של MySQL שמכילה מטא-נתונים עם פסקה של DEFINER

משימת העברה של MySQL לא מעבירה חשבונות משתמשים ופרטי התחברות. מקורות שמכילים מטא-נתונים שהוגדרו על ידי משתמשים עם הסעיף DEFINER נכשלים כשמפעילים אותם ברפליקה החדשה של Cloud SQL, כי המשתמשים עדיין לא קיימים שם.

כדי לזהות אילו ערכי DEFINER קיימים במטא-נתונים, שולחים שאילתה למסד הנתונים של מקור MySQL. בודקים את התוצאות של הרשומות של root%localhost או של משתמשים שלא קיימים במופע היעד:

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

כדי להריץ משימת העברה ממקור שכולל מטא-נתונים כאלה, צריך לבצע אחת מהפעולות הבאות:

  1. לפני שמתחילים את משימת ההעברה, צריך ליצור את המשתמשים במכונת הרפליקה של Cloud SQL ביעד.

    1. כדי ליצור טיוטה של משימת העברה בלי להתחיל אותה, בוחרים באפשרות Create במקום Create & Start.

    2. במכונה של Cloud SQL ביעד, יוצרים מחדש את המשתמשים ממכונת המקור של MySQL באמצעות Cloud SQL API או מסוף Google Cloud .

    3. מפעילים את משימת ההעברה מהרשימה של משימות ההעברה או מהדף של המשימה הספציפית.

  2. לפני שמגדירים את משימת ההעברה, מעדכנים את הסעיף DEFINER ל-INVOKER במכונה של מקור MySQL.