Скрипт бекапа баз данных MySQL
3 мая 2008
Версия для печати
Долго я искал нормальный скрипт для резервного копирования баз данных 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).
Популярность: 100% []
И не забываем подписываться на RSS. ;)



Забыли инклуд конфига
OpenID неработает
Warning: mkdir() [function.mkdir]: Permission denied in /home/silver/htdocs/wp-content/plugins/openid/openid-classes.php on line 101
Warning: opendir(./tmp/) [function.opendir]: failed to open dir: No such file or directory in /home/silver/htdocs/wp-content/plugins/openid/openid-classes.php on line 401
Warning: Cannot modify header information - headers already sent by (output started at /home/silver/htdocs/wp-content/plugins/openid/openid-classes.php:101) in /home/silver/htdocs/wp-content/plugins/openid/openid-classes.php on line 360
ещё 1 замечание
хотелось бы иметь возможность забэкапить 2 БД одного пользователя,
например перечислив их через запятую в секции
‘db’
rtm, сделайте две секции в конфиге. Я специально так сделал, чтоб базы можно было хранить в разных местах.
Инклуд исправил. Спасибо.
OpenID просьба проверить. Должно уже работать.
Формы для OpenID теперь вообще нет ))))
а за скрипт - спасибо, допилю потом под себя
ЖЖ works
наврал
жж непашет
Warning: mkdir() [function.mkdir]: Permission denied in /home/silver/htdocs/wp-content/plugins/openid/openid-classes.php on line 101
Warning: opendir(./tmp/) [function.opendir]: failed to open dir: No such file or directory in /home/silver/htdocs/wp-content/plugins/openid/openid-classes.php on line 401
Warning: Cannot modify header information - headers already sent by (output started at /home/silver/htdocs/wp-content/plugins/openid/openid-classes.php:101) in /home/silver/htdocs/wp-content/plugins/openid/openid-classes.php on line 360
rtm, еще раз проверь, плз.
а как можно сделать чтоб резервная копия сохранялась не в указанный день недели - по умолчанию воскресенье, а например каждый день?
MSW, сделаю в следующей версии параметром. :)
[...] Сегодня переписал и доработал скрипт бекапа баз данных MySQL. [...]