Бэкапы, которые восстанавливаются

Бэкап — это не файл в S3, а проверенная процедура восстановления. Разница обнаруживается в худший день года.

Бэкап ≠ восстановление

У большинства команд бэкапы «есть»: cron, pg_dump, файл уходит в хранилище. Проверяют же их обычно в день аварии — и тогда выясняется, что дамп пустой уже три месяца, потому что упали права, или что восстановление занимает шесть часов, а бизнес рассчитывал на тридцать минут.

Рабочее определение: бэкап существует, только если восстановление из него недавно репетировали.

Два числа, о которых договариваются заранее

Оба числа — решение бизнеса, а не инженера. Задача инженера — честно сказать, какие RPO/RTO даёт текущая схема, и сколько стоит их уменьшить (WAL-архивация вместо суточного дампа, реплика вместо холодного восстановления).

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

Три копии данных, на двух разных типах носителей, одна — вне площадки. Практический минимум для сервера: локальный дамп для быстрого восстановления плюс копия в объектном хранилище другого провайдера или региона. Бэкап на том же диске, что и база, переживёт ошибку DROP TABLE, но не переживёт смерть диска — а это как раз главный сценарий.

Как бэкапы умирают молча

# минимальная проверка свежести и размера, годится для алерта
find /backups -name "db-*.dump" -mtime -1 -size +10M | grep -q . || echo "ALARM"

Репетиция

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