Percona XtraBackup הוא כלי עזר לגיבויים חמים של מסדי נתונים MySQL.
בעת יצירת גיבוי נתונים, אין טבלאות ננעלות, והמערכת שלך ממשיכה לפעול ללא הגבלות כלשהן.
XtraBackup 2.4 יכול ליצור עותקי גיבוי של טבלאות InnoDB, XtraDB и MyISAM על שרתים MySQL 5.11, 5.5, 5.6 ו-5.7, וגם בשרת פרקונה עבור MySQL с XtraDB.
לעבוד עם MySQL 8.x יש להשתמש בגרסה XtraBackup 8.x. המאמר הזה ידבר רק על XtraBackup 2.4.
היתרון העיקרי XtraBackup הוא שכלי זה מתאים ליצירת עותקי גיבוי של נתונים עמוסים מאוד שרתים, כמו גם עבור מערכות עם מספר נמוך של עסקאות.
אם הגודל הכולל של מסדי הנתונים של MySQL הוא משמעותי (עשרות גיגה-בייט), אז כלי השירות הסטנדרטי mysqldump לא יאפשר לך ליצור במהירות עותק גיבוי, ושחזור ה-dump ייקח הרבה זמן.
התקנה
התקנה XtraBackup מהמאגר מַתְאִים פרקונה.
הפעל את הפקודות הבאות ברצף:
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
sudo apt-get update
sudo apt-get install percona-xtrabackup-242. לאחר ההתקנה, הפעל את הפקודה xtrabackup -v. מאז, חשוב לוודא כי השירות פועל כהלכה על השרת. כתוצאה מכך, משהו כזה יוצג על המסך:
xtrabackup: ארגומנטים מזוהים של השרת: - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect - innodbflushlogattrxcommit=0xtrabackup גרסה 2.4.20 מבוססת על שרת MySQL 5.7.26 Linux (x8664) (מזהה גרסה: c8b4056)

