תהליכים מאוחסנים ב-Cloud SQL

בקטע הזה מתוארות פרוצדורות מאוחסנות במכונות Cloud SQL.

פרוצדורה מאוחסנת מכילה קוד SQL שאפשר להשתמש בו שוב.

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

  • ‫procedure_name הוא השם של התהליך המאוחסן.
CALL procedure_name(parameters);
למידע נוסף, קראו את דף העזרה של ההצהרה CALL.

כדי ליצור פרוצדורה מאוחסנת, ראו הצהרות CREATE PROCEDURE ו-CREATE FUNCTION. ב-Cloud SQL אין תמיכה בהצהרה CREATE FUNCTION. מידע נוסף מופיע במאמר תכונות MySQL שלא נתמכות ב-Cloud SQL.

תהליכים מאוחסנים של אינדקסים מנוהלים של רפליקות

אתם יכולים להשתמש בפרוצדורות המאוחסנות הבאות כדי ליצור, לנהל ולמחוק אינדקסים של רפליקות מנוהלות. כשיוצרים מחדש את הרפליקות, האינדקסים האלה משוחזרים באופן אוטומטי.

כל קריאה לפרוצדורה מאוחסנת מריצה הצהרת COMMIT שמסיימת את השינויים בסשן הנוכחי. כתוצאה מכך, אי אפשר לבטל פקודות של שפת טיפול בנתונים (DML) שבוצעו באמצעות הפרוצדורות המאוחסנות האלה בתוך טרנזקציה.

מידע נוסף זמין במאמר אינדקסים של רפליקות מנוהלות.

mysql.cloudsql_replica_idx_defn_create

תחביר

mysql.cloudsql_replica_idx_defn_create(IDXNAME, CREATESTMT)

תיאור

יוצרת הגדרה לאינדקס משני. מריצים את הפרוצדורה המאוחסנת הזו במכונה הראשית, שמשכפלת את הגדרת האינדקס לרפליקות.

הפרוצדורה המאוחסנת מחזירה את IDXID, מזהה ייחודי של מספר שלם של הגדרת האינדקס המשני.

  • ‫IDXNAME – שם להגדרת האינדקס.
  • ‫CREATESTMT – הצהרת SQL ליצירת האינדקס. הערך חייב להיות הצהרת DDL עם תחילית של סכימה (לדוגמה, schema_name.table_name).

mysql.cloudsql_replica_idx_defn_drop

תחביר

mysql.cloudsql_replica_idx_defn_drop(IDXID)

תיאור

מחיקה של הגדרת אינדקס משני. מריצים את התהליך המאוחסן הזה במכונה הראשית.

  • ‫IDXID – המזהה הייחודי של הגדרת האינדקס שנמחק, כמספר שלם.

mysql.cloudsql_replica_idx_group_add

תחביר

mysql.cloudsql_replica_idx_group_add(IDXID, GRPNAME)

תיאור

הוספת הגדרה של אינדקס משני לקבוצת רפליקות. מריצים את התהליך המאוחסן הזה במכונה הראשית.

  • ‫IDXID – מזהה ייחודי של הגדרת האינדקס כמספר שלם.
  • ‫GRPNAME – השם של קבוצת הרפליקות. ‫GRPNAME הוא שם בהתאמה אישית שאתם בוחרים. אם קבוצת הרפליקות הזו לא קיימת, Cloud SQL יוצר קבוצה חדשה.

mysql.cloudsql_replica_idx_group_drop

תחביר

mysql.cloudsql_replica_idx_group_drop(IDXID, GRPNAME)

תיאור

הסרת אינדקס משני ממיפוי של קבוצת רפליקות. מריצים את התהליך המאוחסן הזה במכונה הראשית.

  • ‫IDXID – מזהה ייחודי של הגדרת האינדקס כמספר שלם.
  • ‫GRPNAME – השם של קבוצת הרפליקות.

mysql.cloudsql_replica_idx_show_status

תחביר

mysql.cloudsql_replica_idx_show_status()

תיאור

הצגת הסטטוס וההתקדמות של פעולות מתמשכות ליצירה או להסרה של אינדקסים במכונה של רפליקה.

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

  1. מפעילים את כלי הנגינה על הבמה:

    UPDATE performance_schema.setup_instruments
    SET ENABLED = 'YES'
    WHERE NAME LIKE 'stage/innodb/alter%';
  2. מפעילים את צרכני האירועים של השלב:

    UPDATE performance_schema.setup_consumers
    SET ENABLED = 'YES'
    WHERE NAME LIKE 'events_stages_%';

מידע נוסף זמין במאמר דוגמה למעקב אחרי ALTER TABLE באמצעות סכימת ביצועים.

mysql.cloudsql_replica_idx_show_errors

תחביר

mysql.cloudsql_replica_idx_show_errors()

תיאור

רשימה של ניסיונות ליצירה מחדש של אינדקסים שנכשלו בהפעלה האחרונה שלהם, עם הודעות שגיאה ומספר ניסיונות חוזרים במכונה של רפליקה. אם אינדקס אחד נכשל, זה לא מונע את ההפעלה של האינדקסים הבאים בתור.

