איך לתקן מסד נתונים שנתקע במצב החידוש

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

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

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

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

הבנת מצב "בתהליך שיקום" ב-SQL Server

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

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

ציור 1- בסיס הנתונים של SQL במצב "בשיקום"

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

שלושת שלבי שיקום בבסיס נתונים של SQL

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

שלב 1: ניתוח

השלב הזה מתחיל מה"נקודת בקרה האחרונה ועד סוף יומן העסקאות." זה יוצר טבלת 'טבלת עמודות מלוכלכים' (DPT) שעוזרת לזהות את כל עמודות המלוכלכים בזמן התקלה. בנוסף, יוצר טבלת 'טבלת עסקאות פעילות' (ATT) כדי לזהות עסקאות שלא הושלמו כאשר שרת ה-SQL נעצר.

שלב 2: הרצה מחדש

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

שלב 3: ביטול

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

מה לעשות אם מסד הנתונים שלך נתקע במצב שחידוש?

בדוק את יומן שגיאות שרת ה-SQL כדי לראות את ההודעה הראשונה במסד הנתונים שעשויה להיראות דומה לזו:

Starting up database ‘DatabaseName’

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

בשלב 1 של שחידוש מסד הנתונים מוצג למטה:

Plain Text

 

לאחר השלמת שלב 1, מסד הנתונים SQL יעבור בשלב 2 ו-3 של השיקום:

Plain Text

 

כאשר השלבים 2 ו-3 יושלמו, תראו משהו דומה ל:

Plain Text

 

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

סיבות למצב "בשיקום" של מסד נתונים SQL

הנה הסיבות שעשויות לגרום למסד נתונים SQL להישאר במצב שיקום:

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

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

פתרון עבור 1: להמתין שהשיקום של המסד יושלם

הפתרון הכי נפוץ להחזיר את מסד הנתונים למצב מקוון הוא להיות סבלני ולהמתין שהתהליך של השיקום יושלם; זה עשוי לקחת שעות או ימים. אם השיקום נמשך יותר מדי זמן מהצפוי עבור מסד נתונים ב- SQL Server 2008 או 2008 R2, יישום תיקוני Microsoft עשוי לעזור.

הערה: הימנעו מהרצת הפקודה RESTORE כדי להפעיל את מסד הנתונים במצב עקבי, מכיוון ש-SQL Server כבר מנסה לבצע את אותה משימה. והפעלת 'RESTORE with..Recovery' משמעותה שהמסד ייאלץ לעבור שוב את אותם שלבים.

פתרון 2: השתמשו בכלי תיקון מקצועי למסד נתוני SQL

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

  • Stellar Repair for MS SQL — כלי ייחודי המסייע בשחזור מסדי נתונים SQL למצבם המקורי לאחר פגיעה או כשל.
  • ApexSQL Recover — כלי זה מסייע בשחזור נתונים שנמחקו, קוצצו או נפגעו במסד נתוני SQL Server.
  • dbForge SQL Complete — למרות שהוא בעיקרו הרחבה ל-IDE, הוא מציע מאפיינים מועילים לטיפול בשגיאות ופתרון תקלות.
  • Redgate SQL Data Recovery — Redgate מספקת מגוון כלים ל-SQL Server, כולל מאפייני שחזור נתונים.
  • SysTools SQL Recovery Tool — ידוע בשחזור קבצי מסד נתונים SQL פגומים או פגועים (.MDF ו-.NDF) והחזרתם למצב שימושי.
  • Kernel for SQL Database Recovery — כלי זה יכול לשחזר ולהחזיר מסדי נתונים של SQL Server מפגיעות וכיבויים בלתי צפויים.
  • Aryson SQL Database Recovery — כלי נוסף שיכול לתקן ולהחזיר קבצי MDF ו-NDF ב-SQL Server.

סיכום

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

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

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

Source:
https://dzone.com/articles/resolving-sql-database-stuck-in-recovery-mode