זכויות גישה, הרשאות והרשאות
XtraBackup אמור להיות מסוגל:
התחבר לשרת MySQL שלך.
יש זכויות גישה לספרייה דאטאדיר.
בעת יצירת עותק גיבוי, יש זכויות כתיבה לפרמטר שצוין target-dir קָטָלוֹג.
מה זה datadir?
דאטאדיר הוא הספרייה שבה שרת מסד הנתונים MySQL מאחסן נתונים. כל מסדי הנתונים וכל הטבלאות ממוקמים שם. ברוב ההפצות Linux כברירת מחדל, ספרייה זו היא /var/lib/mysql.
מהי ספריית target-dir?
target-dir - זוהי הספרייה שבה יישמר הגיבוי.
משתמש מסד הנתונים צריך את הרשאות הגישה הבאות לטבלאות ולמסדי הנתונים שיגובו:
טען מחדש ונעל שולחנות
לקוח רפליקציה
צור חלל שולחנות
תהליך
SUPER
ליצור
INSERT
לבחור
תְצוּרָה
תְצוּרָה XtraBackup נעשה באמצעות אפשרויות שמתנהגות כמו אפשרויות MySQL סטנדרטיות.
מה זה אומר?
ניתן לציין פרמטרים של תצורה בשורת הפקודה או בקובץ התצורה של DBMS, למשל ב /etc/my.cnf.
כלי השירות XtraBackup קורא מחיצות לאחר ההשקה [Mysqld] и [xtrabackup] מקובצי תצורה של MySQL. זה נעשה כדי שתוכנית השירות תוכל להשתמש בהגדרות של ה-DBMS שלך מבלי לציין באופן ידני את הפרמטרים במהלך כל גיבוי.
למשל, הערך דאטאדיר וכמה פרמטרים InnoDB אנו מקבלים XtraBackup מהתצורה של ה-DBMS שלך.
אם כדי ש-XtraBackup יעבוד אתה רוצה לעקוף את הפרמטרים שנמצאים בסעיף [Mysqld], ואז פשוט ציין אותם בקובץ התצורה בסעיף [xtrabackup]. מכיוון שהם יקראו מאוחר יותר, העדיפות שלהם תהיה גבוהה יותר.
אתה לא צריך להוסיף פרמטרים my.cnf. ניתן לציין את כל הפרמטרים הנדרשים בשורת הפקודה. בדרך כלל הדבר היחיד שניתן למקם בנוחות בקטע [xtrabackup] שלך my.cnf הוא פרמטר target_dir, אשר כברירת מחדל מציינת את הספרייה שבה ימוקמו הגיבויים. אבל זה אופציונלי.
דוגמה לציון הנתיב לספרייה עם עותק גיבוי ב my.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/סקריפט גיבוי
אתה יכול להשתמש בסקריפט הבא כדי ליצור גיבוי:
#!/bin/bash
# Удаляем данные в каталоге бекапа
rm -rf /mysql/backup
# Cоздаём бекап
xtrabackup --user=xtrabackup
--password=xxxx_SECRET_xxxx
--backup
--target-dir=/mysql/backup
# Выполняем подготовку бекапа для развёртывания
xtrabackup --prepare --target-dir=/mysql/backup
# Создаём архив
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-"$(date +%F-%H:%M:%S)".gz /mysql/backupמה קורה במהלך ביצוע סקריפט?
קודם כל, אנו מנקים (מוחקים) את הספרייה שבה נשמור את עותק הגיבוי:
rm -rf /mysql/backup.
לאחר מכן, באמצעות כלי השירות XtraBackup ליצור עותק גיבוי ולשמור אותו /mysql/backup/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backupבעבר יצרנו משתמש ב-MySQL xtrabackup עם ההרשאות הנדרשות. שימוש בפרמטר target-dir אנו מציינים את הספרייה שבה יש לשמור את הגיבוי.
Важный момент!
שימו לב לשורת הסקריפט:
xtrabackup --prepare --target-dir=/mysql/backup
נתוני קטלוג /mysql/גיבוי אינם עקביים עד שהם מבושלים.
העובדה היא ששינויים עשויים להתרחש בזמן העתקת קבצים. מבצע xtrabackup --prepare --target-dir=/mysql/backup הופך את נתוני הגיבוי לעקביים לחלוטין לאורך זמן.
אתה יכול לבצע את פעולת הכנת הנתונים בכל מכונה. אין צורך לעשות זאת בשרת שבו נמצא ה-DBMS המקור. אתה יכול להעתיק את הגיבוי לשרת היעד ולהכין אותו שם.
הדבר האחרון שאנו עושים הוא ליצור ארכיון בו אנו שמים את הגיבוי שלנו:
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backupשחזור גיבוי
לפני שתוכל לשחזר גיבוי לשרת היעד, הנתונים חייבים לעבור שלב הכנה. ראה למעלה כיצד לעשות זאת.
תהליך שחזור הנתונים הוא פשוט מאוד. עליך לחלץ את הגיבוי מהארכיון ולהחליף את הנתונים פנימה דאטאדיר.
כיצד להחליף נתונים ב-datadir?
בואו נבחן שתי אפשרויות.
אפשרות 1
השתמש בכלי השירות XtraBackup. אתה צריך לציין אפשרות --העתק בחזרה.
הפקודה למטה תעביר את הגיבוי אל דאטאדיר שרת יעד:
xtrabackup --copy-back --target-dir=/mysql/backupאפשרות 2
אתה יכול לעשות את זה אחרת, לעשות בלי השירות XtraBackup.
כל מה שאתה צריך לעשות הוא להעתיק את הגיבוי אליו דאטאדיר. אתה יכול לעשות את זה עם cp או rsync.
חשוב להבין שההליך לשחזור גיבוי מסתכם רק בהחלפת תוכן הספרייה דאטאדיר.
לפני שתתחיל לשחזר גיבוי בשרת היעד, עליך:
עצור את שרת MySQL.
נקה תיקייה דאטאדיר או להעביר את תוכנו למקום אחר. קָטָלוֹג דאטאדיר חייב להיות ריק.
לאחר השלמת העברת הנתונים אל דאטאדיר ניתן להפעיל שרת MySQL.
חומרים בשימוש
.
מקור: www.habr.com
