스냅샷 생성
experimental_lightweight_snapshot = true와 함께 표준 BACKUP 명령을 사용합니다. id 설정은 필수이며, 스냅샷 이름을 지정하고 잠금 해제 및 관측성 명령에서 이를 참조하는 데 사용됩니다:
id와 status를 반환하며, id를 사용해 system.backups에서 작업을 추적할 수 있습니다.
단일 테이블을 S3로 백업합니다:
동일한 서비스로 복원
snapshot_from_current_service = 1을 사용하여 외부 백업 버킷에서 동일한 서비스로 스냅샷을 복원할 수 있습니다. 이 경우 원격 스냅샷 리더를 거치지 않고 대상 디스크를 통해 객체를 직접 읽습니다:
AS 절은 원본 테이블은 그대로 둔 채 새 테이블 이름으로 복원합니다. 원본 테이블을 덮어쓰려면 먼저 삭제하십시오:
스냅샷 잠금 해제
FROM 절은 선택 사항입니다(system.snapshot_locks의 info 컬럼에서 확인할 수 있음):
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 part)를 삭제하기 전에 커밋된 스냅샷이 해당 파트에 대한 잠금을 보유하고 있는지 확인합니다. 잠금이 있으면 삭제를 건너뜁니다. 잠금은 스냅샷을 명시적으로 잠금 해제할 때까지 유지됩니다.
| 컬럼 | 유형 | 설명 |
|---|---|---|
id | String | 스냅샷 ID |
info | String | 스냅샷 대상(예: S3('...')) |
ctime | DateTime | 이 잠금이 Keeper에 생성된 시점 |
lock_path | String | 이 잠금의 Keeper 경로 |
SYSTEM UNLOCK SNAPSHOT을 실행하여 정리하십시오.
특정 스냅샷 잠금이 존재하는지 확인하려면:
system.snapshot_parts
system.snapshot_parts는 현재 하나 이상의 스냅샷 잠금에 의해 고정된 데이터 파트를 보여줍니다. 잠긴 각 파트마다 /clickhouse/snapshot/{table_uuid}/{part_name}에 해당 파트의 압축된 크기와 압축되지 않은 크기를 포함하는 Keeper 노드가 존재합니다. 이 테이블은 해당 노드를 읽어 현재 삭제되지 않도록 보호되고 있는 파트를 보여줍니다.
| 컬럼 | 유형 | 설명 |
|---|---|---|
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에서만 사용할 수 있습니다. |