Backup с rsnapshot на Ubuntu

В статье я настрою backup с двух VPS (там стоит Ubuntu) на локальный комп с Ubuntu. На одной VPS стоит apache, mysql, на второй VPS запущено Node.js приложение и mongodb. Использовать буду rsnapshot, который основан на rsync. rsnapshot позволяет задать периодичность копирования и количество бэкапов (часовых, дневных, недельных, месячных и т.д.). rsnapshot не создает N копий данных на диске, а использует символические ссылки на предыдущие backup (по сути инкрементальный бэкап).

Создаю на VPS пользователей backup

Далее настраиваю авторизацию по ключу по инструкции. Копируем приватный ключ (~/.ssh/id_rsa) на локальном компьютере (куда делаем бэкап) из папки пользователя в папку /root/.ssh

Это делается потому, что rsnapshot будет выполнятся из под root пользователя. Теперь если выполнить следующую команду из под пользователя root, мы должны попасть на сервер без пароля:

Настройка rsnapshot

На локальном компьютере, на котором будем хранить бэкапы ставим rsnapshot.

указываем куда складировать бэкапы:

расскоментировать строчку:

Ищем строчки с retain и добавляем

что означает, будем хранить 7 бэкапов daily и 12 бэкапов monthly. Когда будет настраивать cron — вы поймете как оно работает. Пока настраиваем дальше.

Настройка бэкапа осуществляется командой backup <откуда> <куда>:

что означает заходим на сервер example.com под пользователем backup и копируем содержимое каталога /home в локальный подкаталог example.com в корневой каталог snapshot_root (указанный выше в файле).

ВАЖНО: используйте табы, а не пробелы между параметрами.

Приведу параметры конфига для создания бэкапа mysql и копирования каталогов /home/, /var/www, /etc/:

Чтобы сделать backup mysql, на сервере в папке пользователя backup (/home/backup) создаем файл .my.cnf и вставляем туда данные пользователя mysql, который имеет доступ на чтение ко всем нужным базам:

Теперь выполнив команду на сервере от имени пользователя backup

будем создан файл с полным бэкапом всех бд. Вернемся к конфигу rspanshot. Перед копированием каталогов вызовем команду бэкапа бд:

ВАЖНО: перед ssh — таб, после ssh — пробел, после адреса сервера — таб, между кавычками — везде пробелы.

Для второй VPS будет все аналогично.

В итоге конфиг должен получится такого вида:

На второй VPS я делаю дамп mongodb, а потом копирую необходимые мне каталоги.

Чтобы проверить конфиг выполняю от root:

Если возвращает Syntax OK — значит все правильно, если ошибки — читаем, смотрим, проверяем пробелы и табы.

Теперь можно сделать первый бэкап (пока вручную) из под root пользователя

Добавляем в cron раписание запуска бэкапов. Я хочу делать ежедневный бэкап каждую полночь, и месячный каждого 1 числа. Под root’ом выполняем:

и дописываем в конец:

 

Добавить комментарий