Создание снимка
BACKUP с параметром experimental_lightweight_snapshot = true. Параметр id обязателен — он задаёт имя снимка и используется для обращения к нему в командах разблокировки и обсервабилити:
id и status, а id можно использовать для отслеживания операции в system.backups.
Создайте резервную копию отдельной таблицы в S3:
Восстановление в тот же сервис
snapshot_from_current_service = 1. В этом случае объекты считываются напрямую через диск пункта назначения, а не через механизм чтения удалённого снимка:
AS выполняет восстановление в таблицу с новым именем, сохраняя исходную таблицу. Чтобы перезаписать исходную таблицу, сначала удалите её:
Разблокировка снимка
FROM необязательно, если пункт назначения снимка был сохранён в Keeper при создании (это видно в столбце info таблицы system.snapshot_locks):
system.snapshot_locks, а части, на которые больше не ссылаются другие снимки, пропадают из system.snapshot_parts.
Обсервабилити
system.backups
system.backups наряду с обычными операциями резервного копирования и восстановления. Выполните запрос к этой таблице по заданному id (или по UUID, возвращённому командой):
system.snapshot_locks
system.snapshot_locks показывает зафиксированные снимки, которые в данный момент зарегистрированы в Keeper. Когда снимок фиксируется, в Keeper создаётся узел по пути /clickhouse/snapshot/committed/{snapshot_id}. Перед удалением любой части данных сервер проверяет, не удерживает ли какой-либо зафиксированный снимок блокировку на эту часть. Если удерживает, удаление не выполняется. Блокировка сохраняется, пока вы явно не разблокируете снимок.
| Столбец | Тип | Описание |
|---|---|---|
id | String | Идентификатор снимка |
info | String | Пункт назначения снимка, например S3('...') |
ctime | DateTime | Время создания этой блокировки в Keeper |
lock_path | String | Путь в Keeper для этой блокировки |
SYSTEM UNLOCK SNAPSHOT, чтобы удалить их.
Чтобы проверить, существует ли блокировка для конкретного снимка:
system.snapshot_parts
system.snapshot_parts показывает части данных, которые в данный момент закреплены как минимум одной блокировкой снимка. Для каждой заблокированной части в Keeper существует узел по пути /clickhouse/snapshot/{table_uuid}/{part_name}, содержащий размер части в сжатом и несжатом виде. Эта таблица читает эти узлы, чтобы показать, какие части в настоящее время защищены от удаления.
| Столбец | Тип | Описание |
|---|---|---|
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. |