Резервное копирование базы данных по расписанию


Задача: а) в назначенный час запустить резервное копирование mysql-базы данных, б) переслать файл дампа по электронной почте. И, конечно, все это должно произойти без нашего участия, т.е. само по себе.
Что нам понадобится:

  • PHP 5 - для выполнения скрипта;
  • Task Scheduler - он же "планировщик";
  • mysqldump - утилита для создания дампа mysql-базы данных;
  • Swift Mailer - PHP-библиотека для работы с почтой.


Резервное копирование. Для запуска mysqldump воспользуемся php-функцией exec, в которую в качестве аргумента передадим строку с параметрами вызова mysqldump (подробнее о mysqldump тут).
$q = "mysqldump -uroot -ppass database > ";
$file = "d:/backup-" . date("d-m-Y") . ".sql";
exec($q . $file);
Отправка дампа по электронной почте. Пересылать дамп будем через smtp.mail.ru. Дописываем в скрипте:
require_once 'Swift-4.0.6/lib/swift_required.php';
$transport = Swift_SmtpTransport::newInstance('smtp.inbox.ru', 25)
->setUsername('from@mail.ru')
->setPassword('pass') ;
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance('mysql dump')
->setTo(array('to@mail.ru' => 'A name'))
->setFrom(array('from@mail.ru' => 'A name'))
->setBody('mysql dump test');
$message->attach(Swift_Attachment::fromPath($file));
$result = $mailer->send($message);
Планировщик. Первым делом запускаем "Службы" и проверяем - запущена ли служба "Task Scheduler". Затем запускаем мастер добавления задания, где указываем в качестве программы для запуска "php.exe" с аргументом - путь к скрипту создания и пересылки дампа (например - "с:\php\php.exe -f d:\dump.php"). Устанавливаем время выполнения задачи.

Комментарии

Популярные сообщения из этого блога

Конвертируем Ruby-приложение в exe

JQuery и Rails - делаем кнопку "like it" со счетчиком