コンテンツにスキップ

Tenax の仕組み

Tenax は Kubernetes オペレーターです。バックアップの 保存先、頻度 と 保持期間、そして 対象のデータベース を 宣言すれば、あとは Tenax が引き受けます。

flowchart LR
  subgraph Declared["Declared in git"]
    S[BackupStore<br/>bucket + keys]
    P[BackupPolicy<br/>schedule, retention, window]
    T[BackupTarget<br/>one database]
  end
  subgraph Created["Created by Tenax or by you"]
    B[Backup<br/>one full backup]
    R[Restore<br/>to a sandbox, new DB, download, in place]
    X[Sandbox<br/>a throwaway database]
  end
  T --> P --> S
  T -. schedule .-> B
  R -. sandbox .-> X
リソース スコープ 作成者 内容
BackupStore クラスター あなた S3 バケット、その認証情報、すべてのオブジェクトの暗号化先となる age の受信者。
BackupPolicy Namespace あなた (またはチャートのプリセット) スケジュール、ポイントインタイムウィンドウ、保持階層、制限、負荷ガード、検証、圧縮。
BackupTarget Namespace (データベースと同じ場所) あなた ひとつのデータベースサーバー: エンジン、エンドポイント、認証情報、ポリシー、チェック、マスク。
Backup ターゲットの Namespace Tenax (スケジュール、即時バックアップ、チェーン再開) 1 回のフルバックアップの実行。オブジェクトとして残るのは最新の数件だけで、S3 にはすべてが保持されます。
Restore ターゲットの Namespace あなた、コンソール、または CLI 時刻またはバックアップ ID から復元先への計画。
Sandbox クラスター サンドボックスへの Restore TTL、認証情報、クエリコンソールを持つ専用のデータベース。

データパス

flowchart LR
  db[(Postgres / MySQL)] -->|pg_basebackup, pg_dump, mysqldump| mover[mover Job]
  db -->|WAL receiver, mysqlbinlog| streamer[streamer]
  mover --> pipe[zstd → age → SHA-256 → parallel multipart]
  streamer --> pipe
  pipe --> s3[(S3 bucket<br/>manifest.json written last)]
  s3 --> restorer[restorer Job<br/>verify → decrypt → replay → checks]
  restorer --> dest[sandbox · new database · in place · download]
  • コントローラーはスケジュールするだけです。 ムーバーとリストアラーは Job であり、ポイントインタイムリカバリを有効にした ターゲットごとにストリーマー Deployment がひとつあります。バイトがコントローラーや API を通過することはありません。
  • 何もハングしません。 マウント、iSCSI、FUSE、ブロックデバイスは使わず、データベースにはネットワーク経由でのみ接続します。 すべての I/O 呼び出しには期限があり、すべてのストリームには進捗ウォッチドッグがあり、子ツールは専用のプロセスグループで 実行されるため、グループごと終了されます。
  • クラッシュオンリー。 どの Pod もいつでも強制終了される可能性があります。状態は CRD と S3 にあり、バックアップは マニフェストが最後に書き込まれて初めて存在するため、書きかけのバックアップが完全なものと誤認されることはありません。

カタログとコンソール

tenax-api は起動時に各ストアのマニフェストを一覧し、インメモリのインデックスを保持します: ターゲット、バックアップ、 変更セグメント、ポイントインタイムウィンドウです。インベントリとマスク済みプレビューは追加の カタログ 鍵に対しても暗号化され、 この鍵ではそれらを読めますが、ダンプや WAL は復号できません (ADR 0009)。 キャッシュは使い捨てで、信頼できる唯一の情報源は S3 です。