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-24
2. Після встановлення виконайте команду xtrabackup -v
. Оскільки важливо переконатися, що утиліта коректно працює на сервері. В результаті на екрані відобразиться щось подібне:
xtrabackup: recognized server arguments: — datadir=/var/lib/mysql — tmpdir=/tmp — server-id=1 — logbin=/var/log/mysql/mysql-bin.log — innodbbufferpoolsize=16384M — innodbfilepertable=1 — innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup version 2.4.20 базований на MySQL Server 5.7.26 Linux (x8664) (revision id: c8b4056)
Права доступу, дозволу та привілеї
XtraBackup повинна мати можливість:
-
Підключитись до вашого сервера MySQL.
-
Мати права доступу до каталогу каталог даних.
-
Під час створення резервної копії мати право на запис у вказаний через параметр цільовий реж каталог.
Що таке datadir?
каталог даних - Це каталог, в якому сервер баз даних MySQL зберігає дані. Усі бази даних, усі таблиці знаходяться там. У більшості дистрибутивів Linux за умовчанням таким каталогом є /var/lib/mysql.
Що таке target-dir каталог?
цільовий реж — це каталог, до якого буде збережено резервну копію.
Користувачеві бази даних необхідні такі права доступу до таблиць та баз даних, що підлягають резервному копіюванню:
-
RELOAD та LOCK TABLES
-
REPLICATION CLIENT
-
CREATE TABLESPACE
-
ПРОЦЕС
-
СУПЕР
-
CREATE
-
INSERT
-
ВИБІР
Конфігурація
Конфігурація XtraBackup виконується за допомогою опцій, які поводяться так само, як стандартні параметри MySQL.
Що це означає?
Параметри конфігурації можуть бути вказані або в командному рядку, або у файлі конфігурації СУБД, наприклад в /etc/my.cnf.
Утиліта XtraBackup після запуску зчитує розділи [mysqld] и [xtrabackup] із конфігураційних файлів MySQL. Це робиться для того, щоб утиліта могла використовувати налаштування СУБД без необхідності вказівки параметрів руками при кожному резервному копіюванні.
Наприклад, значення каталог даних та деякі параметри InnoDB XtraBackup отримуємо із конфігурації вашої СУБД.
Якщо для роботи XtraBackup ви хочете перевизначити параметри, що знаходяться у секції [mysqld], то просто вкажіть їх у конфігураційному файлі у секції [xtrabackup]. Оскільки вони будуть прочитані пізніше, їхній пріоритет буде вищим.
Ви можете не додавати жодних параметрів у my.cnf. Усі необхідні параметри можна вказувати в командному рядку. Зазвичай єдине, що може бути зручно розмістити у розділі [xtrabackup] вашого my.cnf - Це параметр цільовий_каталог, який за замовчуванням визначає каталог, до якого будуть розміщені резервні копії. Але це необов'язково.
Приклад вказівки шляху до каталогу з резервною копією 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-bask.
Команда нижче перенесе резервну копію до каталог даних цільового сервера:
xtrabackup --copy-back --target-dir=/mysql/backup
Варіант 2
Можна зробити інакше, обійтися без утиліти XtraBackup.
Все, що вам потрібно - це скопіювати резервну копію в каталог даних. Ви можете зробити це за допомогою cp або rsync.
Важливо розуміти, що процедура відновлення резервної копії зводиться лише до заміни вмісту каталогу каталог даних.
Перед початком відновлення резервної копії на цільовому сервері необхідно:
-
Зупинити MySQL сервер.
-
Очистити папку каталог даних або перенести її вміст до іншого місця. Каталог каталог даних обов'язково має бути порожнім.
Після завершення перенесення даних у каталог даних сервер MySQL можна запустити.
Використовувані матеріали
Джерело: habr.com