ניהול TiDB עבור HTAP: הגדרה ואופטימיזציה

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

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

שאלות נפוצות

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

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

ניהול TiDB: היכן נשבר העומס ההיברידי

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

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

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

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

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

מה נותן כיוונון האשכול: מהירות, עמידות, תחזית

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

תוכניות שאילתה ופיזור עומס

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

עמידות לתקלות וחלון שחזור

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

מה זה נותן בפועל:

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

מצבי ניהול TiDB: השוואת גישות וגבולות

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

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

מתי די בכיוונון חד־פעמי

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

היכן מתחילות המגבלות של כל מצב

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

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

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

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

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

בדיקת כשל לפני מסירה

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

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

מה נשאר אצלכם: תצורות, סכימות, נהלים

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

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

מדיניות גישה והפרדת תפקידים

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

נהלי תחזוקה ושחזור

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

מקרה בוחן: האשכול שוב מחזיק עומס שיא ללא הידרדרות

מה היה לפני

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

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

מה השתנה לאחר מכן

איזנו מחדש את הנתונים וקבענו כללים להצבת עותקים לפי אזורי זמינות, והאנליטיקה הועברה לרפליקות נפרדות — טרנזקציות ודוחות חדלו להתחרות על אותם משאבים. העיוות בעומס בין הצמתים הצטמצם מ־70/30 לסטייה של עד 10%, שאילתות כבדות נכנסו לדקות במקום עשרות דקות, וההידרדרות בשיא נעלמה.

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

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

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

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

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

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

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

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

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

מה יקרה לעומס אם צומת ייכשל בשיא?

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

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

אפשר לעבור לסכימת אחסון חדשה בלי לעצור את השירות?

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

כיצד בנוי מעגל הגיבוי והשחזור?

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

מה כולל הליווי לאחר ההשקה?

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

נדון במשימה: נאסוף מדדים ונחזור עם תוכנית

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

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

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

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