יצירה והפעלה של משימת העברה של 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');

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

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

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

    2. יוצרים את המשתמשים ממופע MySQL של המקור במופע Cloud SQL של היעד באמצעות Cloud SQL API או ממשק המשתמש.

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

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