mysql.cloudsql_replica_idx_show_all

תחביר

mysql.cloudsql_replica_idx_show_all()

תיאור

מציגה את הסטטוס, מספר ניסיונות החזרה, משך הביצוע והודעות השגיאה של כל הרשומות ליצירה מחדש של אינדקס משני של רפליקה בטבלת הסטטוס של המטא-נתונים. מריצים את התהליך המאוחסן הזה במופע של רפליקה.

אינדקסים של רפליקות בניהול עצמי של תהליכים מאוחסנים

הפרוצדורות המאוחסנות הבאות מאפשרות להוסיף ולהסיר אינדקסים משניים ישירות ברפליקה, אבל האינדקסים האלה לא נשמרים אם הרפליקה נוצרת מחדש.

mysql.addSecondaryIdxOnReplica

תחביר

mysql.addSecondaryIdxOnReplica(IDXTYPE, IDXNAME, TABLENAME, IDXDEFINITION, IDXOPTION)

תיאור

הוספת אינדקס משני למסד הנתונים. התהליך המאוחסן הזה הוא wrapper להצהרת ה-DDL‏ CREATE INDEX.

  • ‫IDXTYPE – סוג האינדקס שרוצים ליצור. לדוגמה, מעבירים את UNIQUE כדי ליצור אינדקס ייחודי.
  • ‫IDXNAME – שם האינדקס.
  • ‫TABLENAME – שם הטבלה בפורמט schema_name.table_name.
  • ‫IDXDEFINITION – הגדרת האינדקס. אל תכללו סוגריים חיצוניים.
  • ‫IDXOPTION – אפשרויות נוספות להעברה ביצירת אינדקס. לדוגמה, ב-MySQL 8.0, אפשרות יכולה להעביר את הערך INVISIBLE לאינדקס בלתי נראה.

mysql.dropSecondaryIdxOnReplica

תחביר

mysql.dropSecondaryIdxOnReplica(IDXNAME, TABLENAME, IDXOPTION)

תיאור

הסרת אינדקס משני במסד הנתונים. התהליך המאוחסן הזה הוא wrapper להצהרת ה-DDL‏ DROP INDEX.

  • ‫IDXNAME – שם האינדקס.
  • ‫TABLENAME – שם הטבלה בפורמט schema_name.table_name.
  • ‫IDXOPTION – אפשרויות נוספות להעברה כשמבטלים אינדקס. לדוגמה, אפשרות לאלגוריתם כמו INPLACE.

תהליכים מאוחסנים של רפליקציה בשרת חיצוני

אתם יכולים להשתמש בפרוצדורה המאוחסנת הבאה במהלך שכפול של שרת חיצוני.

mysql.skipReplicationError

תחביר

mysql.skipReplicationError()

תיאור

דילוג על שגיאת רפליקציה שקרתה במהלך רפליקציה של שרת חיצוני, ואז המשך הרפליקציה.

אפשר להריץ את הפרוצדורה המאוחסנת הזו רק אם נתקלתם בשגיאת שכפול והשרשורים של הקלט/פלט ו-SQL נעצרו.

התהליך המאוחסן הזה מבצע את הפעולות הבאות:

  1. קובעת אם נעשה שימוש ברפליקציה שמבוססת על GTID או על מיקום ביומן הבינארי.

  2. אם משתמשים ברפליקציה מקבילה, הפרוצדורה המאוחסנת קוראת קודם ל-START_SLAVE_UNTIL_SQL_AFTER_MTS_GAPS או ל-START_REPLICA UNTIL_SQL_AFTER_MTS_GAPS כדי לוודא שאין פערים בטרנזקציות שהוחלו עד לטרנזקציה שנכשלה. לאחר מכן, התהליך מגדיר באופן זמני את הגדרת הרפליקציה ל-single-threaded.

  3. ברפליקציה שמבוססת על מיקום ביומן הבינארי, הפרוצדורה מגדירה את SQL_SLAVE_SKIP_COUNTER או את SQL_REPLICA_SKIP_COUNTER = 1 כך שהעסקה הנוכחית תדולג.

  4. ברפליקציה שמבוססת על GTID, הפרוצדורה המאוחסנת קובעת את ה-GTID של הטרנזקציה הנוכחית שנכשלה על סמך המידע במשתנה הסטטוס gtid_executed. לאחר מכן, הפרוצדורה מוסיפה טרנזקציה ריקה כדי למלא את ה-GTID הזה.

  5. אם הרפליקציה המקבילה הושבתה בעבר, הפרוצדורה המאוחסנת מפעילה מחדש את הרפליקציה המקבילה.

  6. התהליך המאוחסן ממשיך את הרפליקציה.

בטבלה mysql.skip_replication_error_history מתועדות כל ההפעלות של הפרוצדורה המאוחסנת הזו.

המאמרים הבאים