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 няма да ви позволи бързо да създадете резервно копие и възстановяването на дъмпа ще отнеме много време.
Инсталация
Инсталация 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=0 xtrabackup версия 2.4.20 базирана на MySQL сървър 5.7.26 Linux (x8664) (идентификатор на редакция: c8b4056)

Права за достъп, разрешения и привилегии
XtraBackup трябва да може да:
Свържете се с вашия MySQL сървър.
Имате права за достъп до директорията е данни.
Когато създавате резервно копие, имате права за запис на посочения параметър целева реж каталог.
Какво е datadir?
е данни е директорията, където се намира сървърът на базата данни MySQL съхранява данни. Всички бази данни, всички таблици се намират там. В повечето дистрибуции Linux По подразбиране тази директория е /var/lib/mysql.
Какво е целева директория?
целева реж - Това е директорията, в която ще бъде запазен архивът.
Потребителят на базата данни се нуждае от следните права за достъп до таблиците и базите данни, които трябва да бъдат архивирани:
ПРЕЗАЗРЕДЕТЕ и ЗАКЛЮЧЕТЕ МАСИТЕ
КЛИЕНТ ЗА РЕПЛИКАЦИЯ
СЪЗДАВАНЕ НА ТАБЛИЧНО ПРОСТРАНСТВО
ПРОЦЕС
SUPER
CREATE
INSERT
МАРКИРАЙ
Конфигурация
Конфигурация XtraBackup направено с помощта на опции, които се държат по същия начин като стандартните MySQL опции.
Какво означава това?
Конфигурационните параметри могат да бъдат зададени или в командния ред, или в конфигурационния файл на СУБД, например в /etc/my.cnf.
Помощната програма XtraBackup чете дялове след стартиране [Mysqld] и [xtrabackup] от конфигурационните файлове на MySQL. Това се прави, за да може помощната програма да използва настройките на вашата СУБД, без да се налага да задавате параметрите ръчно по време на всяко архивиране.
Например стойността е данни и някои параметри InnoDB Получаваме XtraBackup от конфигурацията на вашата СУБД.
Ако за да работи 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/backup не са последователни, докато не се сварят.
Факт е, че могат да възникнат промени по време на копиране на файлове. Операция xtrabackup --prepare --target-dir=/mysql/backup прави архивните данни идеално последователни във времето.
Можете да извършите операцията по подготовка на данни на всяка машина. Не е необходимо да правите това на сървъра, където се намира изходната СУБД. Можете да копирате резервното копие на целевия сървър и да го подготвите там.
Последното нещо, което правим, е да създадем архив, в който да поставим резервното си копие:
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backupВъзстановяване на резервно копие
Преди да можете да възстановите резервно копие на целевия сървър, данните трябва да преминат през подготвителна фаза. Вижте по-горе как да направите това.
Процесът на възстановяване на данни е много прост. Трябва да извлечете резервното копие от архива и да замените данните в него е данни.
Как да замените данни в datadir?
Нека разгледаме два варианта.
Опция 1
Използвайте помощната програма XtraBackup. Трябва да посочите опция --copy-back.
Командата по-долу ще прехвърли архива към е данни целеви сървър:
xtrabackup --copy-back --target-dir=/mysql/backupОпция 2
Можете да го направите по различен начин, без помощната програма XtraBackup.
Всичко, което трябва да направите, е да копирате архива в е данни. Можете да направите това с cp или Rsync.
Важно е да разберете, че процедурата за възстановяване на резервно копие се свежда до просто заместване на съдържанието на директорията е данни.
Преди да започнете да възстановявате резервно копие на целевия сървър, трябва:
Спрете MySQL сървъра.
Изчистване на папката е данни или преместете съдържанието му на друго място. Каталог е данни трябва да е празен.
След завършване на прехвърлянето на данни към е данни MySQL сървърът може да бъде стартиран.
Използвани материали
.
Източник: www.habr.com
