Скрипт бекапа баз данных MySQL

Долго я искал нормальный скрипт для резервного копирования баз данных MySQL и ничего подходящего для себя не нашел.

Чего мне не хватало:

  1. Пакетный бекап баз.
  2. Разные каталоги для бекапов.
  3. Ротация резервных копий.

Пришлось мне писать свой скрипт для этого дела. В общем на Ваш суд:

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).

Поделиться этой заметкой с друзьями:

Добавь меня:

Вы можете оставить комментарий, или поставить трэкбек со своего сайта.

12 комментариев(я)

  • 05.05.2008 07:20, Silver Ghost сказал:

    rtm, сделайте две секции в конфиге. Я специально так сделал, чтоб базы можно было хранить в разных местах.

    Инклуд исправил. Спасибо.

    OpenID просьба проверить. Должно уже работать.

    • 05.05.2008 09:16, rtm сказал:

      Формы для OpenID теперь вообще нет ))))
      а за скрипт – спасибо, допилю потом под себя

      • 05.05.2008 09:46, rtm сказал:

        ЖЖ works

        • 05.05.2008 09:50, rtm сказал:

          наврал
          жж непашет

          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

          • 05.05.2008 09:55, Silver Ghost сказал:

            rtm, еще раз проверь, плз.

            • 20.05.2008 11:19, MSW сказал:

              а как можно сделать чтоб резервная копия сохранялась не в указанный день недели – по умолчанию воскресенье, а например каждый день?

              • 21.05.2008 21:18, Silver Ghost сказал:

                MSW, сделаю в следующей версии параметром. :)

                • [...] Сегодня переписал и доработал скрипт бекапа баз данных MySQL. [...]

                  • 03.02.2009 12:31, freeman сказал:

                    Как насчет блокировки таблиц MyISAM перед непосредственно дампом?

                    • 04.02.2009 10:16, Silver Ghost сказал:

                      @freeman: можно указать –lock-tables в скрипте…

                      • 2 старых комментариев не отображается. Нажмите, чтобы отобразить все.
                      (Обязательно)
                      (Обязательно, не публикуется)

                      Надпись "Выполнено на 99%" радует только первые три часа....