Долго я искал нормальный скрипт для резервного копирования баз данных MySQL и ничего подходящего для себя не нашел.
Чего мне не хватало:
- Пакетный бекап баз.
- Разные каталоги для бекапов.
- Ротация резервных копий.
Пришлось мне писать свой скрипт для этого дела. В общем на Ваш суд:
MySQL DB Backup умеет хранить резервные копии баз данных в отдельных каталогах для каждой базы, что позволяет разнести базы по каталогам пользователей; позволяет управлять резервированием баз данных из одного места, что гораздо удобнее, чем ручное копирование; проводить ротацию файлов копий, ограничив количество этих копий; автоматически менять владельца и группу файла для корректного доступа пользователей к файлам резервных копий.
Скачать
[ ... ИНСТРУКЦИЯ ПО УСТАНОВКЕ ... ]
1. Внесите в массив параметры баз данных и путей к каталогам резервных копий, настройте остальные параметры конфигурации в файле mysqldbbackup.ini.
Один из разделов конфигурации обязательно должен называться Options. В нем находятся настройки
хранения, ротации, доступа к базе данных. Для примера:
[Options]
removedays = 1,4,6
nob = 10
compress = 9
dbuser = root
dbpass = Mega$uperPa$sword
- removedays отвечает за настройку дня недели, в которые будет проводиться удаление
старых файлов резервных копий. Дни недели указываются через запятую (0 - воскресенье). Можно
указать “*”, что означает каждый день;
- nob (number of backups) отвечает за количество хранимых бекапов;
- compress - коэффициент сжатия (0 - 9);
- dbuser - имя суперполльзователя (обычно root);
- dbpass - пароль для указанного пользователя.
Далее идут разделы для копируемых баз данных:
[DataBase]
db = dbname
archpath = /path/to/backup
owner = user:group
- DataBase - идентификатор базы данных;
- db - имя базы данных;
- owner - имя пользователя и группа, выставляемые на файл бекапа после его создания.
2. Измените путь к файлу конфига в файле mysqldbbackup.php.
3. Установите права запуска на скрипт 700, владельца и группу root.
4. Внесите в crontab запуск скрипта по расписанию:
0 1 * * * root php /path/to/mysqldbbackup.php
5. Все. Скрипт находится в рабочем состоянии.
[ ... TO DO ... ]
1. Количество хранимых копий для каждой базы отдельно
2. Автосоздание последнего в пути каталога для бекапа.
3. Загрузка файлов на удаленный сервер.
[ ... HISTORY ... ]
ver. 1.0
+ Создан конфиг в виде стандартного ini-файла;
+ Добавлена проверка наличия замыкающего слеша;
* Переписана схема ротации;
* Увеличена информативность выводимого отчета.
[ ... REGARDS ... ]
1. Спасибо за помощь в отлове багов Lice (TSRh Team).