פתרון בעיות

כדאי לבדוק אם השאלה או הבעיה שלך כבר קיבלו מענה באחד מהדפים הבאים:

הנושאים בדף הזה:

גיבוי ושחזור

שגיאה פתרון בעיות
אי אפשר לראות את הסטטוס של הפעולה הנוכחית. הדוח במסוף Cloud de Confiance מציג רק אם הפעולה הושלמה בהצלחה או נכשלה. הוא לא מיועד להצגת אזהרות או עדכונים אחרים.

מריצים את הפקודה gcloud sql operations list כדי להציג רשימה של כל הפעולות עבור המכונה הנתונה של Cloud SQL.

אתם רוצים לדעת מי ביצע פעולת גיבוי לפי דרישה. בממשק המשתמש לא מוצג המשתמש שהתחיל פעולה.

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

  • cloudsql.googlapis.com/mysql-general.log
  • cloudsql.googleapis.com/mysql.err
  • אם Cloud Audit Logs מופעלות ויש לכם את ההרשאות הנדרשות לצפייה בהן, יכול להיות שגם cloudaudit.googleapis.com/activity יהיה זמין.
אחרי שמחקתם מופע, אי אפשר לגבות אותו.

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

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

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

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

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

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

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

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

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

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

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

ביטול הייבוא והייצוא

שגיאה פתרון בעיות
הודעת שגיאה: You can't cancel operation [operation-ID] because this operation isn't in progress.

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

הודעת שגיאה: You can't cancel operation [operation-ID] because Cloud SQL doesn't support the cancellation of an [operation-type] operation.

‫Cloud SQL לא תומך בביטול הפעולה כי סוג הפעולה שלה שונה מ-IMPORT או מ-EXPORT.

הודעת שגיאה: The [operation-type] operation isn't cancelled. Wait and retry in a few seconds.

בשלב הזה, אי אפשר לבטל את פעולת הייבוא או הייצוא ב-Cloud SQL. אפשר לנסות שוב בעוד כמה שניות. אם הבעיה נמשכת, אפשר לפנות אל Cloud de Confiance by S3NS התמיכה.

שכפל

שגיאה פתרון בעיות
השיבוט נכשל עם השגיאה constraints/sql.restrictAuthorizedNetworks. הפעולה של שיבוט נחסמת על ידי ההגדרה של Authorized Networks. Authorized Networks מוגדרות לכתובות IP ציבוריות בקטע Connectivity (קישוריות) במסוף Cloud de Confiance , ושיבוט לא מותר בגלל שיקולי אבטחה.

אם אפשר, מסירים את כל הערכים של Authorized Networks מהמכונה של Cloud SQL. אחרת, יוצרים העתק בלי ערכים של Authorized Networks.

הודעת שגיאה: Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges. Please allocate new ranges for this service provider. Help Token: [help-token-id].

ניסיתם להשתמש במסוף Cloud de Confiance כדי לשכפל מכונה עם כתובת IP פרטית, אבל לא ציינתם את טווח כתובות ה-IP שהוקצה שבו אתם רוצים להשתמש, והמכונה המקורית לא נוצרה עם הטווח שצוין. כתוצאה מכך, המכונה המשובטת נוצרת בטווח אקראי.

משתמשים ב-gcloud כדי לשכפל את המופע ומספקים ערך לפרמטר
--allocated-ip-range-name. מידע נוסף זמין במאמר בנושא שיבוט של מופע עם כתובת IP פרטית.

חיבור

שגיאה פתרון בעיות
Aborted connection. הבעיה יכולה להיות:
  • חוסר יציבות ברשת.
  • אין תגובה לפקודות TCP keep-alive (יכול להיות שהלקוח או השרת לא מגיבים, אולי בגלל עומס יתר)
  • חלף הזמן הקצוב של החיבור למנוע מסד הנתונים והשרת מסיים את החיבור.

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

כדי לנסות שוב להתחבר, מומלץ להשתמש בשיטות הבאות:

  1. השהיה מעריכית לפני ניסיון חוזר (exponential backoff). להגדיל את מרווח הזמן בין כל ניסיון חוזר, באופן מעריכי.
  2. כדאי גם להוסיף השהיה אקראית.

שילוב של השיטות האלה עוזר לצמצם את ההגבלה.

זמן קצוב לתפוגה של חיבור או שגיאה כללית בחיבור כשמשתמשים בכתובת IP פרטית או בקישור בין רשתות VPC שכנות (peering).

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

שלבים לפתרון בעיות:

  1. מריצים בדיקת קישוריות של Network Intelligence Center בין לקוח המקור לבין כתובת ה-IP הפרטית של Cloud SQL ביציאת מסד הנתונים (3306 ל-MySQL,‏ 5432 ל-PostgreSQL או 1433 ל-SQL Server). הבדיקה עוקבת אחרי נתיב החבילה ומזהה אם תעבורת הנתונים נחסמת בגלל כללים של חומת האש, מסלולים חסרים או הגדרות שגויות של שיתוף פעולה בין רשתות.
  2. מוודאים שסטטוס החיבור של VPC Network Peering הוא ACTIVE.
  3. מוודאים שכללי חומת האש ברשת ה-VPC מאפשרים תעבורת נתונים נכנסת (ingress) ביציאת מסד הנתונים.
  4. אם משתמשים בטווחים של כתובות שאינן RFC 1918, צריך לוודא שעדכנתם את הגדרות הקישור בין רשתות שכנות (peering) כדי לייצא נתיבי תת-רשת עם IP גלוי.

