LinuxАдминистрирование
Инкрементальный backup MySQL
Backupninja — расширяемая система резервного копирования, удобная консольная обёртка для нескольких утилит резервного копирования.
Большинство консольных утилит используемых для создания резервных копий не имеют собственных конфигурационных файлов. Backupninja обеспечивает возможность централизованной настройки и запуска резервного копирования с помощью нескольких (опционально устанавливаемых), наиболее популярных консольных утилит (duplicity, rsync, rdiff-backup и mariadb-clients).
Настройки для запуска всех утилит Backupninja сохраняет в едином конфигурационном файле (/etc/backupninja.conf), для каждого задания резервного копирования конфигурации сохраняются отдельно (по умолчанию используется каталог /etc/backup.d), в удобных к правке и интуитивно понятных ini-файлах(по сути обычные текстовые файлы), возможен просмотр базовой системной и аппаратной информации (hwinfo).
Задания Backupninja могут выполняться параллельно и поочерёдно, как обычные так и зашифрованные, поддерживается удалённое управление резервным копированием, безопасное резервное копирование баз данных (MySQL, PostgreSQL, OpenLDAP и др), пользовательские скрипты, сжатие (используется gzip), отправка сообщений "об ошибках" по электронной почте и интеграция с Linux Vserver(система виртуализации).
Подробная документация на странице разработчика.
Установка Backupninja:
$ apt install backupninja
В /etc/backup.d/ создаёте конфиги вида 20-db.mysql , 30-inc.dup
Числа в начале файла описывают очерёдность выполнения в случае одновременного запуска (сначала сдампить базу, а затем создать инкрементальный архив).
Расширение файла указывает на тип задачи (.mysql - бэкап mysql, .dup - используем duplicity).
Шаблоны конфигов можно найти в папке /usr/share/doc/backupninja/examples/.
Конфиг бекапа MySQL
/etc/backup.d/20-db.mysql:
databases = all
backupdir = /path/to/backup/mysql
hotcopy = no
sqldump = yes
compress = yes
dbusername = MYSQL_USERNAME
dbpassword = MYSQL_PASSWORD
Проверить работы конфига можно следующей командой:
$ backupninja -t -n
Инкрментальный архив
## Параметры, передаваемые напрямую duplicity при запуске бэкапа
## --no-encryption позволяет отключить шифрование архивов с бэкапом и получить обычный .tar.gz
options = --no-encryption
testconnect = no
tmpdir = /tmp
[source]
include = /path/to/backup/mysql/sqldump
[gpg]
## Ключ для симметричного шифрования. Duplicity шифрует бэкапы с помощью gpg. Должен быть указан, даже если стоит --no-encryption, хоть и не будет использоваться
password = 123
[dest]
## perform incremental backups
incremental = yes
## days of incremental backups before doing full backup again
increments = 7
## how many days of data to keep
keep = 14
## for how many full backups do we keep their later increments
keepincroffulls = all
desturl = file:///path/to/backup/mysql
С бэкапами лучше работать самой утилитой duplicity.
Узнать статус:
$ duplicity collection-status file:///path/to/backup/mysql
Восстановить:
$ duplicity restore file:///path/to/backup/mysql /path/to/restore/
Более подробно с настройками можно ознакомиться на странице официальной документации.