גיבוי מסד נתונים

maximon

New member
גיבוי מסד נתונים

אני מעוניין לגבות את המסד נתונים ( sql server 2008 R2) כל 3 שעות במחזוריות של חודש.
הכוונה שהמסד נתונים יגובה בשעות 00:00, 03:00, 06:00, 09:00, 12:00, 15:00, 18:00, 21:00. בכל יממה. ושישמור את הקובץ במשך חודש ולאחר חודש ידרוס אותו ע"י קובץ אחר.

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

אשמח לקבל קוד או הכוונה לזה.

תודה
 

Juventini1

New member
תשובה

האם הגדרת לפני כן Operator?? אם לא הגדת Operator תעשה זאת (תחפש ברשת הוראות, זו פעולה פשוטה), אחרת לא תצליח לשלוח מייל. אם כן הגדרת, אתה צריך להיכנס בהגדרות של הגו'ב אל לשונית ה- Notifications לסמן את Checkbox של Email ואז לבחור ב- Operator שמוגדר לך. ולבחור בצד ימין באילו נסיבות אתה מעוניין לקבל אימייל (אחרי כישלון, הצלחה או הרצה של הג'וב). יש לי שאלה, האם אתה מריץ גיבוי Full כל 3 שעות???
 

maximon

New member
תודה על התשובה, אני אבדוק

לגבי הגיבוי, כן גיבוי Full
 

Juventini1

New member
עוד שאלה...

האם אתה עושה גם גיבויי Dif וגם גיבוי לקובץ ה- Log? (בהנחה שה- Recovery Model שלך הוא Full)
 

Juventini1

New member
תשובה

בכיף, אז ככה, לכל מסד נתונים נתונים יש לפחות שני קבצים(SQL server שומר את מידע בצורה של דפים- Pages):
1. קובץ Data- הוא מכיל את המידע עצמו שמסד הנתונים מכיל.
2.קובץ Log- מכיל את פעולות ה-DML, אלו בעצם פעולות ה- Insert, Update,Delete וגם את שינויי הסכמה השונים (בטבלאות פרוצדורות וכו').
עכשיו, ישנם שלושה סוגי גיבויים:
1. Full- מגבה גם את ה- Data וגם את Log.
2 Differential- מגבה את הדפים שעברו שינוי מאז גיבוי ה-Full האחרון.
3.גיבוי Log- מבצע גיבוי לקובץ ה-Log בלבד. הוא מאפשר לנו לשחזר לנקודה בזמן (Point in time)!!
שאתה מתכנן ומיישם תוכנית גיבוי אתה צריך לחשוב על הרבה מאד משתנים, אבל ישנים שתי נקודות שצריך לחשוב עליהן בצורה מעמיקה יותר והן:
1. צריכת משאבים - גיבוי זו פעולה כבדה יחסית בדגש על גיבוי Full!! לכן בהרבה מאד ארגונים (ובצדק), מבצעים גיבוי Full רק אחת ליום או אחד לשבוע (הכוונה אחת לפרק זמן גדול יחסית), ובנוסף, מבצעים אותו בשעות הלילה או בשעות המערכת הכי פחות פעילה. ואז מבצעים גיבוי תדיר יותר מסוג Dif הוא לא מכביד על המערכת כמו גיבוי Full, על זה מוסיפים גיבוי לקובץ ה- Log שיקנה לנו אפשרות לבצע שיחזור לנקודה בזמן. לשם המחשה אתן דוגמא:
Full אחת לשבוע בלילה, Diff פעמיים ביום, ו-Log כל שעה.
2. איבוד מידע- כמה Data Lose אתה או הארגון שלך מוכנים לספוג?? במצב הנוכחי, מקסימום המידע שאתה יכול לאבד הוא 3 שעות, ואין לך את היכולת לחזור לנקודה בזמן!! אם תבצע גיבוי Log כל שעה אז איבוד המידע שלך הוא מקסימום שעה, ואתה תוכל לשחזר את המידע שלך במקרה הצורך, אל נקודה בזמן לדוגמא יום שני בשעה 13:00.
מקווה שעזרתי.
 

maximon

New member
תודה רבה, עזרת לי המון

ופתחת לי כיוון לחשיבה מחודשת.

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

אני מבין ששחזור מקובץ LOG לוקח יותר זמן, האם אני צודק ?

נניח שאני מגדיר את ה-LOG לפעם בשעה, וFULL לפעם ביום נניח בשתיים בלילה.
אני מעוניין ששם הקובץ יכיל אם שם מסד הנתונים + תאריך + שעה, ופעם בשבוע (או חודש), קובץ הגיבוי ידרוס את הקובץ הקודם.

איך ממשים את זה בפועל ?
 

Juventini1

New member
הדרכים שאני מכיר הן:

אני קצת עסוק כרגע ואין באפשרותי לפרט אבל בגדול אתה יכול למשש את זה בשתי דרכים שונות:
1. בעזרת SSIS Package
2. להכין Maintenance Plan באשף של ה- SQL Server Management Studio.

אפשרות נוספת היא לבצע את הגיבויים בעזרת SQL Agent ואז את המחיקה לבצע באמצעות SSIS Package או כל שיטה אחרת שעולה לך...
מקווה שעזרתי.
 

Juventini1

New member
אני מאמין שכן

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