Как зарезервировать 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, шаг за шагом
Создайте аккаунт Dockstash и откройте панель
Зарегистрируйтесь бесплатно на app.dockstash.com/register. Одноразовый мастер настройки спросит ваш VPS для хранения (машину, где будут лежать зашифрованные резервные копии) и сгенерирует пароль шифрования — сразу сохраните его в менеджере паролей: он показывается ровно один раз.
Добавьте Docker-проект, в котором работает ClickHouse
На экране Projects Dockstash автоматически находит каждую папку Compose-проекта на сервере (по умолчанию под /var/www). Выберите проект с вашим сервисом ClickHouse. Пока ничего не резервируется — вы лишь указываете Dockstash, где живёт проект.
Проверьте, что ClickHouse распознан
Откройте проект и вкладку Plan. Dockstash читает docker-compose.yml, распознаёт образ clickhouse/clickhouse-server и добавляет слой с правильной командой резервирования — плюс имя контейнера и найденные переменные (CLICKHOUSE_USER, CLICKHOUSE_PASSWORD, CLICKHOUSE_DB). Файлы, базы и конфиги прокси можно переключать перед сохранением.
Опционально: проверьте сервер вручную
Если хотите доказательство до автоматизации, выполните clickhouse-client с SHOW DATABASES в контейнере. Вы увидите список баз (default, system и созданные приложением) — именно их нативная инструкция BACKUP DATABASE снимет как согласованные парты таблиц.
docker exec <clickhouse-container> clickhouse-client --query "SHOW DATABASES"Подтвердите место хранения
Резервные копии хранятся как зашифрованные снимки restic на вашем собственном VPS для хранения, по SSH. Если вы прошли мастер настройки, всё уже настроено; хост, пользователя, порт или SSH-ключ можно изменить в любой момент в Settings → Storage.
Настройте расписание резервного копирования
Во вкладке Schedule выберите ежедневно, еженедельно или собственный cron (валидируется при вводе). Ежедневно в тихий час — правильное умолчание для аналитических нагрузок: данные ClickHouse обычно приходят пакетами, ежечасно мало что даёт. Добавьте еженедельный prune с политикой хранения.
Запустите первую копию сейчас
Нажмите Backup Now. Dockstash выполнит нативную инструкцию BACKUP DATABASE в контейнере, получит согласованный снимок партов таблиц и передаст результат restic — живой вывод смотрите в панели логов. Первый запуск на большой таблице MergeTree может быть долгим; последующие дедуплицируются против него.
Убедитесь, что снимок существует
По завершении запуска карточка проекта показывает новое время последней копии, число снимков и размер репозитория. Откройте экран 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 по умолчанию не перезаписывают живую базу — сначала в новое место, проверка, затем осознанное продвижение.
Выберите точку восстановления
Откройте Snapshots, выберите проект и просмотрите таймлайн. Каждая строка — согласованный BACKUP вашей базы ClickHouse: замороженные парты таблиц, а не порванная копия файлов — плюс файлы проекта того же запуска.
Восстановите в новое место
Нажмите Restore и оставьте режим по умолчанию «Restore to new location». Введите имя проекта для подтверждения — осознанное действие с набором текста. Дамп и файлы попадут в выбранный целевой путь, не трогая живой проект.
Проверьте восстановленные данные
Выполните RESTORE DATABASE в тестовом контейнере ClickHouse и опросите его: SELECT count() FROM system.tables подтвердит возврат таблиц, а count() по крупнейшей MergeTree-таблице против продакшена — самый быстрый тест на правду.
docker exec <clickhouse-container> clickhouse-client --query "SELECT count() FROM system.tables"Продвигайте, когда всё проверено
Когда восстановленные данные проверены, переключите на них приложение (или повторите восстановление в режиме «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 восстанавливает последний снимок в изолированную рабочую область, сверяет каждый файл по байтам с источником и проверяет восстановленный дамп — затем ставит на проект значок «прошло/провалено». Еженедельная тренировка означает всегда свежее доказательство.