פרטים נוספים ופקודות אבחון של gcloud זמינים במאמר אבחון כשלים בחיבור לרשת VPC ולכתובות IP פרטיות.

הודעת שגיאה: Login failed for user "" יכול להיות שתיתקלו בשגיאת ההתחברות הזו במהלך אימות של Microsoft Entra ID. כדי לפתור את הבעיה, ודא שקיימת התחברות ל-SQL Server עבור משתמש Microsoft Entra ID זה.
בעיות בקישוריות לרשת עם מופעים של כתובות IP פרטיות יכול להיות שתיתקלו באחת מהבעיות הבאות במהלך ההגדרה של השילוב:
  • פעולות איטיות ליצירת התחברויות ל-Microsoft Entra ID
  • אי אפשר ליצור כניסות ל-Microsoft Entra ID
  • אי אפשר להתחבר למופע באמצעות אימות של Microsoft Entra ID

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

Certificate verify failed.

תוקף האישורים של הלקוח פג או שהנתיב לאישור לא נכון.

יוצרים מחדש את האישורים כדי ליצור אותם מחדש.

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

החיבור למכונה של Cloud SQL באמצעות אימות IAM למסד הנתונים נמשך כמה שניות או מסתיים בטיימאאוט, בעוד שאימות מובנה למסד הנתונים מתבצע כרגיל.

הגורם: המופע משתמש בסוג מכונה עם ליבה משותפת (db-f1-micro או db-g1-small). במסגרת ויסות המעבד, אימות מסד הנתונים של IAM נמשך זמן רב יותר מאימות סיסמה מובנה, כי הוא דורש יותר משאבי מחשוב.

הפתרון:

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

יצירת מופעים

שגיאה פתרון בעיות
הודעת שגיאה: The zone or region does not have sufficient resources to handle the request at the moment.

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

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

הודעת שגיאה: Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges. Please allocate new ranges for this service provider. אין יותר כתובות זמינות בטווח כתובות ה-IP שהוקצה. יכולים להיות כמה תרחישים אפשריים:
  • הגודל של טווח כתובות ה-IP שהוקצה לחיבור הפרטי לשירות קטן מ-‎ /24.
  • הגודל של טווח כתובות ה-IP שהוקצה לחיבור הפרטי לשירות קטן מדי ביחס למספר המכונות של Cloud SQL.
  • הדרישה לגבי הגודל של טווח כתובות ה-IP שהוקצה תהיה גדולה יותר אם המכונות הווירטואליות נוצרות בכמה אזורים. הצגת גודל הטווח שהוקצה

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

אם השתמשתם בדגל --allocated-ip-range-name כשיצרתם את מופע Cloud SQL, תוכלו להרחיב רק את טווח כתובות ה-IP שצוין.

אם מקצים טווח חדש, צריך לוודא שההקצאה לא חופפת להקצאות קיימות.

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

gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com \
--ranges=OLD_RESERVED_RANGE_NAME,NEW_RESERVED_RANGE_NAME \
--network=VPC_NETWORK \
--project=PROJECT_ID \
--force
    

אם מרחיבים הקצאה קיימת, חשוב להגדיל רק את טווח ההקצאה ולא להקטין אותו. לדוגמה, אם ההקצאה המקורית הייתה 10.0.10.0/24, ההקצאה החדשה צריכה להיות לפחות 10.0.10.0/23.

באופן כללי, אם מתחילים מהקצאה של ‎ /24, כדאי להקטין את ‎ /mask ב-1 לכל תנאי (קבוצה נוספת של סוגי מופעים, אזור נוסף). לדוגמה, אם מנסים ליצור שתי קבוצות של סוגי מופעים באותו הקצאה, מעבר מ-‎ /24 ל-‎ /23 מספיק.

אחרי הרחבת טווח כתובות IP קיים, מעדכנים את ה-VPC Peering באמצעות הפקודה הבאה:

gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com \
--ranges=RESERVED_RANGE_NAME \
--network=VPC_NETWORK \
--project=PROJECT_ID
    
הודעת שגיאה: Failed to create subnetwork. Router status is temporarily unavailable. Please try again later. Help Token: [token-ID]. נסו ליצור שוב את מכונת Cloud SQL.
הודעת שגיאה: HTTPError 400: Invalid request: Incorrect Service Networking config for instance: PROJECT_ID:INSTANCE_NAME:SERVICE_NETWORKING_NOT_ENABLED.

מפעילים את Service Networking API באמצעות הפקודה הבאה ומנסים שוב ליצור את מכונת Cloud SQL.

gcloud services enable servicenetworking.googleapis.com \
--project=PROJECT_ID
    
הודעת שגיאה: Failed to create subnetwork. Required 'compute.projects.get' permission for PROJECT_ID. כשיוצרים מופע באמצעות כתובת IP פרטית, נוצר חשבון שירות בדיוק בזמן באמצעות Service Networking API. אם הפעלתם את Service Networking API רק לאחרונה, יכול להיות שחשבון השירות לא ייווצר ויצירת המופע תיכשל. במקרה כזה, צריך לחכות עד שחשבון השירות יתעדכן בכל המערכת או להוסיף אותו ידנית עם ההרשאות הנדרשות.
הודעת שגיאה: More than 3 subject alternative names are not allowed. אתם מנסים להשתמש ב-SAN בהתאמה אישית כדי להוסיף יותר משלושה שמות DNS לאישור השרת של מופע Cloud SQL. אי אפשר להוסיף למופע יותר משלושה שמות DNS.
הודעת שגיאה: Subject alternative names %s is too long. The maximum length is 253 characters. מוודאים ששמות ה-DNS שרוצים להוסיף לאישור השרת של מופע Cloud SQL לא מכילים יותר מ-253 תווים.
הודעת שגיאה: Subject alternative name %s is invalid.

