Подготовка окружения
Для бэкапирования и восстановления БД MySQL должен быть установлен пакет artixcs-mysql-dump
на тот же сервер, где располагается MySQL, для этого необходимо:
Прописать репозиторий для подтягивания зависимого пакета
percona-xtrabackup
:Для MySQL 5cd /tmp wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb sudo dpkg -i percona-release_latest.generic_all.deb sudo apt-get update sudo apt-get install percona-xtrabackup
Для MySQL 8.0.31cd /tmp wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb sudo dpkg -i percona-release_latest.generic_all.deb sudo percona-release enable-only pdps-8.0.31 release sudo percona-release setup -y pdps-8.0.31 sudo apt install percona-xtrabackup-80
При установке
pdps
должен иметь ту же версию, что и MySQL (актуально только для версий MySQL 8).Например, если установлена MySQL версии 8.0.26, то необходимо установить
pdps
версии 8.0.26.Узнать установленную версию MySQL можно с помощью команды:
mysql --version
Установить пакет
artixcs-mysql-dump
командой:sudo apt-get install artixcs-mysql-dump
Настроить конфигурационный файл
/opt/artixcs-mysql-dump/artixcs-mysql-dump.conf
.Наименование Тип данных Возможные значения Описание Примечания user строковый Логин для подключения к mysql По умолчанию
netroot
passwd строковый Пароль для подключения к mysql По умолчанию netroot
backupDir строковый Директория, в которой будут храниться бэкапы useCompress логический - true
- false
Использовать ли архивирование для бэкапов При использовании архивирования данные занимают меньше места, но бэкапирование/восстановление выполняется дольше.
По умолчанию
true
incrementalDays числовой Сколько дней делать инкрементальные бэкапы При первом запуске будет создан полный бэкап всех баз, а затем в течение указанного времени будут создаваться инкрементальные бэкапы.
По истечении указанного времени будет заново создан полный бэкап, а затем повторно будут осуществляться инкрементальные бэкапы
По умолчанию
10
Пример настройки# Логин для подключения к mysql user=netroot # Пароль для подключения к mysql passwd=netroot # Директория, в которой будут храниться бэкапы # Пример: backupDir=/tmp/mysql_dump backupDir= # Использовать ли архивирование для бэкапов. При использовании архивирования данные занимают меньше места, но бэкапирование/восстановление выполняется дольше useCompress=true # Сколько дней делать инкрементальные бэкапы. При первом запуске будет создан полный бэкап всех баз. Затем в течение указанного времени будут делаться инкрементальные бэкапы. # По истечении указанного времени будет заново сделан полный бэкап и затем опять будут делаться инкрементальные бэкапы. incrementalDays=10
Бэкапирование БД MySQL
Для бэкапирования всех баз необходимо запустить скрипт:
sudo /opt/artixcs-mysql-dump/dump.sh
При бэкапировании percona-xtrabackup
может выдать ошибку для MySQL версий 8.0.29 - 8.0.32:
Чтобы продолжать создавать бэкапы, необходимо:
Для всех таблиц, перечисленных в описании ошибки, выполнить одну из команд:
OPTIMIZE TABLE
ALTER TABLE ALGORITHM=COPY
или
Выполнить оптимизацию всех баз данных командой:
mysqlcheck -u netroot -p --auto-repair --optimize --all-databases
(
netroot
– имя пользователя MySQL).
Процесс оптимизации может занять длительное время и потребует дополнительного пространства на диске на время выполнения (некоторые таблицы будут копироваться), в некоторых случаях может произойти блокировка таблицы до завершения её оптимизации.
cron
.Бэкапы сохраняются в директорию $backupDir
.
Восстановление БД MySQL
Для восстановления бэкапа необходимо запустить скрипт:
sudo /opt/artixcs-mysql-dump/restore.sh