MariaDB, Mariabackup резервное копирования и восстановления, часть 2
Коллеги всем привет.
В прошлой статье я вам показывал как устанавливать Mariabackup. В сегодняшней статье я вам буду показывать как создавать полные резервные копии и восстанавливать базу данных. Будет интересно!
Содержимое статьи:
- Создания пользователя резервного копирования.
- Создания директории для резервных копий.
- Выполняем резервное копирования базы данных.
- Подготовка резервной копии к восстановлению.
- Восстановления базы данных.
- Назначаем права.
- Запускаем базу данных.
- Итого.
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';
2. Создания директории для резервных копий.
Теперь давайте определимся где у нас будут храниться резервные копии. Я обычно резервные копии храню недалеко от самой базы данных, мне просто так удобнее. Давайте создадим директории.
$. mkdir -p /mariadb/backup
$. chown -R mysql:mysql /mariadb/backup
Мы создали директорию 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
У меня в команде указан еще параметр --socket=/mariadb/datafiles/mysql.sock так как я переместил базу данных в другую директорию. Но, а если вы ничего не меняли после установки СУБД то вам этот параметр указывать необязательно.
По окончанию вы должны увидеть запись в конце completed OK!
По окончанию процесса резервного копирования у меня директории /mariadb/backup появляться файлы моей базы данных.
4. Подготовка резервной копии к восстановлению.
После того как вы создали резервную копию и хотите её восстановить то сначала нужно резервную копию подготовить, так как файлы резервной копии не являются согласованными на определенный момент времени, учитывая, что файлы данных копируются в разное время. Если вы попытаетесь восстановить данные из этих файлов, InnoDB заметит несоответствия и выдаст ошибку, чтобы защитить вас от повреждения данных.
Подготовкой резервной копии перед восстановлением занимается также команда mariabackup, но с параметром --prepare.
$. mariabackup --prepare --target-dir=/mariadb/backup/ --socket=/mariadb/datafiles/mysql.sock
По окончанию должна быть запись 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
По окончанию процесса у вас должно быть написано completed OK!
6. Назначаем права.
Если вы делали бекап из-под другого пользователя, то оно восстановит все файлы с правами не от mysql, для этого переназначим права на директорию где у нас все файлы базы данных.
$. chown -R mysql:mysql /mariadb/datafiles
7. Запускаем базу данных.
Если вы все сделали правильно, то можете запускать базу данных.
$. service mariadb start
8. Итого.
И так мы сегодня успешно испытали как у нас работает процесс резервного копирования и восстановления. В следующей статье я вам расскажу как делать инкрементный бекап.
Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.