ایجاد یک نسخه پشتیبان MySQL با استفاده از ابزار XtraBackup

Percona XtraBackup یک ابزار برای پشتیبان گیری از پایگاه داده داغ است خروجی.

هنگام ایجاد یک نسخه پشتیبان از اطلاعات، هیچ جدولی قفل نمی شود و سیستم شما بدون هیچ محدودیتی به کار خود ادامه می دهد.

XtraBackup 2.4 می تواند یک نسخه پشتیبان از جداول ایجاد کند InnoDBXtraDB и 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)

ایجاد یک نسخه پشتیبان MySQL با استفاده از ابزار XtraBackup

دسترسی به حقوق، مجوزها و امتیازات 

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 می تواند راه اندازی شود.

مواد مورد استفاده

اسناد رسمی پرکونا XtraBackup.

منبع: www.habr.com

اضافه کردن نظر