スナップショットを作成する
BACKUP コマンドに experimental_lightweight_snapshot = true を指定して使用します。id 設定は必須で、スナップショットに名前を付けるために使われ、ロック解除コマンドやオブザーバビリティコマンドから参照する際にも使用されます。
id と status を返します。id は system.backups で操作の進行状況を追跡するために使用できます。
単一のテーブルを S3 にバックアップします。
同じサービスに復元する
snapshot_from_current_service = 1 を使用することで、外部バックアップバケットから同じサービスにスナップショットを復元できます。これにより、リモートのスナップショットリーダーを経由せず、宛先ディスク経由でオブジェクトを直接読み取ります:
AS 句を使うと、新しいテーブル名で復元され、元のテーブルはそのまま残ります。元のテーブルを上書きするには、まずそのテーブルを削除してください:
スナップショットのロック解除
system.snapshot_locks の info カラムで確認可能) 、FROM 句は省略できます。
system.snapshot_locksから消え、他のスナップショットから参照されていないパーツはsystem.snapshot_partsからも消えます。
オブザーバビリティ
system.backups
system.backups に表示されます。設定した id (またはコマンドが返した UUID) を指定してクエリします。
system.snapshot_locks
system.snapshot_locks には、現在 Keeper に登録されているコミット済みスナップショットが表示されます。スナップショットがコミットされると、/clickhouse/snapshot/committed/{snapshot_id} に Keeper ノードが作成されます。data パーツ を削除する前に、server はコミット済みスナップショットがその パーツ に対するロックを保持しているかどうかを確認します。保持している場合、その削除はスキップされます。このロックは、スナップショットを明示的にロック解除するまで保持されます。
各行は、コミット済みのスナップショットを 1 つ表します。すでに有効な保存先が存在しないスナップショットのロックが見つかった場合は、
SYSTEM UNLOCK SNAPSHOT を実行してクリーンアップしてください。
特定のスナップショットロックが存在するかどうかを確認するには:
system.snapshot_parts
system.snapshot_parts は、少なくとも 1 つのスナップショットロックによって現在固定されている data パーツ を表示します。ロックされている各 data パーツ については、/clickhouse/snapshot/{table_uuid}/{part_name} に Keeper ノードが存在し、その data パーツ の圧縮サイズと非圧縮サイズが格納されます。このテーブルはそれらのノードを読み取り、現在削除から保護されているパーツを表示します。
snapshots_size > 1 のパーツは複数のスナップショットから参照されており、ロックを保持しているすべてのスナップショットがロック解除されるまで、オブジェクトストレージから削除されません。
ピン留めされているストレージの合計を確認するには: