Как зарезервировать Docker-контейнер ClickHouse (2026)

ClickHouse требует согласованного дампа до того, как в дело вступит restic. Dockstash выполняет `clickhouse-client --query "BACKUP DATABASE default TO Disk('backups', 'snapshot')"` внутри контейнера, забирает вывод и хранит его зашифрованным вовне — он никогда не копирует /var/lib/clickhouse вживую, потому что нативная инструкция BACKUP согласованно замораживает парты таблиц: ClickHouse мержит и мутирует парты в фоне, где сырая копия порвалась бы.

Обнаружение

Что находит Dockstash

Найденные переменные окруженияCLICKHOUSE_USER, CLICKHOUSE_PASSWORD, CLICKHOUSE_DB
Порт по умолчанию8123
Живые пути данных (никогда не копируются вживую)/var/lib/clickhouse
Примеры образовclickhouse/clickhouse-server:24, clickhouse/clickhouse-server, yandex/clickhouse-server
Шаг за шагом

Резервируем ClickHouse с Dockstash, шаг за шагом

  1. Создайте аккаунт Dockstash и откройте панель

    Зарегистрируйтесь бесплатно на app.dockstash.com/register. Одноразовый мастер настройки спросит ваш VPS для хранения (машину, где будут лежать зашифрованные резервные копии) и сгенерирует пароль шифрования — сразу сохраните его в менеджере паролей: он показывается ровно один раз.

  2. Добавьте Docker-проект, в котором работает ClickHouse

    На экране Projects Dockstash автоматически находит каждую папку Compose-проекта на сервере (по умолчанию под /var/www). Выберите проект с вашим сервисом ClickHouse. Пока ничего не резервируется — вы лишь указываете Dockstash, где живёт проект.

  3. Проверьте, что ClickHouse распознан

    Откройте проект и вкладку Plan. Dockstash читает docker-compose.yml, распознаёт образ clickhouse/clickhouse-server и добавляет слой с правильной командой резервирования — плюс имя контейнера и найденные переменные (CLICKHOUSE_USER, CLICKHOUSE_PASSWORD, CLICKHOUSE_DB). Файлы, базы и конфиги прокси можно переключать перед сохранением.

  4. Опционально: проверьте сервер вручную

    Если хотите доказательство до автоматизации, выполните clickhouse-client с SHOW DATABASES в контейнере. Вы увидите список баз (default, system и созданные приложением) — именно их нативная инструкция BACKUP DATABASE снимет как согласованные парты таблиц.

    docker exec <clickhouse-container> clickhouse-client --query "SHOW DATABASES"
  5. Подтвердите место хранения

    Резервные копии хранятся как зашифрованные снимки restic на вашем собственном VPS для хранения, по SSH. Если вы прошли мастер настройки, всё уже настроено; хост, пользователя, порт или SSH-ключ можно изменить в любой момент в Settings → Storage.

  6. Настройте расписание резервного копирования

    Во вкладке Schedule выберите ежедневно, еженедельно или собственный cron (валидируется при вводе). Ежедневно в тихий час — правильное умолчание для аналитических нагрузок: данные ClickHouse обычно приходят пакетами, ежечасно мало что даёт. Добавьте еженедельный prune с политикой хранения.

  7. Запустите первую копию сейчас

    Нажмите Backup Now. Dockstash выполнит нативную инструкцию BACKUP DATABASE в контейнере, получит согласованный снимок партов таблиц и передаст результат restic — живой вывод смотрите в панели логов. Первый запуск на большой таблице MergeTree может быть долгим; последующие дедуплицируются против него.

  8. Убедитесь, что снимок существует

    По завершении запуска карточка проекта показывает новое время последней копии, число снимков и размер репозитория. Откройте экран Snapshots: точка восстановления появится на таймлайне — это ваше доказательство, что копия дошла до внешнего хранилища.

Команды

Команда дампа

clickhouse-client --query "BACKUP DATABASE default TO Disk('backups', 'snapshot')"

Команда восстановления

clickhouse-client --query "RESTORE DATABASE default FROM Disk('backups', 'snapshot')"

нативная инструкция BACKUP согласованно замораживает парты таблиц: ClickHouse мержит и мутирует парты в фоне, где сырая копия порвалась бы.

Восстановить и проверить

Восстановите копию ClickHouse и докажите, что она работает

