Перейти к содержанию

Проверка

Резервная копия, которую никто не восстанавливал, — это лишь надежда. Tenax по расписанию восстанавливает ваши резервные копии, проверяет их и помечает прошедшие проверку как проверенные (verified).

in a BackupPolicy
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:

in a BackupTarget
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 или кнопкой Проверить сейчас на странице цели.