Инкрементальный бэкап удаленного веб сервера с Mysql с помощью rsnapshot (CentOS, RHEL)

3. Настройка rsnapshot

Для начала установим rsnapshot на сервере бэкапов:

Конфигурационный файл хранится в /etc/rsnapshot.conf. rsnapshot по сути является perl скриптом-оболочкой, которая в свою очередь работает через rsync. Внимание! rsync должен быть установлен и на клиенте и на сервере бэкапов. Очень важный момент, что отступы в конфигурационном файле должны прописываться табами, в противном случае будет ошибка. В rsnapshot можно настроить бэкапы для разных периодов — по часам, дням, неделям, месяцам. Довольно удобная система, где нам важно делать бэкап как актуальных данных, так и тех данных, что были сделаны месяц, год назад. Если мы настроим, что у нас хранится 5 почасовых бэкапов и 2 дневных, то если за день было сделано более 5 бэкапов — мы не сможем видеть снэпшот данных на начало дня, т.к. у нас стоит ограничение. Однако, бэкап по дням решит эту проблему и у нас будет храниться снэпшот за прошлый и позапрошлый день. Для нас важны следующие части конфигурации:

Данный параметр указывает на корень в файловой системе, относительно которого будут записываться наши снэпшоты.

Параметры для ssh, в котором мы указываем файл ключа для авторизации:

В данном случае мы как раз настраиваем количество бэкапов для каждого вида. Далее нам нужно описать конфигурацию бэкапа:

1 строка указывает нам, что мы по scp заходим на сервер client, забираем с него папку /var/www/ и гладем ее в /mnt/snapshots/daily.0/www_server, где /mnt/snapshots/ — это указанный нами корень для снэпшотов, а daily.0 — это тип бэкапа и его нумерация. 2 строка — т.к. у нас есть данные, которые нам не нужны в бэкапе, например — файлы логов, кэша, то мы можем исключить их. В этой строке мы указываем файл, в котором прописаны исключения для синхронизации. Пример файла —

3 строка — мы выполняем скрипт /root/rsnapshot.mysql.sh на удаленном сервере client. unused1 — это заглушка, которую оставляем без внимания.

4 строка — мы переносим файлы дампов с удаленного сервера client по scp из папки /tmp/rsnapshot/mysql/ (эту папку мы указывали в скрипте rsnapshot.mysql.sh) в папку /tmp/mysql_backups на сервере backup, затем переносим в  /mnt/snapshots/daily.0/mysql в папку снэпшотов. Сохранив файл конфигурации — его можно проверить встроенной командой:

В 3-4 строке мы указали путь к файлу, т.к. ssh_args работают только на встроенные команды, а в данном случае мы вызываем внешние команды.

Последний шаг — необходимо поставить задания в cron, при том для каждого вида бэкапа — отдельное, что логично. Редактируем файл /etc/cron.d/rsnapshot, заносим в него:

Как мы видим — бэкап запускается каждые 4 часа, каждый день в 3:30, каждый понедельник в 3:00, каждый 1 день месяца в 2:30.Если нам какой-то из видов бэкапов не нужен — просто комментируем необходимую строчку. Напоследок несколько полезных команд — Проверка реально занимаемого места снэпшотами:

Вывод процесса (команд) бэкапа без выполнения:

Ручной запуск обновления:

Тестирование конфигурации:

  • Страницы
  • 1
  • 2
  • 3
  • 4