מוודאים ששמות ה-DNS שרוצים להוסיף לאישור השרת של מופע Cloud SQL עומדים בקריטריונים הבאים:

  • הם לא כוללים תווים כלליים לחיפוש.
  • הן לא מסתיימות בנקודות.
  • הם עומדים במפרטים של RFC 1034.

הרצת SQL באמצעות Data API

שגיאה פתרון בעיות
The instance doesn't allow using ExecuteSql to access this instance. You can allow it by patching the instance with {settings: { dataApiAccess: "ALLOW_DATA_API" }} ממשק ה-API לנתונים מושבת כברירת מחדל. כדי לפתור את הבעיה, צריך להפעיל את Data API במופע.
Secret cannot be provided when auto_iam_authn is true. כשמגדירים את auto_iam_authn ל-true, מתבצע אימות למסד הנתונים באמצעות IAM. שיטת האימות הזו לא דורשת סיסמה או סוד. אימות באמצעות IAM
ExecuteSql API is not supported for instances in certain Assured Workloads control packages folders yet. יכול להיות שתסריט ה-SQL והתגובה להרצה שלו יעברו דרך מיקומים ביניים בין הלקוח לבין המיקום של מופע היעד. לכן, בקשות ייכשלו עבור מקרים בפרויקטים מסוימים של Assured Workloads. אם הפרויקט שלכם לא רשום ב-Assured Workloads אבל constraints/sql.restrictNoncompliantResourceCreation נאכף באופן ידני, צריך לבקש מהאדמין בארגון להסיר את האילוץ. הבעיה תיפתר במופעים שייווצרו.
IAM authentication is not enabled for the instance כדי לפתור את הבעיה, צריך להגדיר את המופע לאימות IAM.
The database is currently unavailable. יכול להיות שהמופע מופעל מחדש, עובר תחזוקה או שהוא במצב לא תקין. צריך לבדוק את הסטטוס של המופע ולנסות שוב מאוחר יותר.

ייצוא

שגיאה פתרון בעיות
HTTP Error 409: Operation failed because another operation was already in progress. כבר יש פעולה בהמתנה למכונה שלך. מותר לבצע רק פעולה אחת בכל פעם. כדאי לנסות לשלוח את הבקשה אחרי שהפעולה הנוכחית תסתיים.
HTTP Error 403: The service account does not have the required permissions for the bucket. מוודאים שהקטגוריה קיימת ושלחשבון השירות של מכונת Cloud SQL (שמבצעת את הייצוא) הוקצה התפקיד Storage Object Creator (roles/storage.objectCreator) כדי לאפשר ייצוא לקטגוריה. תפקידי IAM ל-Cloud Storage
ייצוא ה-CSV פעל אבל ייצוא ה-SQL נכשל. ייצוא בפורמטים CSV ו-SQL מתבצע באופן שונה. בפורמט SQL מיוצא כל מסד הנתונים, ולכן סביר להניח שהייצוא יימשך זמן רב יותר. בפורמט CSV אפשר להגדיר אילו רכיבים של מסד הנתונים ייכללו בייצוא.

שימוש בייצוא ל-CSV כדי לייצא רק את מה שצריך.

הייצוא נמשך יותר מדי זמן. ‫Cloud SQL לא תומך בפעולות סינכרוניות מקבילות.

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

אתם רוצים שהייצוא יהיה אוטומטי. ב-Cloud SQL אין אפשרות לייצא באופן אוטומטי.

אפשר ליצור מערכת ייצוא אוטומטית משלכם באמצעות Cloud de Confiance by S3NSמוצרים כמו Cloud Scheduler,‏ Pub/Sub ופונקציות Cloud Run, בדומה למאמר הזה בנושא גיבוי אוטומטי.

חיצוני ראשי

שגיאה פתרון בעיות
Lost connection to MySQL server during query when dumping table. יכול להיות שהמקור הפך ללא זמין, או שה-dump הכיל חבילות גדולות מדי.

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

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

הגיבוי הראשוני נכשל בגלל שגיאות שקשורות לזמן קצוב לתפוגה או לניתוק מהחיבור (לדוגמה, Dump timeout או Lost connection to MySQL server). השגיאה הזו יכולה להתרחש אם הצהרת DDL אחת או יותר יוצרת אינטראקציה עם תהליך ה-dump המקביל, וגורמת לתהליך להמתין ללא הגבלת זמן.

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

המיגרציה הראשונית של הנתונים הושלמה, אבל לא מתבצעת שכפול של הנתונים.

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

מוודאים שדגלי השכפול, כמו binlog-do-db,‏ binlog-ignore-db,‏ replicate-do-db או replicate-ignore-db, לא מוגדרים בצורה שיוצרת התנגשות.

מריצים את הפקודה show master status במופע הראשי כדי לראות את ההגדרות הנוכחיות.

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

