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 です。