הגדרת GCP Cloud SQL לבסיסי נתונים מנוהלים

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

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

הגדרת Cloud SQL: היכן נשבר מסד נתונים מנוהל

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

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

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

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

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

השפעת ההגדרה במדדים: מה משתנה בפועל

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

מה בודקים במדדים

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

אילו סוגי כשל נעלמים

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

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

אפשרויות פריסה: משאב ייעודי, מאגר משותף, היברידי

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

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

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

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

סדר העבודות: מביקורת הסכימה ועד מסירה לתפעול

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

  1. ביקורת סכימה ועומסים. אוספים פרמטרים נוכחיים: גדלים וקצב גדילה של טבלאות, חיבורים בשיא, שיעור קריאה וכתיבה, שליפות כבדות מיומן השאילתות האיטיות.
  2. תכנון פריסה. מגדירים סוג מופע, אזור ואזורי זמינות, מצב זמינות, חלוקה לפי מסדים, פרמטרי חיבורים — כך שהשיא לא יתנגש במגבלות.
  3. הגדרת רפליקות. מרימים רפליקות קריאה לדיווח, מגדירים פיגור מותר וכללים שלפיהם חלק מהתעבורה יוצאת מהמסד הראשי.
  4. גיבוי וחזרה אחורה. מגדירים לוח זמנים לתמונות מצב וליומן שינויים, בודקים שחזור על מופע נפרד.
  5. בדיקה בסביבת בדיקות. מריצים את פרופיל העומס שנלכד, משווים זמן תגובה ותוכניות שאילתות למעגל הנוכחי, תופסים רגרסיות לפני המעבר.
  6. מעבר מבוקר. מעבירים תעבורה בחלקים, עוקבים אחרי שגיאות חיבורים ופיגור רפליקות, שומרים על נתיב חזרה למעגל הקודם.
  7. מסירה לתפעול. מוסרים את תרשים הפריסה, התצורות העובדות, כללי הגיבוי, לוחות המחוונים והוראות למשמרת התורנית.

מדיניות גישה, תוכניות רפליקציה ותקנוני שחזור

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

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

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

מקרה בוחן: הסרנו הידרדרות וקיצרנו את זמן השחזור

הלקוח הגיע עם תלונה על חוסר יציבות בשעות שיא: שאילתות משתמשים ודיווח כבד עבדו על אותו מופע Cloud SQL, והאנליטיקה באופן קבוע "אכלה" משאבים מסביבת הייצור. שיעור הפניות שהסתיימו בטיימאאוט הגיע ל-4-5%, ושחזור לאחר כשל של המאסטר מגיבוי ארך כ-40 דקות — כל אותו זמן השירות היה לא זמין.

מה ארגנו מחדש

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

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

מה קיבלנו

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

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

במה מסד מנוהל שונה מאשכול עצמאי

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

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

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

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

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

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

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

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

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

העברת מסד בלי לעצור את השירות — זה ריאלי?

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

מה יקרה בכשל אזור?

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

כיצד מופרדות הרשאות גישה?

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

נדון במשימה: מה נדרש מצדכם להערכה

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