פעולות שכדאי לנסות:

  • בודקים את מדדי השכפול של מופע הרפליקה בקטע Cloud Monitoring במסוף Cloud de Confiance .
  • השגיאות משרשור הקלט/פלט או משרשור ה-SQL של MySQL מופיעות בCloud Logging בקובצי היומן mysql.err.
  • השגיאה יכולה להופיע גם כשמתחברים למופע המשוכפל. מריצים את הפקודה SHOW REPLICA STATUS ובודקים את השדות הבאים בפלט:
    • Replica_IO_Running
    • Replica_SQL_Running
    • Last_IO_Error
    • Last_SQL_Error

אם מופיעה השגיאה Unknown database DATABASE_NAME on query. Error_code: MY-001049, המשמעות היא שהשכפול נכשל בגלל הצהרת SQL משוכפלת שמנסה להפנות למסד נתונים שלא נבחר להעברה. כדי לשחזר את השכפול, צריך לקבוע אם השגיאה מבוססת על הודעה שנובעת מ-DDL באחד מהאובייקטים הבאים:

  • אירוע או פעולה שגרתית. אפשר להריץ את הפקודה CALL mysql.skipReplicationError() ברפליקה, וכך למנוע את השכפול של האירוע או השגרה ולהמשיך את השכפול.
  • אילוץ או תצוגה של מפתח זר. אחרי שקובעים באיזה מסד נתונים נמצא האובייקט ששונה על ידי ההצהרה, יש שתי אפשרויות לשחזור. אפשר להסיר את מסד הנתונים ממסדי הנתונים שנבחרו להעברה, או להריץ את הפקודה CALL mysql.skipReplicationError() על העותק המשוכפל כדי להמשיך את השכפול תוך דילוג על האילוץ או על ההפצה של התצוגה לעותק המשוכפל.
mysqld check failed: data disk is full. דיסק הנתונים של מופע הרפליקה מלא.

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

עותק משוכפל חיצוני

שגיאה פתרון בעיות
הודעת שגיאה: The slave is connecting ... master has purged binary logs containing GTIDs that the slave requires. במופע הראשי של Cloud SQL מופעלים גיבויים אוטומטיים ויומני בינאריים, ושחזור מערכת מנקודה מסוימת בזמן (PITR) מופעל, כך שצריכים להיות מספיק יומנים כדי שהרפליקה תוכל להתעדכן. עם זאת, במקרה הזה, למרות שקיימים יומני בינאריים, העותק לא יודע מאיזו שורה להתחיל לקרוא.

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

  1. מתחברים ללקוח mysql דרך מכונה של Compute Engine.
  2. מריצים את הפקודה mysqldump ומשתמשים בדגלים --master-data=1 ו---flush-privileges.

    חשוב: אל תכללו את הדגל --set-gtid-purged=OFF.

    מידע נוסף

  3. מוודאים שקובץ ה-dump שנוצר מכיל את השורה SET @@GLOBAL.GTID_PURGED='...'.
  4. מעלים את קובץ ה-dump לקטגוריה של Cloud Storage ו מגדירים את העותק המשוכפל באמצעות קובץ ה-dump.

דגלים

שגיאה פתרון בעיות
אחרי שמפעילים דגל, המופע מבצע לולאה בין מצב פאניקה לקריסה. פונים אל תמיכת הלקוחות כדי לבקש להסיר את הסימון ואז לבצע hard drain. הפעולה הזו מאלצת את המופע להפעלה מחדש במארח אחר עם הגדרה חדשה, בלי הדגל או ההגדרה הלא רצויים.
מופיעה הודעת השגיאה Bad syntax for dict arg כשמנסים להגדיר דגל. ערכי פרמטרים מורכבים, כמו רשימות שמופרדות בפסיקים, דורשים טיפול מיוחד כשמשתמשים בהם בפקודות gcloud.

זמינות גבוהה

שגיאה פתרון בעיות
אי אפשר למצוא את המדדים של מעבר ידני לגיבוי. רק מעברים אוטומטיים לגיבוי נכללים במדדים.
השימוש במשאבים (CPU ו-RAM) של מכונת Cloud SQL קרוב ל-100%, מה שגורם למכונה עם זמינות גבוהה להפסיק לפעול. גודל המכונה של המופע קטן מדי בשביל העומס.

עורכים את המכונה כדי לשדרג לגודל מכונה גדול יותר ולקבל יותר מעבדי CPU וזיכרון.

ייבוא

שגיאה פתרון בעיות
HTTP Error 409: Operation failed because another operation was already in progress. כבר יש פעולה בהמתנה למכונה שלך. מותר לבצע רק פעולה אחת בכל פעם. כדאי לנסות לשלוח את הבקשה אחרי שהפעולה הנוכחית תסתיים.
פעולת הייבוא נמשכת יותר מדי זמן. יותר מדי חיבורים פעילים עלולים להפריע לפעולות ייבוא.

סוגרים פעולות שלא בשימוש. כדאי לבדוק את המעבד (CPU) ואת השימוש בזיכרון במכונת Cloud SQL כדי לוודא שיש מספיק משאבים זמינים. הדרך הטובה ביותר לוודא שמשימת הייבוא מקבלת את מרב המשאבים היא להפעיל מחדש את המכונה לפני התחלת הפעולה.

הפעלה מחדש:

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

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

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

פעולות שכדאי לנסות:

מוסיפים את השורה הבאה בתחילת קובץ ה-dump:

SET FOREIGN_KEY_CHECKS=0;
  

בנוסף, מוסיפים את השורה הזו בסוף קובץ ה-dump:

SET FOREIGN_KEY_CHECKS=1;
  

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

אינטגרציה עם Vertex AI

