MariaDB, Mariabackup резервне копіювання та відновлення, частина 2

MariaDB, Mariabackup резервне копіювання та відновлення, частина 2

Колеги всім привіт.

У минулій статті я показував як встановлювати Mariabackup. У сьогоднішній статті я вам показуватиму як створювати повні резервні копії та відновлювати базу даних. Буде цікаво!

 

Вміст статті:

  1. Створення користувача резервного копіювання.
  2. Створення директорії для резервних копій.
  3. Виконуємо резервне копіювання бази даних.
  4. Підготовка резервної копії до відновлення.
  5. Відновлення бази даних.
  6. Призначаємо права.
  7. Запускаємо базу даних.
  8. Разом.

 

1. Створення користувача резервного копіювання.

Mariabackup необхідно авторизуватися на сервері бази даних, в той час, коли він виконує операцію резервного копіювання. Звичайно можна все виконувати за обліковим записом root, але ми всі робитимемо по-правильному не порушуючи фундаментальні принципи безпеки бази даних.

У 10.5 та пізніших версіях MariaDB потрібні наступні привілеї облікового запису: RELOAD, PROCESS, LOCK TABLES, BINLOG MONITOR

До версії 10.5 MariaDB потрібні привілеї облікового запису: RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT

Давайте створимо користувача, який буде відповідати за резервне копіювання.

mariadb> CREATE USER 'mariabackup'@'localhost' IDENTIFIED BY 'Qwerty123#';

mariadb> GRANT RELOAD, PROCESS, LOCK TABLES, BINLOG MONITOR ON *.* TO 'mariabackup'@'localhost';

mariadb_backup_restore


 

2. Створення директорії для резервних копій.

Тепер давайте визначимося, де у нас зберігатимуться резервні копії. Я зазвичай резервні копії зберігаю недалеко від самої бази даних, мені просто так зручніше. Давайте створимо директорії.

$. mkdir -p /mariadb/backup

$. chown -R mysql:mysql /mariadb/backup

mariadb_backup_restore

Ми створили директорію backup поруч із самою базою даних і призначили власника директорії користувача та групу mysql. ВАЖЛИВО! Директорія, куди буде виконаний перший бекап, повинна бути пускаючи!!!


 

3. Виконуємо резервне копіювання бази даних.

Тепер коли ми всі підготували, і тепер ми можемо запустити процес створення першої резервної копії. Для запуску необхідно запустити команду mariabackup --backup з параметрами.

  • --backup - означає, що ми робимо бекап.
  • --target-dir - цільова директорія, де зберігаються резервні копії.
  • --user - обліковий запис під яким буде запущений процес резервного копіювання.
  • --password - пароль облікового запису.

 

Запускаємо бекап.

$. mariabackup --backup --target-dir=/mariadb/backup/ --user=mariabackup --password='Qwerty123#' --socket=/mariadb/datafiles/mysql.sock

mariadb_backup_restore

У мене в команді вказано ще параметр --socket=/mariadb/datafiles/mysql.sock тому що я перемістив базу даних в іншу директорію. Але якщо ви нічого не змінювали після установки СУБД, то вам цей параметр вказувати необов'язково.

 

mariadb_backup_restore

По закінченні ви повинні побачити запис наприкінці completed OK!

 

По закінченні процесу резервного копіювання у мене директорії /mariadb/backup з'являтимуться файли моєї бази даних.

mariadb_backup_restore


 

4. Підготовка резервної копії до відновлення.

Після того, як ви створили резервну копію і хочете її відновити, то спочатку потрібно резервну копію підготувати, тому що файли резервної копії не є узгодженими на певний момент часу, враховуючи, що файли даних копіюються в різний час. Якщо ви спробуєте відновити дані з цих файлів, InnoDB помітить невідповідності та видасть помилку, щоб захистити вас від пошкодження даних.

Підготовкою резервної копії перед відновленням займається також команда mariabackup, але з параметром --prepare.

$. mariabackup --prepare --target-dir=/mariadb/backup/ --socket=/mariadb/datafiles/mysql.sock

mariadb_backup_restore

По закінченні має бути запис completed OK!


 

5. Відновлення бази даних.

Після завершення резервного копіювання та підготовки резервної копії до відновлення можна тепер спробувати відновити резервну копію.

 

5.1. Перше це зупиняємо базу даних.

$. service mariadb stop

 

5.2. Директорія datadir там, де у вас зберігаються всі файли бази даних, повинна бути порожньою.

 

Відновлювати можна двома способами:

  • --copy-back - дозволяє зберегти вихідні файли резервних копій
  • --move-back - фактично переміщує файли резервних копій у каталог, де у вас зберігаються всі файли бази даних, тому вихідні файли резервних копій губляться.

Я рекомендую виконувати відновлення з параметром  --copy-back

 

Команда відновлення:

$. mariabackup --copy-back --target-dir=/mariadb/backup/ --socket=/mariadb/datafiles/mysql.sock

mariadb_backup_restore

mariadb_backup_restore

По закінченні процесу у вас має бути написано completed OK!


 

6. Призначаємо права.

Якщо ви робили бекап з-під іншого користувача, воно відновить всі файли з правами не від mysql, для цього перепризначимо права на директорію де у нас всі файли бази даних.

$. chown -R mysql:mysql /mariadb/datafiles


 

7. Запускаємо базу даних.

Якщо ви все зробили правильно, ви можете запускати базу даних.

$. service mariadb start


 

8. Разом.

І так ми сьогодні успішно випробували як у нас працює процес резервного копіювання та відновлення. У наступній статті я вам розповім, як робити інкрементний бекап.


 

Всім дякую, я сподіваюся, що вам моя стаття хоч чимось допомогла.

СХОЖІ СТАТТІ

MariaDB - ERROR Incorrect definition of table
MariaDB - ERROR Incorrect definition of table
MARIADB
Читати далі
Mariabackup резервне копіювання - Стиснення gzip
Mariabackup резервне копіювання - Стиснення gzip
MARIADB
Читати далі
Mariabackup помилка - Error writing file UNKNOWN errno 32 Broken pipe
Mariabackup помилка - Error writing file UNKNOWN errno 32 Broken pipe
MARIADB
Читати далі