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

אתמול, ניסיתי לכתוב פוסט חדש ומשהו שם פשוט לא הסתדר, בסוף החלטתי שהגיע הזמן לשדרג את וורדפרס לגירסה החדשה – 2.8.2. השלב הראשון הוא כמובן גיבוי של מסד הנתונים. לוורדפרס יש תוסף לא רע בכלל בשם WordPress Database Backup שמאפשר לגבות את כל מסד הנתונים של וורדפרס, וכולל מספר אפשרויות נחמדות כמו האופציה לבחור את טבלאות התוספים אותם רוצים לגבות כמו גם אפשרות להגדיר שתגובות ספאם לא יגובו (מקטין את נפח הגיבוי). בנוסף לכך, אפשר להגדיר גיבוי תקופתי שישמר על השרת או ישלח אל תיבת הדואר שלכם.

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

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

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

mysqldump --opt -u user -h host -p dbname | gzip -9 > backup_db.sql.gz

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

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

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

DBNAME= name
DBPASS= password
DBUSER= user
DBSERVER= server

EMAIL="[email protected]"

mysqldump --opt -u $DBUSER -h $DBSERVER -p$DBPASS $DBNAME | gzip -9 > backup_db.sql.gz
DATE=`date +%Y%m%d` ; mv backup_db.sql.gz $DBNAME-backup-$DATE.sql.gz
echo 'Blog Name:Your mySQL Backup is attached' | mutt -a $DBNAME-backup-$DATE.sql.gz $EMAIL -s "MySQL Backup"
rm $DBNAME-backup-$DATE.sql.gz

חשוב לשים לב שכתובת המייל מופיעה במרכאות בעוד ששאר הנתונים לא. אם לא ברור לכם מה הפרטים הנדרשים הרי שהם מופיעים בקובץ ה wp_config.php של הבלוג.

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

לדרג את הפוסט
0

Comments

2 תגובות על “גיבוי מסד נתונים”

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

  2. ניצן,

    למיטב זכרוני, כל הטבלאות של וורדפרס הן מסוג MyISAM ולא מסוג InnoDB. זה אומר שאם יש לך גישת SSH, אתה יכול לבצע גיבוי על ידי כך שאתה פשוט מעתיק את הקבצים הבינאריים של המידע של MySQL. כמובן, זה נכון רק אם במסגרת גישת ה- SSH יש גם גישה אל המקום הזה. אפשר לבצע את זה גם עם טבלאות מסוג InnoDB, רק שזה לא ממש מומלץ, מסיבות שונות.

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

    מקום טוב לחפש את הנתונים האלה, הוא בתוך var/lib/mysql

    בהצלחה!
    דותן

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *