Скрипт бекапа баз данных MySQL » Записки старого сисадмина Скрипт бекапа баз данных MySQL » article » Записки старого сисадмина

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

3 мая 2008 Версия для печати Версия для печати

Долго я искал нормальный скрипт для резервного копирования баз данных 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).

Популярность: 100% [?]




И не забываем подписываться на RSS. ;)

10 комментариев, “Скрипт бекапа баз данных MySQL”

  1. rtm |

    Забыли инклуд конфига

    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

  2. rtm |

    ещё 1 замечание
    хотелось бы иметь возможность забэкапить 2 БД одного пользователя,
    например перечислив их через запятую в секции
    ‘db’

  3. Silver Ghost |

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

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

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

  4. rtm |

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

  5. rtm |

    ЖЖ works

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

  7. Silver Ghost |

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

  8. MSW |

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

  9. Silver Ghost |

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

  10. MySQLDBBackup v.1.0 | Записки старого сисадмина |

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

Комментировать