אנדרואיד

כיצד לגבות ולשחזר מסדי נתונים של MySQL באמצעות

Concertgebouworkest - Symphony No. 7 - Beethoven

Concertgebouworkest - Symphony No. 7 - Beethoven

תוכן עניינים:

Anonim

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

קבצי הגיבוי שנוצרו על ידי כלי השירות mysqldump הם בעצם קבוצה של הצהרות SQL בהן ניתן להשתמש כדי ליצור מחדש את בסיס הנתונים המקורי. הפקודה mysqldump יכולה גם ליצור קבצים בפורמט CSV ו- XML.

אתה יכול גם להשתמש בכלי השירות mysqldump כדי להעביר את מסד הנתונים MySQL לשרת MySQL אחר.

תחביר פיקוד של Mysqldump

לפני שנבדוק כיצד להשתמש בפקודה mysqldump, נתחיל בבחינת התחביר הבסיסי.

ביטויי השירות של mysqldump לובשים את הטופס הבא:

mysqldump > file.sql

  • options - file.sql האפשרויות mysqldump.sql - file.sql ה- dump (הגיבוי)

כדי להשתמש בפקודה mysqldump, שרת MySQL חייב להיות נגיש ופועל.

גיבוי מסד נתונים יחיד של MySQL

מקרה השימוש הנפוץ ביותר של כלי mysqldump הוא גיבוי מסד נתונים יחיד.

לדוגמה, כדי ליצור גיבוי של מסד database_name בשם database_name באמצעות root המשתמש ושמור אותו בקובץ בשם database_name.sql , תפעיל את הפקודה הבאה:

mysqldump -u root -p database_name > database_name.sql

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

mysqldump database_name > database_name.sql

גיבוי מספר מסדי נתונים של MySQL

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

mysqldump -u root -p --databases database_name_a database_name_b > databases_a_b.sql

הפקודה שלמעלה תיצור קובץ dump שמכיל את שני מסדי הנתונים.

גיבוי של כל מסדי הנתונים של MySQL

השתמש --all-databases כדי לגבות את כל מסדי הנתונים MySQL:

mysqldump -u root -p --all-databases > all_databases.sql

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

גבה את כל מסדי הנתונים של MySQL כדי להפריד בין קבצים

כלי השירות mysqldump אינו מספק אפשרות לגיבוי של כל מסדי הנתונים כדי להפריד קבצים, אך אנו משיגים זאת בקלות באמצעות לולאת BasH FOR פשוטה:

for DB in $(mysql -e 'show databases' -s --skip-column-names); do mysqldump $DB > "$DB.sql"; done

הפקודה שלמעלה תיצור קובץ dump נפרד לכל בסיס נתונים המשתמש בשם בסיס הנתונים כשם הקובץ.

צור גיבוי מסדי נתונים של MySQL דחוס

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

mysqldump database_name | gzip > database_name.sql.gz

צור גיבוי באמצעות חותמת זמן

mysqldump database_name > database_name-$(date +%Y%m%d).sql

הפקודה שלמעלה תיצור קובץ בתבנית הבאה database_name-20180617.sql

שחזור מזבלה של MySQL

אתה יכול לשחזר dump MySQL באמצעות הכלי mysql . התחביר הכללי של הפקודה הוא כדלקמן:

mysqld database_name < file.sql

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

בדוגמה הבאה הפקודה הראשונה תיצור בסיס נתונים בשם database_name ואז היא תייבא לתוכו את ה- database_name.sql :

mysql -u root -p -e "create database database_name"; mysql -u root -p database_name < database_name.sql

שחזר מסד נתונים יחיד של MySQL ממזבלה מלאה של MySQL

mysql --one-database database_name < all_databases.sql

ייצא וייבא מסד נתונים MySQL בפקודה אחת

במקום ליצור קובץ dump ממסד נתונים אחד ואז לייבא את הגיבוי למסד נתונים אחר של MySQL, תוכלו להשתמש בסרט האחד הבא:

mysqldump -u root -p database_name | mysql -h remote_host -u root -p remote_database_name

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

גיבויים אוטומטיים עם Cron

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

כדי להגדיר גיבויים אוטומטיים של מסד נתונים MySQL באמצעות cronjob, בצע את הצעדים שלהלן:

  1. צור קובץ בשם .my.cnf בספריה הביתית למשתמש שלך:

    sudo nano ~/.my.cnf

    העתק והדבק את הטקסט הבא בקובץ.my.cnf.

    user = dbuser password = dbpasswd

    אל תשכח להחליף את dbuser ו- dbpasswd במאגר המשתמש ובסיסמה של המשתמש.

    הגבל את ההרשאות של קובץ האישורים כך שרק למשתמש שלך תהיה גישה אליו:

    chmod 600 ~/.my.cnf

    צור ספרייה לאחסון הגיבויים:

    mkdir ~/db_backups

    פתח את קובץ ה- crontab של המשתמש שלך:

    crontab -e

    הוסף את משימת ה- cron הבאה שתיצור גיבוי של שם מסד הנתונים mydb כל יום בשעה 03:00:

    0 3 * * * /usr/bin/mysqldump -u dbuser mydb > /home/username/db_backups/mydb-$(date +%Y%m%d).sql

    אל תשכח להחליף את שם המשתמש בשם המשתמש שלך בפועל.

אתה יכול גם ליצור עוד עבירה מחיקה למחיקת כל הגיבויים מעל גיל 30 יום:

find /path/to/backups -type f -name "*.sql" -mtime +30 -delete

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

סיכום

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

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

גיבוי מריאדב