שגיאה פתרון בעיות
הודעת שגיאה: Google ML integration API is supported only on MySQL version 8.0.36 or above. כדי להפעיל את השילוב של Vertex AI ב-Cloud SQL, צריך מסד נתונים של Cloud SQL ל-MySQL בגרסה 8.0.36 ואילך. כדי לשדרג את מסד הנתונים לגרסה הזו, אפשר לעיין במאמר בנושא שדרוג גרסה משנית של מסד הנתונים.
הודעת שגיאה: Google ML Integration API is not supported on shared core instance. Please upsize your machine type. אם בחרתם ליבה משותפת לסוג המכונה של המופע, לא תוכלו להפעיל את השילוב של Vertex AI ב-Cloud SQL. שדרוג סוג המכונה לליבה ייעודית. מידע נוסף זמין במאמר בנושא סוגי מכונות.
הודעת שגיאה: Google ML Integration is unsupported for this maintenance version. Please follow https://cloud.google.com/sql/docs/mysql/self-service-maintenance to update the maintenance version of the instance. כדי להפעיל את השילוב של Vertex AI ב-Cloud SQL, גרסת התחזוקה של המכונה צריכה להיות R20240130 ומעלה. כדי לשדרג את המכונה לגרסה הזו, אפשר לעיין במאמר בנושא תחזוקה בשירות עצמי.
הודעת שגיאה: Cannot invoke ml_predict_row if 'cloudsql.enable_google_ml_integration' is off. cloudsql.enable_google_ml_integration דגל לניהול מסד נתונים מושבת. אי אפשר לשלב את Cloud SQL עם Vertex AI.

כדי להפעיל את הדגל הזה, משתמשים בפקודה gcloud sql instances patch:

gcloud sql instances patch INSTANCE_NAME --database-flags cloudsql.enable_google_ml_integration=on

מחליפים את INSTANCE_NAME בשם של מופע Cloud SQL הראשי.
הודעת שגיאה: Failed to connect to remote host: Connection refused. השילוב בין Cloud SQL לבין Vertex AI לא מופעל. כדי להפעיל את השילוב הזה, משתמשים בפקודה gcloud sql instances patch:

gcloud sql instances patch INSTANCE_NAME
--enable-google-ml-integration


מחליפים את INSTANCE_NAME בשם של מופע Cloud SQL הראשי.
הודעת שגיאה: Vertex AI API has not been used in project PROJECT_ID before or it is disabled. Enable it by visiting /apis/api/aiplatform.googleapis.com/overview?project=PROJECT_ID then retry. ‫Vertex AI API לא מופעל. מידע נוסף על הפעלת ה-API הזה זמין במאמר הפעלת שילוב של מסד נתונים עם Vertex AI.
הודעת שגיאה: Permission 'aiplatform.endpoints.predict' denied on resource. ההרשאות של Vertex AI לא מתווספות לחשבון השירות של Cloud SQL בפרויקט שבו נמצאת מכונת Cloud SQL. למידע נוסף על הוספת ההרשאות האלה לחשבון השירות, אפשר לעיין במאמר איך מעניקים לחשבון השירות של Cloud SQL הרשאות גישה ל-Vertex AI בניהול זהויות והרשאות גישה (IAM).
הודעת שגיאה: Publisher Model `projects/PROJECT_ID/locations/REGION_NAME/publishers/google/models/MODEL_NAME` not found. מודל למידת המכונה או ה-LLM לא קיימים ב-Vertex AI.
הודעת שגיאה: Resource exhausted: grpc: received message larger than max. הגודל של הבקשה ש-Cloud SQL מעביר ל-Vertex AI חורג מהמגבלה של gRPC של 4MB לכל בקשה.
הודעת שגיאה: Cloud SQL attempts to send a request to Vertex AI. However, the instance is in the %s region, but the Vertex AI endpoint is in the %s region. Make sure the instance and endpoint are in the same region. מערכת Cloud SQL מנסה לשלוח בקשה ל-Vertex AI. עם זאת, המופע נמצא באזור אחד, אבל נקודת הקצה של Vertex AI נמצאת באזור אחר. כדי לפתור את הבעיה, גם המופע וגם נקודת הקצה צריכים להיות באותו אזור.
הודעת שגיאה: The Vertex AI endpoint isn't formatted properly. הפורמט של נקודת הקצה של Vertex AI לא תקין. מידע נוסף זמין במאמר שימוש בנקודות קצה פרטיות לחיזוי אונליין.
הודעת שגיאה: Quota exceeded for aiplatform.googleapis.com/online_prediction_requests_per_base_model with base model: textembedding-gecko. מספר הבקשות ש-Cloud SQL מעביר אל Vertex AI חורג מהמגבלה של 1,500 בקשות לדקה לכל אזור לכל מודל לכל פרויקט.
הודעת שגיאה: execute command denied to user DB_USER for routine 'mysql.ml_embedding'. למשתמש במסד הנתונים של MySQL אין את ההרשאות הדרושות כדי להפעיל את הפונקציה mysql.ml_embedding. כאן אפשר לראות את ההרשאות הנדרשות.

רישום ביומן

שגיאה פתרון בעיות
לא נמצאו יומני ביקורת. יומני Data Access נכתבים רק אם הפעולה היא קריאה ל-API שמבוססת על משתמש מאומת ויוצרת, משנה או קוראת נתונים שנוצרו על ידי משתמש, או אם הפעולה ניגשת לקובצי הגדרות או למטא-נתונים של משאבים.
לא נמצא מידע על פעולות ביומנים. אתם רוצים לקבל מידע נוסף על פעולה מסוימת.

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

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

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

