Проверка¶
Резервная копия, которую никто не восстанавливал, — это лишь надежда. Tenax по расписанию восстанавливает ваши резервные копии, проверяет их и помечает прошедшие проверку как проверенные (verified).
spec:
verify:
schedule: "17 4 * * 0" # weekly, Sunday 04:17 in the policy's time zone
checks: [inventory-matches, row-estimates-within-10pct, target-checks]
randomPointInTime: true # also restore a random second inside the window
По расписанию контроллер создаёт Restore в песочницу из последней резервной копии, а если есть потоки изменений —
ещё и на случайный момент внутри окна. Затем он выполняет проверки:
| Проверка | Проходит, когда |
|---|---|
inventory-matches |
Восстановленные таблицы и отпечаток схемы совпадают с описью резервной копии. |
schema-matches |
Совпадает отпечаток схемы. |
row-estimates-within-NNpct |
Число строк в каждой таблице отличается от оценки в описи не больше чем на NN %. |
target-checks |
Каждая SQL-проверка, объявленная в цели, возвращает true. |
Проверки цели — это обычный SQL, который должен вернуть одно значение true:
spec:
checks:
- name: orders-not-empty
database: app
sql: select count(*) > 0 from orders
- name: recent-orders
database: app
sql: select max(created_at) > now() - interval '2 days' from orders
Успешный запуск помечает резервную копию как verified и записывает время восстановления, которое экспортируется
как tenax_verify_rto_seconds. Неудачный запуск вызывает TenaxVerificationFailed; если успешных запусков не было
8 дней, срабатывает TenaxVerificationOverdue. Запустить проверку вручную можно командой
tenax verify team-a/app --wait или кнопкой Проверить сейчас на странице цели.