« לכל הכתבות

ניטור גיבויים

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

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

גיבוי מלא

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

גיבוי דיפרנציאלי

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

גיבוי לוג טראנזאקציות (במוד שחזור מלא ובמוד שחזור Bulk Logged בלבד)

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

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

SELECT sd.name,
bs.TYPE,
bs.database_name,
max(bs.backup_start_date) as last_backup
FROM master..sysdatabases sd
Left outer join msdb..backupset bs on rtrim(bs.database_name) = rtrim(sd.name)
left outer JOIN msdb..backupmediafamily bmf ON bs.media_set_id =bmf.media_set_id
Group by sd.name,
bs.TYPE,
bs.database_name
Order by sd.name,last_backup

כדי לראות את כל הגיבויים של בסיס נתונים מסוים (DBA_Info בדוגמה זו) תוכל להריץ את הסקריפט הבא:
SELECT sd.name,
bs.TYPE,
bs.database_name,
bs.backup_start_date as last_backup
FROM master..sysdatabases sd
Left outer join msdb..backupset bs on rtrim(bs.database_name) =rtrim(sd.name)
left outer JOIN msdb..backupmediafamily bmf ON bs.media_set_id =bmf.media_set_id
WHERE sd.name = 'DBA_Info' and bs.backup_start_date > getdate() - 10
Order by sd.name,last_backup

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

Leave a Reply

Your email address will not be published. Required fields are marked *