SHOW VARIABLES LIKE 'innodb_log_file%';

SELECT ROUND(SUM(LENGTH(argument)/POW(1024,2),2)
AS GB from mysql.general_log;

SHOW BINARY LOGS;
    
קשה לקרוא את קובצי היומן. אתם מעדיפים לראות את היומנים כ-JSON או כטקסט.אתם יכולים להשתמש בפקודה gcloud logging read יחד עם פקודות לעיבוד שלאחר ההורדה ב-Linux כדי להוריד את היומנים.

כדי להוריד את היומנים כקובץ JSON:

gcloud logging read \
"resource.type=cloudsql_database \
AND logName=projects/PROJECT_ID \
/logs/cloudsql.googleapis.com%2FLOG_NAME" \
--format json \
--project=PROJECT_ID \
--freshness="1d" \
> downloaded-log.json
    

כדי להוריד את היומנים כקובץ TEXT:

gcloud logging read \
"resource.type=cloudsql_database \
AND logName=projects/PROJECT_ID \
/logs/cloudsql.googleapis.com%2FLOG_NAME" \
--format json \
--project=PROJECT_ID \
--freshness="1d"| jq -rnc --stream 'fromstream(1|truncate_stream(inputs)) \
| .textPayload' \
--order=asc
> downloaded-log.txt
   

ניהול מופעים

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

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

SELECT ROUND(SUM(LENGTH(argument)/POW(1024,2)),2) from mysql.general_log;
אתם רוצים לדעת מה תופס נפח אחסון. לדוגמה, אם אתם רואים שהמסד נתונים שלכם משתמש רק ב-3GB, אבל בנתוני האחסון מצוין שנעשה שימוש ב-14GB. רוב הנפח שלא משמש את הטבלאות משמש ליומנים בינאריים או לקבצים זמניים.

פעולות שכדאי לנסות:

  • כדי לבדוק את נפח האחסון שתופסים יומנים בינאריים, משתמשים בפקודה הבאה בממשק שורת הפקודה של MySQL: SHOW BINARY LOGS;
  • יכול להיות שגם טבלאות זמניות תופסות נפח אחסון משמעותי. כדי לבדוק את השימוש במקום האחסון הזמני, משתמשים בפקודה הבאה: SELECT * FROM INFORMATION_SCHEMA.FILES WHERE TABLESPACE_NAME='innodb_temporary'\G.
  • הפקודה הבאה מאפשרת לבדוק את הגודל של יומן Redo: SHOW VARIABLES LIKE 'innodb_log_file%';
  • אם general_log מופעל, אפשר לבדוק את הגודל שלו באמצעות הפקודה הבאה: SELECT ROUND(SUM(LENGTH(argument)/POW(1024,2)),2) AS GB from mysql.general_log;
  • במקרה הצורך, אפשר לקצץ את טבלאות היומן באמצעות ה-API. מידע נוסף זמין בדף העזרה בנושא instances.truncateLog.
  • מידע נוסף על הגדרה ו קביעת תצורה של יומני שאילתות איטיות
השאילתות חסומות. יכול להיות ששאילתות ינעלו את מסד הנתונים של MySQL, ויגרמו לכל השאילתות הבאות להיחסם או להגיע לזמן קצוב לתפוגה.

מתחברים למסד הנתונים ומריצים את השאילתה הבאה:

SHOW PROCESSLIST.

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

SHOW INNODB STATUS השאילתה יכולה לעזור גם כן.

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

SELECT * FROM INFORMATION_SCHEMA.FILES WHERE TABLESPACE_NAME='innodb_temporary'\G

רוצים לדעת מה גודל הטבלה. המידע הזה זמין במסד הנתונים.

מתחברים למסד הנתונים ומריצים את השאילתה הבאה:

SELECT TABLE_SCHEMA, TABLE_NAME, sum(DATA_LENGTH+INDEX_LENGTH)/pow(1024,2) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA NOT IN ('PERFORMANCE_SCHEMA','INFORMATION_SCHEMA','SYS','MYSQL') GROUP BY TABLE_SCHEMA, TABLE_NAME;

‫mysqld קיבל אות 11. נסו לבצע רפקטורינג של שאילתות כדי שלא ייצרו יותר מדי חיבורים. אם הבעיה לא נפתרת, אפשר לפנות לתמיכת לקוחות. אות 11 בדרך כלל מייצג בעיה בתוכנת MySQL.

InnoDB: page_cleaner: 1000ms intended loop took 5215ms. The settings might not be optimal. כלי ניקוי הדפים לא יכול לעמוד בקצב השינויים במופע. פעם בשנייה, כלי הניקוי של הדף סורק את מאגר הנתונים הזמני כדי למצוא דפים לא נקיים, ומרוקן אותם ממאגר הנתונים הזמני לדיסק. האזהרה שמוצגת לכם מציינת שיש הרבה דפים לא נקיים שצריך לנקות, ושלוקח יותר משנייה לנקות קבוצה של דפים כאלה בדיסק.

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

הגדלנו את נפח האחסון הזמני באופן אוטומטי. האחסון האוטומטי מופעל.

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

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

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

אי אפשר למחוק את המופע. יכול להיות שתופיע הודעת השגיאה ERROR: (gcloud.sql.instances.delete) HTTP Error 409: The instance or operation is not in an appropriate state to handle the request, או שהמופע יסומן בסטטוס INSTANCE_RISKY_FLAG_CONFIG.

אלה כמה הסברים אפשריים:

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

לצערנו, אי אפשר להקטין את הקובץ ibtmp1 בשום שיטה, אלא אם מפעילים מחדש את השירות.

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

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

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

המופע הראשי המקומי תקוע. Cloud de Confiance by S3NS לא יכול לעזור במקרים של מכונות שלא נמצאות ב-Cloud SQL.
כיבוי איטי בהפעלה מחדש. כשמכונה מושבתת, כל החיבורים הפתוחים שלא מסתיימים תוך 60 שניות גורמים להשבתה לא תקינה.

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

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

בודקים אילו אובייקטים תלויים במשתמש, ואז משמיטים או מקצים מחדש את האובייקטים האלה למשתמש אחר.

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

כדאי לעיין במיוחד ב טיפים כלליים לשיפור הביצועים.

אם פעולות ההוספה, העדכון או המחיקה במסד הנתונים מתבצעות לאט, כדאי לבצע את הפעולות הבאות:

  • אם מפעילים את הדגל long_query_time, אפשר לבדוק את היומנים כדי לראות אילו שאילתות פועלות לאט. עוברים לדף Logs Explorer של הפרויקט ומריצים שאילתה כמו זו:
    resource.type="cloudsql_database"
    resource.labels.database_id="INSTANCE-ID"
    log_name="projects/PROJECT-ID/logs/cloudsql.googleapis.com%2Fmysql-slow.log"
          

    אפשר להוריד את היומנים בפורמט JSON או TEXT לעיבוד מקומי.

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

כדי להקטין את זמן האחזור, מומלץ למקם את משאבי המקור והיעד באותו אזור.

מוצגת הודעה על אין זיכרון פנוי (OOM), אבל בתרשימי המעקב לא רואים את זה. יכול להיות שמופע ייכשל וידווח על Out of memory, אבל בטבלאות במסוף Cloud de Confiance או בתרשימים ב-Cloud Monitoring ייראה כאילו עדיין יש זיכרון פנוי.

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

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

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

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

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

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

יש דרכים אחרות להשיג את המטרה על ידי יצירת מופע חדש.

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

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

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

התחברות לשירות פרטי

שגיאה פתרון בעיות
קובץ השירות המצורף של המופע לא מקבל את נקודת הקצה של Private Service Connect.
  1. בודקים את הסטטוס של נקודת הקצה.

    gcloud

    כדי לבדוק את הסטטוס, משתמשים בפקודה
    gcloud compute forwarding-rules describe.

    gcloud compute forwarding-rules describe ENDPOINT_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    | grep pscConnectionStatus

    מחליפים את הפרטים הבאים:

    • ENDPOINT_NAME: השם של נקודת הקצה
    • PROJECT_ID: המזהה או מספר הפרויקט של Cloud de Confiance הפרויקט שמכיל את נקודת הקצה
    • REGION_NAME: שם האזור של נקודת הקצה

    REST

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • PROJECT_ID: המזהה או מספר הפרויקט של Cloud de Confiance הפרויקט שמכיל את נקודת הקצה של Private Service Connect
    • REGION_NAME: שם האזור
    • ENDPOINT_NAME: השם של נקודת הקצה

    ה-method של ה-HTTP וכתובת ה-URL:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME

    כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

    אתם אמורים לקבל תגובת JSON שדומה לזו:

    {
      "kind": "compute#forwardingRule",
      "id": "ENDPOINT_ID",
      "creationTimestamp": "2024-05-09T12:03:21.383-07:00",
      "name": "ENDPOINT_NAME",
      "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME",
      "IPAddress": "IP_ADDRESS",
      "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME",
      "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME",
      "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default",
      "serviceDirectoryRegistrations": [
        {
          "namespace": "goog-psc-default"
        }
      ],
      "networkTier": "PREMIUM",
      "labelFingerprint": "LABEL_FINGERPRINT_ID",
      "fingerprint": "FINGERPRINT_ID",
      "pscConnectionId": "CONNECTION_ID",
      "pscConnectionStatus": "ACCEPTED",
      "allowPscGlobalAccess": true
    }
    
  2. מוודאים שהסטטוס של נקודת הקצה הוא ACCEPTED. אם הסטטוס הוא PENDING, המשמעות היא שהמופע לא מאפשר את Cloud de Confiance הפרויקט שמכיל את נקודת הקצה. מוודאים שהפרויקט ברשת שבו נוצרה נקודת הקצה מותר. מידע נוסף מופיע במאמר עריכת מופע עם Private Service Connect מופעל.
ERROR: (gcloud.compute.forwarding-rules.create) Could not fetch resource: The resource 'projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME' was not found הודעת השגיאה הזו יכולה להופיע כשמזמינים כתובת IP פנימית סטטית לנקודת הקצה (endpoint) של Private Service Connect. מוודאים שרשת המשנה שצוינה קיימת בפרויקט שצוין ב-URI. אם רוצים ליצור נקודת קצה בפרויקט שירות אבל להשתמש ברשת משנה מרשת VPC משותפת, צריך לציין את רשת המשנה באמצעות ה-URI שלה ולהשתמש במזהה הפרויקט של פרויקט המארח ב-URI. מידע נוסף זמין במאמר יצירת נקודת הקצה באופן ידני.
ERROR: (gcloud.compute.forwarding-rules.create) Could not fetch resource: - The resource 'projects/PROJECT_ID/global/networks/NETWORK_NAME' was not found הודעת השגיאה הזו יכולה להופיע כשיוצרים נקודת קצה (endpoint) של Private Service Connect באופן ידני. מוודאים שהרשת שצוינה קיימת בפרויקט שצוין ב-URI. אם רוצים ליצור נקודת קצה בפרויקט שירות אבל להשתמש ברשת VPC משותפת, צריך לציין את הרשת באמצעות ה-URI שלה ולהשתמש במזהה הפרויקט של פרויקט המארח ב-URI. מידע נוסף זמין במאמר יצירת נקודת הקצה באופן ידני.
Invalid consumer network status for PSC auto connection.

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

  • CONNECTION_POLICY_MISSING: אין מדיניות תואמת לחיבור שירות ברשת הצרכן. מדיניות חיבור לשירותים מוגדרת לפי רשת, לפי אזור. כדי להגדיר מחדש את הרשת, אפשר לעיין במאמר בנושא עדכון מדיניות חיבור לשירות.
  • CONSUMER_INSTANCE_PROJECT_NOT_ALLOWLISTED: יש מדיניות תואמת של חיבור שירות, אבל השדה היקף מופע השירות במדיניות לא מוגדר כך שיאפשר חיבור למופע הזה של Cloud SQL. מעדכנים את המדיניות כדי להגדיר את הערך של השדה היקף מופע השירות (--producer-instance-location) עם הפרויקט, התיקייה או הארגון שבהם נמצא מופע Cloud SQL. כדי להגדיר מחדש את המדיניות של חיבור השירות, אפשר לעיין במאמר בנושא עדכון המדיניות של חיבור השירות.
  • POLICY_LIMIT_REACHED: מדיניות החיבור לשירות הגיעה למגבלת נקודות הקצה. כדי לפתור את הבעיה, צריך להגדיל את מגבלת נקודות הקצה על ידי עדכון מדיניות חיבור השירות.

No permission to create a service connection policy.

אין לכם את ההרשאות הנדרשות כדי ליצור מדיניות של חיבור שירות. כדי ליצור מדיניות לחיבור שירות, צריך את התפקיד Compute Network Admin IAM. מידע נוסף זמין במאמר בנושא תפקידים והרשאות.

לא ניתן למחבר הרשת לקבל חיבורים מממשק Private Service Connect כשמשתמשים בקישוריות יוצאת של Private Service Connect.

אם הרשת החיצונית לא יכולה לקבל חיבורים מממשק Private Service Connect, יכול להיות שמדיניות החיבורים במחבר הרשת לא מוגדרת בצורה נכונה.

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

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

      gcloud compute network-attachments describe default
      --region=REGION_ID
אם הממשק של Private Service Connect לא מופיע ברשימה המקובלת, צריך לעדכן את מחבר הרשת. מידע נוסף מופיע במאמר בנושא ניהול קבצים מצורפים ברשת.

שכפול

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

קודם כול, בודקים שהערך של הדגל max_connections גדול מהערך בשרת הראשי או שווה לו.

אם הדגל max_connections מוגדר בצורה מתאימה, בודקים את היומנים ב-Cloud Logging כדי למצוא את השגיאה בפועל.

לא ניתן ליצור עותק לקריאה – שגיאה לא ידועה. סביר להניח שיש שגיאה ספציפית יותר בקובצי היומן. בודקים את היומנים ב-Cloud Logging כדי למצוא את השגיאה בפועל.

אם השגיאה היא set Service Networking service account as servicenetworking.serviceAgent role on consumer project, אפשר ליצור באופן ידני את חשבון השירות הנדרש על ידי ביצוע ההוראות במאמר יצירה והקצאה של תפקידים לסוכני שירות.

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

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

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

עורכים את המופע כדי להפעיל את automatic storage increase.

ההשהיה בשכפול גבוהה באופן עקבי. עומס הכתיבה גבוה מדי בשביל העותק. השהיית שכפול מתרחשת כשהשרשור של SQL בעותק לא מצליח לעמוד בקצב של שרשור הקלט/פלט. סוגים מסוימים של שאילתות או עומסי עבודה עלולים לגרום להשהיה גבוהה זמנית או קבועה בשכפול של סכימה נתונה. חלק מהסיבות האופייניות לעיכוב בשכפול:
  • שאילתות איטיות בעותק המשוכפל. צריך לאתר את הבעיות ולתקן אותן.
  • לכל הטבלאות צריך להיות מפתח ייחודי או מפתח ראשי. כל עדכון בטבלה כזו בלי מפתח ייחודי או ראשי גורם לסריקות מלאות של הטבלה ברפליקה.
  • שאילתות כמו DELETE ... WHERE field < 50000000 גורמות לפיגור בשכפול עם שכפול מבוסס-שורות, כי מספר עצום של עדכונים מצטבר בעותק המשוכפל.

הנה כמה פתרונות אפשריים:

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

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

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

במופע הראשי שבו מוצגת הודעת השגיאה, מגדירים את הדגלים של השכפול המקביל:

  1. משנים את הדגלים binlog_transaction_dependency_tracking ו-transaction_write_set_extraction:
    • binlog_transaction_dependency_tracking=COMMIT_ORDER
    • transaction_write_set_extraction=OFF
  2. מוסיפים את הדגל slave_pending_jobs_size_max:

    slave_pending_jobs_size_max=33554432

  3. משנים את הדגל transaction_write_set_extraction:

    transaction_write_set_extraction=XXHASH64

  4. משנים את הדגל binlog_transaction_dependency_tracking:

    binlog_transaction_dependency_tracking=WRITESET

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

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