xlxa5

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

22 июля 2026резервные копии5 минут чтения

Ночной скрипт восемь месяцев завершался с кодом 0 и писал в лог «backup ok, 1.8 GB». Проверок не было ни одной — до момента, когда понадобилось восстановить базу.

Что оказалось не так

Минимальный набор проверок

Восстановление в отдельную директорию раз в неделю — самый дешёвый способ узнать правду. Не «файл существует», а «данные читаются»:

set -e
pg_restore --clean --if-exists -d restore_check /backup/latest.dump
psql -d restore_check -c 'select count(*) from events;' | tail -1
psql -d restore_check -c 'select max(created_at) from events;'

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

Что изменили

БылоСтало
Лог «backup ok»Метрика «возраст последней проверенной копии» с алертом на 36 часов
Одна копия в той же сетиДве площадки, вторая — только на чтение
Ротация по датеРотация по дате плюс контроль свободного места до старта

Что бы сделал иначе

← На главную · Архив