Пост для тех, кто как и я искал быстро развёртываемый гибкий сервис для бэкапов в облако по приемлемой цене. Пост НЕ является рекламой и подходит для мелких и средних проектов.
Наш парк серверов состоит из CDN, Application и Web-серверов. ОС - Gentoo x64, основная БД - MySQL.
Бэкапить нужно
1) Файлы конфигурации (весь /etc).
2) Конфиг ядра, чтобы не настраивать заново (/boot/config*)
3) Очередь почты (/var/spool)
4) Конфиги собственных приложений
5) БД
6) Webroot
На наших проектах нет нужды в репликации БД и подключать эту функцию только для бэкапов нет смысла. Все таблицы делятся на те, что можно спокойно потерять (логи доступа, генерируемые отчёты и пр.) и те, что потерять никак нельзя.
Серверов много, на них стоят SSD и делать на каждом RAID-массив для бэкапов мы не хотели (выходит дорого), поэтому выбор пал на unmanaged cloud backup сервис - rsync.net
Цена за это хранилище 0.04$ / GB в месяц.
Средний размер БД одного нашего Application сервера 200GB, Webroot - 10-1000GB.
Как понятно из названия - сервис работает по протоколу rsync (с пробросом через ssh), скорость заливки бэкапов из России и Европы примерно 1MB/sec. Настраивается за 5 минут, сам сервис самостоятельно делает ежедневные снапшоты и хранит 7 снапшотов.
БД и данные сначала бэкапятся в локальный каталог через mysqldump, все данные сжимаются архиватором zstd (намного быстрее и эффективнее zip, bzip), а потом заливаются в облако.
Универсальный скрипт, который используем мы можно взять тут: https://pastebin.com/X7XW0Nz9
В скрипте нужно заменить текст
%RSYNC_URL% на URL, который вам выдаст сервис после регистрации.
%SERVER_NAME% на имя вашего сервера
Создать --login-path=backup чтобы не писать в скрипте пароль, а брать данные доступа из предварительно созданных конфигов (https://dev.mysql.com/doc/refman/8.0/en/mysql-config-editor....).
И настроить ключи авторизации ssh на сервере бэкапов, чтобы не вводить каждый раз пароль (делается элементарно по инструкции, которую пришлют в письме после регистрации)
По-умолчанию бэкапятся все БД и все таблицы на сервере. Для того, чтобы исключить таблицу из бэкапа нужно добавить ей в комментарии слово "nobackup"