スナップショットを作成する
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 はコミット済みスナップショットがその パーツ に対するロックを保持しているかどうかを確認します。保持している場合、その削除はスキップされます。このロックは、スナップショットを明示的にロック解除するまで保持されます。
| カラム | 型 | 説明 |
|---|---|---|
id | String | スナップショット ID |
info | String | スナップショットの保存先 (例: S3('...')) |
ctime | DateTime | このロックが Keeper で作成された時刻 |
lock_path | String | このロックの Keeper パス |
SYSTEM UNLOCK SNAPSHOT を実行してクリーンアップしてください。
特定のスナップショットロックが存在するかどうかを確認するには:
system.snapshot_parts
system.snapshot_parts は、少なくとも 1 つのスナップショットロックによって現在固定されている data パーツ を表示します。ロックされている各 data パーツ については、/clickhouse/snapshot/{table_uuid}/{part_name} に Keeper ノードが存在し、その data パーツ の圧縮サイズと非圧縮サイズが格納されます。このテーブルはそれらのノードを読み取り、現在削除から保護されているパーツを表示します。
| カラム | 型 | 説明 |
|---|---|---|
name | String | データパーツ名 |
table_id | String | このパーツが属するテーブルの UUID |
data_compressed_bytes | UInt64 | このパーツの圧縮サイズ |
data_uncompressed_bytes | UInt64 | このパーツの非圧縮サイズ |
snapshots_size | UInt64 | 現在このパーツをロックしているスナップショットの数 |
snapshots_size > 1 のパーツは複数のスナップショットから参照されており、ロックを保持しているすべてのスナップショットがロック解除されるまで、オブジェクトストレージから削除されません。
ピン留めされているストレージの合計を確認するには:
サーバー設定
| 設定 | 型 | デフォルト | 再起動なしで変更可能 | 説明 |
|---|---|---|---|---|
max_held_snapshots | UInt64 | 0 | いいえ | 同時に保持できる軽量スナップショットの最大数です。0 は無制限を意味します。上限に達すると、新しいスナップショットを作成しようとしたときに例外がスローされます。 |
max_snapshot_commit_thread_pool_size | UInt64 | 64 | はい | スナップショットのロックノードをKeeperにコミットするために使用するスレッド数です。多数のパーツを持つ大規模なテーブルでスナップショットの作成が遅い場合は、この値を増やしてください。 |
max_snapshot_commit_thread_pool_free_size | UInt64 | 0 | はい | スナップショットコミットプール内のアイドルスレッド数がこの値を超えると、ClickHouse はそれらのスレッドを解放してプールを縮小します。スレッドは必要に応じて再作成されます。0 は、アイドルスレッドが解放されないことを意味します。 |
snapshot_cleaner_period | UInt64 | 120 | いいえ | スナップショットクリーナーが、どのスナップショットロックからも参照されなくなったパーツを削除するために実行される間隔 (秒) です。ClickHouse Cloud のみ。 |
snapshot_cleaner_pool_size | UInt64 | 128 | いいえ | スナップショットクリーナーのスレッドプール内のスレッド数です。ClickHouse Cloud のみ。 |