Резервная копия ClickHouse становится настоящей только после восстановления. Восстановления Dockstash по умолчанию не перезаписывают живую базу — сначала в новое место, проверка, затем осознанное продвижение.

  1. Выберите точку восстановления

    Откройте Snapshots, выберите проект и просмотрите таймлайн. Каждая строка — согласованный BACKUP вашей базы ClickHouse: замороженные парты таблиц, а не порванная копия файлов — плюс файлы проекта того же запуска.

  2. Восстановите в новое место

    Нажмите Restore и оставьте режим по умолчанию «Restore to new location». Введите имя проекта для подтверждения — осознанное действие с набором текста. Дамп и файлы попадут в выбранный целевой путь, не трогая живой проект.

  3. Проверьте восстановленные данные

    Выполните RESTORE DATABASE в тестовом контейнере ClickHouse и опросите его: SELECT count() FROM system.tables подтвердит возврат таблиц, а count() по крупнейшей MergeTree-таблице против продакшена — самый быстрый тест на правду.

    docker exec <clickhouse-container> clickhouse-client --query "SELECT count() FROM system.tables"
  4. Продвигайте, когда всё проверено

    Когда восстановленные данные проверены, переключите на них приложение (или повторите восстановление в режиме «Overwrite existing» — явный опт-ин). Ещё лучше: пусть еженедельная тренировка восстановления делает это доказательство автоматически, чтобы восстановление никогда не было вашей первой репетицией.

Подводные камни

Каких ловушек избегать

  • Никогда не запускайте restic по живому каталогу /var/lib/clickhouse/store — парты мержатся и мутируют в фоне, сырая копия несогласована.
  • SQL BACKUP/RESTORE требует настроенного резервного диска в конфиге сервера; без него используйте clickhouse-backup, замораживающий парты через hardlink.
  • Большие MergeTree-таблицы дают большие копии; инкрементальная дедупликация restic помогает, но начальный BACKUP может быть увесистым.
Устранение неполадок

Типичные проблемы резервирования ClickHouse

Симптом
BACKUP DATABASE падает с ошибкой о неизвестном или отсутствующем диске.
Причина
Нативная инструкция BACKUP пишет на именованный резервный диск, а в конфигурации сервера он не объявлен.
Решение
Добавьте диск backups в <storage_configuration> (или запись разрешённого диска <backups>) в конфиг ClickHouse и перезапустите — либо перейдите на инструмент clickhouse-backup, замораживающий парты через hardlink без настроенного диска.
Симптом
Сырая копия /var/lib/clickhouse после восстановления даёт сервер с битыми или отсутствующими партами.
Причина
ClickHouse непрерывно мержит и мутирует парты в фоне; копия файлов во время мержей захватывает каталоги посреди перезаписи.
Решение
Никогда не копируйте живой каталог данных. Используйте BACKUP DATABASE или clickhouse-backup — оба сперва замораживают согласованный набор партов — и пусть Dockstash передаст этот вывод restic.
Симптом
Первая копия огромна и идёт намного дольше ожидаемого.
Причина
На больших MergeTree-таблицах начальный BACKUP материализует каждый парт один раз; меньшей стартовой точки не существует.
Решение
Дайте первому запуску закончиться — дедупликация restic и инкрементальный режим BACKUP держат все последующие запуски маленькими. Смотрите прогресс в панели логов и тренд размера на карточке проекта.

Сделайте это в один клик с Dockstash

Dockstash выполняет ровно тот дамп, что выше, передаёт его restic вовне и автоматически проверяет восстановление тренировкой — без скриптов на поддержке.

Последнее обновление: July 2026

Часто задаваемые вопросы

Как правильно резервировать ClickHouse?

Нативной инструкцией BACKUP (BACKUP DATABASE ... TO Disk(...)) или инструментом clickhouse-backup. Оба дают согласованный снимок партов таблиц. Dockstash затем передаёт получившийся каталог restic.

Можно ли вместо этого копировать /var/lib/clickhouse?

Нет. ClickHouse непрерывно мержит и мутирует парты в фоне: копия живого каталога несогласована. Инструкция BACKUP или clickhouse-backup замораживают парты безопасно.

Инструкция BACKUP или clickhouse-backup — что выбрать?

Нативная инструкция проще всего при настроенном резервном диске. clickhouse-backup удобен для заморозки партов через hardlink и их отправки, особенно на старых версиях. Dockstash принимает любой вывод.

Инкрементальны ли копии ClickHouse?

Инструкция BACKUP поддерживает инкрементальные копии относительно базовой, а restic добавляет собственную дедупликацию сверху: повторные снимки остаются компактными.

Как часто резервировать ClickHouse?

Ежедневно — практичный вариант: аналитические данные приходят пакетами, а дедупликация restic делает ежедневные снимки дешёвыми. На Free копии вручную (Backup Now); Pro — до ежечасных, Business — любой cron.

Где на самом деле живут резервные копии?

На вашем собственном VPS для хранения, как зашифрованные снимки restic, отправляемые по SSH. Dockstash никогда не держит ваши данные в чужом облаке — вы указываете машину под вашим контролем, а репозиторий зашифрован паролем, который есть только у вас.

Как узнать, что копия восстановима, без ручного восстановления?

Запланируйте тренировку восстановления. Dockstash восстанавливает последний снимок в изолированную рабочую область, сверяет каждый файл по байтам с источником и проверяет восстановленный дамп — затем ставит на проект значок «прошло/провалено». Еженедельная тренировка означает всегда свежее доказательство.