Percona XtraBackup یک ابزار برای پشتیبان گیری از پایگاه داده داغ است خروجی.
هنگام ایجاد یک نسخه پشتیبان از اطلاعات، هیچ جدولی قفل نمی شود و سیستم شما بدون هیچ محدودیتی به کار خود ادامه می دهد.
XtraBackup 2.4 می تواند یک نسخه پشتیبان از جداول ایجاد کند InnoDB, XtraDB и MyISAM روی سرورها MySQL 5.11، 5.5، 5.6 و 5.7و همچنین روی سرور پرکونا برای خروجی с 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-24
2. پس از نصب، دستور را اجرا کنید 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 خود متصل شوید.
-
حق دسترسی به دایرکتوری را داشته باشید datadir.
-
هنگام ایجاد یک نسخه پشتیبان، حقوق نوشتن پارامتر مشخص شده را داشته باشید هدف- کارگردان کاتالوگ
datadir چیست؟
datadir دایرکتوری است که در آن سرور پایگاه داده است خروجی داده ها را ذخیره می کند. همه پایگاه های داده، همه جداول وجود دارد. در اکثر توزیع های لینوکس، دایرکتوری پیش فرض است /var/lib/mysql.
فهرست target-dir چیست؟
هدف- کارگردان - این دایرکتوری است که نسخه پشتیبان در آن ذخیره می شود.
کاربر پایگاه داده به حقوق دسترسی زیر به جداول و پایگاه های داده برای پشتیبان گیری نیاز دارد:
-
بارگذاری مجدد و قفل کردن جداول
-
RePLICATION CLIENT
-
فضای جدول ایجاد کنید
-
روند
-
SUPER
-
ايجاد كردن
-
INSERT
-
انتخاب کنید
پیکربندی
پیکربندی XtraBackup با استفاده از گزینه هایی انجام می شود که مانند گزینه های استاندارد MySQL عمل می کنند.
این به چه معناست؟
پارامترهای پیکربندی را می توان در خط فرمان یا در فایل پیکربندی DBMS مشخص کرد، به عنوان مثال در /etc/my.cnf.
ابزار XtraBackup پس از راه اندازی پارتیشن ها را می خواند [mysqld] и [xtrabackup] از فایل های پیکربندی MySQL. این کار به این دلیل انجام می شود که ابزار بتواند از تنظیمات DBMS شما بدون نیاز به تعیین دستی پارامترها در طول هر پشتیبان استفاده کند.
به عنوان مثال، ارزش datadir و برخی پارامترها 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/پشتیبان گیری/:
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.
چگونه داده ها را در datadir جایگزین کنیم؟
بیایید دو گزینه را در نظر بگیریم.
گزینه 1
از ابزار استفاده کنید XtraBackup. شما باید یک گزینه را مشخص کنید -- کپی پشت.
دستور زیر پشتیبان را به datadir سرور هدف:
xtrabackup --copy-back --target-dir=/mysql/backup
گزینه 2
شما می توانید آن را متفاوت انجام دهید، بدون ابزار XtraBackup.
تنها کاری که باید انجام دهید این است که نسخه پشتیبان را در آن کپی کنید datadir. شما می توانید این کار را با cp یا rsync.
درک این نکته مهم است که روند بازیابی نسخه پشتیبان فقط به جایگزینی محتویات فهرست خلاصه می شود. datadir.
قبل از شروع بازیابی یک نسخه پشتیبان در سرور مورد نظر، باید:
-
سرور MySQL را متوقف کنید.
-
پوشه را پاک کنید datadir یا محتویات آن را به مکان دیگری منتقل کنید. کاتالوگ datadir باید خالی باشد
پس از تکمیل انتقال اطلاعات به datadir سرور MySQL می تواند راه اندازی شود.
مواد مورد استفاده
منبع: www.habr.com