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
Читать далее