הקדמה
לאחר שהגעת לתוכנית שיקום למרכיבים השונים של היישום שלך, יש להקים את מערכת הגיבוי הדרושה לתמיכה בה. המדריך הזה יתמקד על שימוש ב-Bacula כפתרון לגיבויים. היתרון בשימוש במערכת גיבוי מלאה כמו Bacula הוא שהיא נותנת לך שליטה מלאה על מה שאתה גובה ומשחזר ברמת הקובץ הבודד, ותוכל לתזמן גיבויים ושיחזורים לפי מה שהוא הכי טוב עבורך.
פתרונות כמו גיבויי DigitalOcean Droplet (תמונות מצב של ה-Droplet שלך בשלמות) קלים להקנה ועשויים להיות מספיקים לצרכיך, אם אתה נזקק רק לגיבויים שבועיים. אם בוחרת בגיבויים של DigitalOcean, יש לוודא שתקין גיבויים חמים של מסד הנתונים שלך על-ידי עקיבת החלק יצירת גיבויים חמים של מסד הנתונים שלך.
בחלק זה של ההדרכה, נקבע את Bacula כדי לשמור על גיבויים יומיים של הנדרשי גיבוי של השרתים המהווים את ההקמה של היישום שלך (db1, app1, app2 ו-lb1), שהוגדרו מוקדם בתכנית השחזור שלנו – בעיקרון, זו הדרכה שמראה לך איך להשתמש ב-Bacula כדי ליצור גיבויים של ערימת LAMP. נשתמש גם ב-Percona XtraBackup כדי ליצור גיבויים חמים של בסיס הנתונים MySQL שלך. לבסוף, נשתמש ב-rsync כדי ליצור עותק של הגיבויים שלך על שרת במרכז נתונים מרוחק. זה יוסיף שני שרתים להקמה שלך: backups ו-remotebackups (ממוקם במרכז נתונים נפרד).
בואו נתחיל.
התקנת Bacula על שרת הגיבויים
התקן את Bacula על שרת הbackups שלך על ידי עקביית ההדרכה הזו: איך להתקין שרת Bacula על Ubuntu 14.04.
אז תעמיד אחר החלק ארגון הגדרות של באקולה של השרת של ההדרכה הזו: איך לשמיר את שרת אובונטו 14.04 בעזרת באקולה. תזדקק לשם שם המנהל של באקולה בזמן ההגדרה של הלקוחות של באקולה (על השרתים שאתה רוצה לשמור). עצור כשתגיע להתקנת והגדרת לקוח באקולההחלק.
שימו לב שאנחנו נשתמש באגף הקבצים המרוחקים לכל העבדות השומרות שאנחנו נוציא. עם זאת, אולי תרצו לשנות כמה הגדרות לפני שימוש.
התקנת לקוח באקולה על כל השרתים
התקנה של הלקוח של באקולה על כל השרתים שאתה רוצה לשמור (db1, app1, app2, וlb1) על ידי עיצוב החלק התקנת והגדרת לקוח באקולהשל ההדרכה הזו: איך לשמיר את שרת אובונטו 14.04 בעזרת באקולה. עצור כשתגיע להוספת קבצים (של השרת)החלק.
תשתמשו בשם הFileDaemon (בדרך כלל שם המארח מוסף ב "-fd") ובסיסמת הדירקטור (הסיסמה ששרת Bacula ישתמש בה להתחבר לכל לקוח) מתוך הקובץ bacula-fd.conf
על כל שרת.
הוספת לקוחות Bacula לשרת הגיבוי
בשרת backups, שרת Bacula, הוסיפו משאב לקוח לקובץ /etc/bacula/conf.d/clients.conf
עבור כל שרת שם התקנתם את לקוח Bacula.
פתחו את הקובץ clients.conf
:
הנה דוגמה של הגדרת משאב לקוח עבור שרת הבסיס נתונים, db1. שימו לב שערך של Name צריך להתאים לשם של משאב הFileDaemon והסיסמה צריכה להתאים לסיסמת משאב הDirector, על השרת הלקוח—הערכים האלה נמצאים ב/etc/bacula/bacula-fd.conf
על כל שרת לקוח Bacula:
Client {
Name = db1-fd
Address = db1.nyc3.example.com
FDPort = 9102
Catalog = MyCatalog
Password = "PDL47XPnjI0QzRpZVJKCDJ_xqlMOp4k46" # password for Remote FileDaemon
File Retention = 30 days # 30 days
Job Retention = 6 months # six months
AutoPrune = yes # Prune expired Jobs/Files
}
יצירת משאב לקוח דומה עבור כל שרת לקוח Bacula הנותרת. בדוגמתנו, יהיו ארבעה משאבי לקוח כשנגמר הכל: db1-fd, app1-fd, app2-fd, וlb1-fd. זה עורך את הדירקטור Bacula על השרת backups כך שיהיה מסוגל להתחבר ללקוח Bacula על כל שרת…
שמור ויצא.
פרטים נוספים בנוגע לחלק זה נמצאים ב- התקנה והגדרה של לקוח Bacula ב- הדרכה כיצד לגבות עמדת Ubuntu עם Bacula.
יצירת גיבויים חמים של בסיס הנתונים שלך
כדי להבטיח שניצור גיבויים עיקביים (כלומר, שניתן להשתמש בהם) של בסיס הנתונים הפעיל שלנו, חייבים להיזהר מאוד. דרך פשוטה וEfektive ליצירת גיבויים חמים עם MySQL היא להשתמש ב- Percona XtraBackup.
התקנת Percona XtraBackup
בשרת הבסיס הנתונים שלך, db1, התקן והגדר Percona XtraBackup על פי ההדרכה הזו: כיצד ליצור גיבויים חמים של בסיסי נתונים MySQL עם Percona XtraBackup על Ubuntu 14.04. עצור כשאתה מגיע לחלק ביצוע גיבוי חם מלא.
יצירת סקripט ל XtraBackup
Percona XtraBackup מוכן ליצור גיבויים חמים לבסיס הנתונים שלך של MySQL, שבסוף ייגברו עליהם Bacula (או DigitalOcean Backups), אבל הגיבויים החמים צריכים להיות מתוודדים בדרך מסויימת. אנחנו ניצור את הפתרון הפשוט ביותר: סקript באש ומשימה cron.
יצירו סקript בשם run_extra_backup.sh
בתוך /usr/local/bin
:
הוסף את הסקript הבא. והודיע לעצמך להחליף את המשתמש והסיסמה עם מה שהתקנת בזמן ההתקנת של XtraBackup:
#!/bin/bash
# pre xtrabackup
chown -R mysql: /var/lib/mysql
find /var/lib/mysql -type d -exec chmod 770 "{}" \;
# מחיקת הגיבוי המלא הקיים
rm -r /data/backups/full
# xtrabackup create backup
innobackupex --user=bkpuser --password=bkppassword --no-timestamp /data/backups/full
# xtrabackup prepare backup
innobackupex --apply-log /data/backups/full
שמור וסיים. הפעם הסקript הזה (עם הריסמה מועמדת) ימחיק את הגיבוי הקיים של XtraBackup ב /data/backups/full
וייצור גיבוי מלא חדש. נוסף על יצירת גיבויים עם XtraBackup אפשר למצוא עוד פרטים בחלק גיבוי חם מלא של המדריך האקדמי ל XtraBackup.
הפעם את הסקript ליושם:
לכדי עשיית גיבוי מתאימה של בסיס הנתונים שלנו, עלינו להריץ את סקריפט XtraBackup ולסיים אותו לפני שבאקולה ינסה לגבות את שרת בסיס הנתונים. פתרון טוב הוא להגדיר את משימת הגיבוי של באקולה כך שתריץ את הסקריפט כـ "סקריפט קדם-גיבוי", אך נבחר להשתמש במשימת cron כדי לשמור על פשטות.
צור קובץ תצורת cron (קבצים ב־/etc/cron.d
מתווספים ל־crontab של ה־root):
הוסף את המשימת cron הבאה:
30 22 * * * root /usr/local/bin/run_xtrabackup.sh
זה מתזמן את הסקריפט להפעלה כ־root כל יום ב־10:30 בערב (שעה ה־22, דקת ה־30). בחרנו את השעה הזו כיוון שבאקולה כרגע מתוזמן לרצות את משימות הגיבוי שלו ב־11:05 בערב יוםיים — נדון בהתאם זאת מאוחר יותר. זה משאיר לסקריפט XtraBackup 35 דקות להשלמה.
עכשיו שהגיבויים החמים של בסיס הנתונים מכוונים, בואו נביט ב־FileSets של באקולה.
הגדרת FileSets של באקולה
באקולה יוצרים גיבוי עבור קבצים שסומכים בקבצים המיון האלה שקשורים לעבודות הגיבוי שיבצעו את הגיבוי. החלק הזה יסביר את יצירת קבצים המיון האלה שכוללים את הגיבויים הדרשים שאנחנו איתגרנו בתוכניות השיקום שלנו. עוד פרטים על הוספת קבצים המיון לבאקולה נמצאים בחלק הוסף קבצים מיון (שרת) של הסדנת באקולה.
על שרת הגיבויים שלך, פתח את הקובץ filesets.conf
:
קבצים המיון של שרת הבקפים
הגיבויים הדרשים עבור שרת הבסיס הנתונים שלנו, לפי תוכנית השיקום של שרת הבסיס הנתונים, מכילים:
- בסיס נתונים MySQL: מועץ גיבוי נוסף נוצר על-ידי הסкрипט האקסטרבקיפ שלנו ב
/data/backups/full
, ביום רביעי ב-21:30 - הגדרות בסיס נתונים MySQL: ממוקמות ב
/etc/mysql
אנחנו גם יכולים לכלול את הסקריpt האקסטרבקיפ: /usr/local/bin/run_xtrabackup.sh
, והקורון הקשור אליו.
עם הגיבויים הדרשים שלנו במחשבה, אנחנו נוספים את קבצים המיון "בסיס נתונים MySQL" לתצורת הבאקולה שלנו:
FileSet {
Name = "MySQL Database"
Include {
Options {
signature = MD5
compression = GZIP
}
File = /data/backups
File = /etc/mysql/my.cnf
File = /usr/local/bin/run_xtrabackup.sh
File = /etc/cron.d/xtrabackup
}
Exclude {
File = /data/backups/exclude
}
}
עכשיו, בואו נעבור לקבצים המיון של שרת היישומים.
סט קבצים שרת היישום
הגיבויים הנדרשים עבור שרתי היישום שלנו, לפי תכנית השיקום של שרתי היישום שלנו, כוללים:
- קבצי היישום: נמצאים ב־
/var/www/html
בדוגמתנו
עם גיבויים הנדרשים בחשבון, נוסיף את "Apache DocumentRoot" FileSet לתצורת Bacula שלנו:
FileSet {
Name = "Apache DocumentRoot"
Include {
Options {
signature = MD5
compression = GZIP
}
File = /var/www/html
}
Exclude {
File = /var/www/html/exclude
}
}
אולי תרצו גם לכלול קובץ הגדרות הפורטים של Apache, אבל הוא קל להחליף.
כעת נעבור לסט קבצים שרת המטלה.
סט קבצים שרת המטלה
הגיבויים הנדרשים עבור שרתי המטלה שלנו, לפי תכנית השיקום של שרתי המטלה שלנו, כוללים:
- תעודת SSL (PEM) וקבצים קשורים: נמצאים ב־
/root/certs
בדוגמתנו - קובץ הגדרות HAProxy: נמצא ב־
/etc/haproxy
עם גיבויים הנדרשים בחשבון, נוסיף את "Apache DocumentRoot" FileSet לתצורת Bacula שלנו:
FileSet {
Name = "SSL Certs and HAProxy Config"
Include {
Options {
signature = MD5
compression = GZIP
}
File = /root/certs
File = /etc/haproxy
}
Exclude {
File = /root/exclude
}
}
שמור וצא.
עכשיו מערכות הקבצים שלנו מוגדרות. הבה נתקדם ליצירת משימות הגיבוי של Bacula שישתמשו במערכות הקבצים האלו.
יצירת משימות גיבוי של Bacula
ניצור משימות גיבוי של Bacula שתפעל ותיצור גיבויים של שרתינו.
יצירת קובץ jobs.conf
בתוך /etc/bacula/conf.d
:
משימת גיבוי שרת בסיס נתונים
למשימת גיבוי שרת הבסיס הנתונים שלנו, ניצור משימה חדשה בשם "גיבוי db1". הדבר החשוב כאן הוא שנציין את הלקוח הנכון (db1-fd) ואת המערכת קבצים (MySQL Database):
Job {
Name = "Backup db1"
JobDefs = "DefaultJob"
Client = db1-fd
Pool = RemoteFile
FileSet="MySQL Database"
}
עכשיו נגדיר את משימות גיבוי שרת היישום שלנו.
משימות גיבוי שרת היישום
לשרתי היישום שלנו, ניצור שתי משימות גיבוי בשם "גיבוי app1" ו"גיבוי app2". הדבר החשוב כאן הוא שנציין את הלקוחות הנכונים (app1-fd ו-app2-fd) ואת המערכת קבצים (Apache DocumentRoot).
משימת App1:
Job {
Name = "Backup app1"
JobDefs = "DefaultJob"
Client = app1-fd
Pool = RemoteFile
FileSet="Apache DocumentRoot"
}
עבודת App2:
Job {
Name = "Backup app2"
JobDefs = "DefaultJob"
Client = app2-fd
Pool = RemoteFile
FileSet="Apache DocumentRoot"
}
עכשיו אנחנו נוגדל עבודת שומר על מנת מעבדת ההתנגדות הזו.
עבודת שמירת מעבדת ההתנגדות
עבור עבודת השמירה של מעבדת ההתנגדות שלנו, אנחנו ניצור עבודה חדשה בשם "שמירת lb1". הדבר החשוב כאן הוא שאנחנו מציעים את הלקוח (lb1-fd) הנכון ואת התערוכת הקבצים (סימנים SSL והגדרות HAProxy):
Job {
Name = "Backup lb1"
JobDefs = "DefaultJob"
Client = lb1-fd
Pool = RemoteFile
FileSet="SSL Certs and HAProxy Config"
}
שמירה ויוצאה.
עכשיו העבודות השמירה שלנו מוגדרות. הצעד האחרון הוא להפעיל מחדש את המנהל העליון של Bacula.
הפעלת מנהל העליון Bacula
על השרת השמירה, תהפעיל מחדש את מנהל העליון Bacula כדי להביא להיות מובילות כל השינויים שלנו:
בנקודה זו, תרצה לבדוק את החיבורים של הלקוחות שלך ואת משימות הגיבוי, שכולן כוסת בהדרכה איך לגבות שרת עם Bacula. ההדרכה הזו כן כוסת איך לשחזר גיבויים של Bacula. שים לב ששחזור בסיס נתונים MySQL ידרוש ממך לעקוב אחר הצעד ביצוע שחזור גיבוי בהדרכת Percona XtraBackup.
סקירת לו"ז גיבויים
תזמון גיבויים Bacula ניתן לשינוי על ידי שינוי הגדרות מנהל Bacula (/etc/bacula/bacula-dir.conf
). כל משימות הגיבוי שיצרנו משתמשות ב"DefaultJob" JobDef, שמשתמש בתזמון "WeeklyCycle", המוגדר כך:
- גיבוי מלא ביום ראשון הראשון של החודש בשעה 23:05
- גיבויים דיפרנציאליים בכל ימי ראשון האחרים בשעה 23:05
- גיבויים נכספים בימים האחרים, מיום שני עד שישי, בשעה 23:05
תוכל לאשר זאת על ידי שימוש במסוף Bacula כדי לבדוק את מצב מנהל התכניות. הוא אמור להציג את כל משימות התכניות שלך:
Director Status — Scheduled JobsScheduled Jobs:
Level Type Pri Scheduled Name Volume
===================================================================================
Incremental Backup 10 20-May-15 23:05 BackupLocalFiles MyVolume
Incremental Backup 10 20-May-15 23:05 Backup lb1 Remote-0002
Incremental Backup 10 20-May-15 23:05 Backup app2 Remote-0002
Incremental Backup 10 20-May-15 23:05 Backup app1 Remote-0002
Incremental Backup 10 20-May-15 23:05 Backup db1 Remote-0002
חבר עצמך לשנות או להוסיף ללו זמן של משימות הגיבוי שלך. יהיה הגיוני לשנות את לו הזמן של שרתי היישום כך שיקרו באותו הזמן שבו מתבצע スクリプט של Percona XtraBackup (10:30 בערב). זה ימנע מן ההתנגשות בין גיבויי היישום והמסד נתונים.
הקמת גיבוי מרוחק
עכשיו אנחנו מוכנים להקים שרת מרוחק שישמר עותקים של גיבויי Bacula שלנו. שרת זה צריך להיות באזור גאוגרפי נפרד כך שתהיה לך עותק של הגיבויים הקריטיים שלך אפילו אם תקרה אסון במרכז הנתונים הייצורי שלך. בדוגמנו, נשתמש באזור San Francisco (SFO1) של DigitalOcean עבור שרת הremotebackups שלנו.
נסביר שיטה פשוטה לשלוח את הגיבויים שלנו משרת הbackups שלנו אל שרת הremotebackups שלנו באמצעות מפתחות SSH פומביים, rsync ו-cron.
בשרת הremotebackups שלך, תיצור משתמש שישמש להתחברות rsync.
בעוד, בשרת הגיבורים, יצירה של זירת מפתח שלא דורשת סיסמה בתור השרת. התקן את המפתח הציבורי על המשתמש המרוחקים שניצרת לאחרונה. זה מתואר במדריך שלנו איך להגדיר מפתחים SSH.
על השרת הגיבורים, כתוב צו לשימוש ב rsync שיעתף את נתוני הגיבורים (/bacula/backup
) למקום מסויים על השרת המרוחקים. שימוש ב rsync מתואר במדריך שלנו איך להשתמש ב rsync. הצו יכול להיראו משהו כמו זה:
תוסף את הצו לשטף, כמו /usr/local/bin/rsync_backups.sh
, והפך אותו ליכול להיות ביצועי.
לבסוף, תרצה להגדיר עבודת cron שתבצע rsync_backups.sh
בתור השרת, אחרי שהעבודות של הגיבורים בד "" כ מסתיימות. זה מתואר במדריך שלנו איך לתת למשימות רגילות להיות מסודרות בעזרת cron.
אחרי שתקבע את כל זה, ודא שיש על השרת המרוחק משהו שמתרגם להעתקים של הגיבורים שלך ביום הבא.
דיברונות נוספים
אחרים לא מדברו עברית עבר הקצבן של האפלICATION שלך. אתם מצויינים בכיסורי הקצבן שלך ואתם בטוב מדינה למצוא את מספר המגודלים של הקצבן. אתם בטוב מדינה למצוא את מספר המגודלים של הקצבן.
במידה שמצוא את מספר המגודלים של הקצבן אתם מצויים בטוב מדינה למצוא את מספר המגודלים של הקצבן. אתם בטוב מדינה למצוא את מספר המגודלים של הקצבן.
מספר המגודלים של הקצבן הוא מספר המגודלים של הקצבן. אתם בטוב מדינה למצוא את מספר המגודלים של הקצבן. אתם בטוב מדינה למצוא את מספר המגודלים של הקצבן.
מספר המגודלים של הקצבן הוא מספר המגודלים של הקצבן. אתם בטוב מדינה למצוא את מספר המגודלים של הקצבן. אתם בטוב מדינה למצוא את מספר המגודלים של הקtzבן. מספר המגודלים של הקtzבן הוא מספר המגודלים של הקtzבן. אתם בטוב מדינה למצוא את מספר המגודלים של הקtzבן. אתם בטוב מדינה למצוא את מספר המגודלים של הקtzבן.
Source:
https://www.digitalocean.com/community/tutorials/building-for-production-web-applications-backups