Aller au contenu

Vérification

Une sauvegarde que personne n'a restaurée n'est qu'un espoir. Tenax restaure vos sauvegardes selon un planning, les contrôle, et marque celles qui réussissent comme vérifiées.

dans une 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

À l'heure prévue, le contrôleur crée un Restore vers un bac à sable à partir de la dernière sauvegarde, et depuis un instant aléatoire de la fenêtre quand des flux existent. Il exécute ensuite les contrôles :

Contrôle Réussit quand
inventory-matches Les tables restaurées et l'empreinte du schéma correspondent à l'inventaire de la sauvegarde.
schema-matches L'empreinte du schéma correspond.
row-estimates-within-NNpct Le nombre de lignes de chaque table est à NN % près de l'estimation de l'inventaire.
target-checks Chaque contrôle SQL déclaré sur la cible renvoie vrai.

Les contrôles de la cible sont du SQL simple qui doit renvoyer une seule valeur vraie :

dans un 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

Une exécution réussie marque la sauvegarde verified et enregistre la durée de restauration, exportée sous tenax_verify_rto_seconds. Une exécution en échec déclenche TenaxVerificationFailed ; aucune exécution réussie pendant 8 jours déclenche TenaxVerificationOverdue. Lancez-en une à la main avec tenax verify team-a/app --wait, ou avec Vérifier maintenant sur la page de la cible.