Бэкапы сайта: стратегия 3-2-1, автоматизация, хранение в РФ

Бэкап, который ни разу не разворачивали, — иллюзия, а не страховка. Правило 3-2-1, автоматизация через cron и mysqldump, шифрование, хранение в РФ по 152-ФЗ и главное — регулярный тест восстановления.

У всех есть бэкапы — ровно до того дня, когда они впервые понадобятся. Тогда выясняется, что копия недельной давности, лежит на том же сервере, что и упавший сайт, а восстановить её из архива никто ни разу не пробовал. Бэкап, который не проверяли на восстановление, — это не страховка, а иллюзия. Разберём, как выстроить резервное копирование, которое реально спасёт.

Правило 3-2-1

Отраслевой стандарт надёжного бэкапа формулируется тремя цифрами:

  • 3 копии данных — оригинал плюс два бэкапа.
  • 2 разных носителя — например, диск сервера и объектное хранилище, а не две папки на одной машине.
  • 1 копия offsite — физически в другом месте: другой ЦОД, другое облако. Сгорит стойка с сервером — копия уцелеет.

Смысл правила — ни один единичный сбой (диск, сервер, ЦОД, шифровальщик) не должен уничтожать все копии сразу.

Что бэкапить

Сайт — это две сущности, и обе нужны:

  • Файлы — код, загруженные пользователями медиа, конфиги. Медиа особенно: их не восстановить из репозитория.
  • База данных — заказы, пользователи, контент. Снимаем дампом, а не копированием файлов БД «на живую».

Код обычно и так в git, но настройки окружения и пользовательский контент — нет. Именно их теряют чаще всего.

Автоматизация: cron, mysqldump, rsync

Ручной бэкап забывают. Всё, что делается регулярно, вешаем на cron:

# дамп базы каждую ночь в 3:15
15 3 * * * mysqldump -u u -p'pass' --single-transaction db   | gzip > /backup/db-$(date +\%F).sql.gz

# синхронизация в offsite-хранилище
30 3 * * * rsync -az /backup/ user@storage:/backups/site/

mysqldump со флагом --single-transaction снимает согласованную копию без остановки сайта. rsync докидывает только изменения — быстро и дёшево по трафику.

Шифрование и хранение в РФ

Бэкап — это те же персональные данные, только в архиве. Если храните данные россиян, по 152-ФЗ первичная база (а значит, и её копии) должна находиться на серверах в РФ. Практика:

  • Хранилище для offsite-копий — российское: облако или объектное хранилище в РФ.
  • Архивы шифруем перед отправкой (gpg или встроенное шифрование хранилища) — украденный бэкап не должен читаться.
  • Доступ к бэкапам — по отдельным ключам, а не под общим паролем от сервера.

Ретеншен: сколько копий держать

Хранить всё вечно дорого, одну последнюю копию — опасно: успеете перезаписать её испорченными данными. Разумная схема ротации:

  • Ежедневные — за последние 7 дней.
  • Еженедельные — за 4-5 недель.
  • Ежемесячные — за 6-12 месяцев.

Так есть к чему откатиться, даже если порчу данных или взлом заметили не сразу.

Главное — тест восстановления

Здесь ломается большинство схем. Бэкап делается годами, а разворачивать его пробуют впервые в день аварии — и узнают, что дамп битый, не хватает прав, а процедура занимает не 20 минут, а полдня.

  • Раз в квартал разворачивайте бэкап на тестовом сервере — целиком.
  • Замеряйте, сколько заняло восстановление: это ваш реальный RTO.
  • Проверяйте, что данные на месте, а не только что «архив распаковался».

Правило простое: непроверенного бэкапа не существует.

Чеклист и вывод

  • Три копии, два носителя, одна offsite.
  • Файлы и дамп БД — обе сущности.
  • Автоматизация через cron, без ручных запусков.
  • Шифрование и хранение копий в РФ под 152-ФЗ.
  • Ротация: день / неделя / месяц.
  • Тест восстановления раз в квартал с замером времени.

Бэкап — это не архив «на всякий случай», а отрепетированная процедура восстановления. Если некому регулярно проверять копии и держать схему в порядке — возьмём это на себя: настроим бэкапы и техническую поддержку сайта с проверкой восстановления по расписанию, а не по факту аварии.

Перенос инфраструктуры в облако
Услуга по теме — обсудим ваш проект.