7. • מספר מצומם של שרתים, על כל שרת מספר קבצי
batchוסקריפטים עבור גיבויים, תחזוקה והגדרות
שונות של בסיסי הנתונים.
• בכל סקריפט קיימות הגדרות של שרת
הדואר,השו"ב ושרת התזמון המרכזי ממנו רצים
הסקריפטים.
9. • מספר השרתים הולך ועולה משבוע לשבוע
• כשמקימים שרת חדש, מעתיקים אליו את הסקריפטים
ומשנים את משתני הסביבה השונים
• נוצר מצב של קושי בתחזוקת הסקריפטים:
– כל שינוי הכי קטן דורש מעבר על מאות סקריפטים
– מסקריפט אחד ראשי נוצרו עשרות עותקים וקשה לעקוב
אחריהם
• חוסר תאימות של הסקריפטים השונים ומספרם ההולך
וגדל גורם לכך שזמן יקר הולך לאיבוד
11. • צריך למצוא פתרון אחר לתחזוקה השוטפת שיענה
על הדרישות הבאות:
– יהיה עותק אחד ויחיד שירוץ ממקום מרכזי
– במידת האפשר יאחד את כל הסקריפטים
– יאפשר הוספת שרתים חדשים/גריעת שרתים ישנים
באופן דינאמי וקל
12. – ידרוש מינימום תחזוקה ויאפשר אותה בקלות
– יאפשר גיבויי מקומי של בסיסי הנתונים על השרתים
– ירכז את הלוגים השונים למקום מרכזי
– במידת האפשר יהיה חינמי ולא תלוי במוצר מדף
14. • כלי שורת פקודה של מיקרוסופט, המרחיב את שורת
הפקודה הסטנדרטית ( )cmdומעניק לו יכולות תכנות
נרחבות יותר
• משולב כחלק אינטגרלי בקו המוצרים האחרון כגון: SQL
8002 2008, Exchange 2007, Win 7, Win Server
ועוד
• אידאלי לאוטומציה של תהליכים שונים לניהול ותחזוקת
שרתים ותחנות עבודה
15. ps1 :• סיומת קבצי הסקריפט
שבנויים בצורתcmdlets (command-lets)• מורכב לרוב מ
: למשלverb-noun
–Get-help
–Write-host
–Get-content
–Copy-item
-– על כל פקודה ניתן לקבל עזרה ופירוט ע"י שימוש ב
Get-help cmd-lets -detailed
16. ?Powershell-מה מאפשר ה
'• יכולות תכנות נרחבות כמו שימוש בפונקציות, לולאות, תנאים וכו
foreach ($db in $Srv.Databases)
{
$msg = $db.Name | Out-File $LogFile -Append
$msg = " Status is: "+ $db.Status.ToString() | Out-File
$LogFile -Append
$msg = " Mirorring Status is: "+
$db.MirroringStatus.ToString()| Out-File $LogFile -Append
if ((-not $db.Status.ToString().Equals("Normal")) -and
($db.IsMirroringEnabled) -and ( $db.MirroringStatus -ne 5))
{$DBStatus=1}
}
17. עבודה אל מול שרתים ותחנות עבודה מרוחקות
begin
{
$BckDir = $BckDir.Substring(0,$BckDir.Length -1 )
–replace (":","$")
if (Test-Path "$ServerName$BckDirfull_backup")
{Get-ChildItem
-Path "$ServerName$BckDirfull_backup"
| Remove-Item -Recurse}
return 0
}
19. Powershell-הקריאה ל
במידה ורוצים להפעילpowershell.exe • הפעלת סקריפט מתבצעת ע"י
במידהsqlps.exe , או ע"יPS ולהשתמש באובייקטים סנדרטיים של
.SQL Server ורוצים להשתמש בהרחבות עבור
.• ניתן להרחיב את השפה ע"י קריאה לקובצי קונפיגורציה חיצוניים
:NetApp Snap Manager for SQL Server למשל עבור
• powershell -PSConsoleFile "D:Program
FilesNetAppSnapManager for SQL ServerSmsqlShell.psc1"
"&'%ScriptDir%maintian.ps1' Backup %ServerName% %LogDir%
full %FullBackupDir% 1“
ע"יSnapManager • לאחר הקריאה להרחבה ניתן להפעיל פקודות של
:PS
• New-Backup -LogBkup -bkupsif -verify -truncatelogs -
GenericNaming -retainbackups 7 -retainsnapofsnapinfo 7 | Out-File
$log
20. קישורים מעניינים
• PowerShell wiki:
http://en.wikipedia.org/wiki/Windows_PowerShell
• Why This SQL Server DBA is Learning
Powershell by Ron Dameron
http://www.simple-talk.com/sql/database-
administration/why-this-sql-server-dba-is-
learning-powershell/
• SQLPSX Project on Codeplex
http://sqlpsx.codeplex.com/
23. • מבצע גיבויים
• מבצע בדיקת חיות ותקינות בסיסית של בסיסי הנתונים
בשרת כל 5 דקות
• מוריד ומעלה servicesבשרתים
• מריץ SSIS
• במקרה של כשל, מכין דוח htmlושולח אותו למפעילים
24. • פעם ביום עובר על כל בסיסי הנתונים בשרת ומשנה את
ההגדרות שלהם כך שיתאימו לתקנים ולשיטת העבודה
ברפאל
• פעם בשבוע ביצוע רה-ארגון לבסיסי הנתונים כולל ארגון
ובנייה מחדש של האינדקסים, כיווץ בסיסי הנתונים, עדכון
סטטיסטיקות, מחיקת היסטוריות ועוד
25. • שליחת מיילים במקרה של כשל, כולל צירוף קובץ הלוג של
הפעולה שנכשלה
• מחיקת קבצים ישנים לפי גיל
• ביצוע פעולות מותאמות על שרתים ובסיסי נתונים
מיוחדים/רגישים
• שליחת Trapsלמערכת השו"ב המרכזית ולמערכת התזמון
המרכזית
27. SQL Server Integration Services -SSIS
• מבוססים על טכולוגית ה- .Netומחליפים את ה-
DTSהחל מגרסת 5002 SQL
• משמשים למעבר נתונים בין פלטפורומות שונות
תוך הפעלת לוגיקות שונות על הנתונים במהלך
המעבר
• משמשים גם לביצוע פעולות תחזוקה שונות כמו
גיבויים, רה-ארגון של אינדקסים וכו'.
28. גיבוי באמצעות ssisו-powershell
• לצורך הפתרון בניתי SSISחדש מסוג SQLDBMaint
29. • כל פרמטר שניתן היה – הומר לפרמטר שמתקבל באופן
דינאמי משורת הפקודה. למשל: מיקום הגיבויים,סוג
הגיבויים, זמן שמירת הגיבויים ועוד
30. מבנה הקבצים והתיקיות
• תיקייה מרכזית על השרת הראשי, בה יושב סקריפט
ה- Powershellהבודד
• לכל שרת מנוהל יש תת תיקיה ובתוכה קבצים עם
הגדרות עבור השרת ותיקיית logעבור הלוגים
31. איך עובד התהליך?
• מערכת התזמון המרכזית מפעילה קובץ batchבשעה
מסויימת. בדוגמא הזו נציג גיבוי לוג
32. ?מה בעצם קורה
שנראהdmp_log.bat • הקובץ שמורץ למעשה הוא הקובץ
:כך
• call %~dp0db_env.bat
• sqlps "&'%ScriptDir%maintian.ps1' Backup
%ServerName% %LogDir% log
%logBackupDir% 3"
33. Db_env.bat
מכיל פרמטרים שמשתנים משרת לשרתdb_env-• קובץ ה
Powershell-ונקראים לפני הרצת ה
set ServerName=SERVERNAME
set FullBackupDir=E:mssql_dump
set LogBackupDir=F:mssql_dump
set DiffBackupDir=G:mssql_dump
set LogDir=D:jobsmssql%ServerName%log
set ScriptDir=D:jobsmssql
39. אז מה בעצם הרווחתי?
איחוד של מספר קבצי תחזוקת מערכת לקובץ •
אחד גנרי
ריכוז כל ההרצות למקום מרכזי אחד •
ריכוז כל הלוגים למקום מרכזי אחד •
שמירה על אחידות של בסיסי הנתונים •
תחזוקה קלה, פשוטה ומהירה שחוסכת עשרות •
שעות עבודה
41. PSמאפשר יכולות חדשות לניהול תחנות עבודה ושרתים •
PSמעניק גמישות רחבה יותר (לעומת )...VBS/Batchs •
PSקל לשימוש •
הטמעה מהירה וקלה •
שימוש ב- PSחוסך זמן יקר (תחזוקה, עדכונים...) •