検証¶
誰も復元したことのないバックアップは、ただの希望にすぎません。Tenax はスケジュールに沿ってバックアップを復元してチェックし、 合格したものを 検証済み としてマークします。
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 を返す。 |
ターゲットのチェックは、単一の true 値を返す必要があるプレーンな SQL です。
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 を使うか、ターゲットのページで 今すぐ検証 を押します。