Альтернативные методы резервного копирования
ClickHouse хранит данные на диске, и существует множество способов резервного копирования дисков. Ниже приведены некоторые альтернативы, которые использовались ранее и которые могут подойти для вашего сценария использования.
Дублирование исходных данных в другом месте
Часто данные, поступающие для приёма в ClickHouse, доставляются через некоторую постоянную очередь сообщений, такую как Apache Kafka. В этом случае можно настроить дополнительный набор подписчиков, которые будут читать тот же поток данных, пока он записывается в ClickHouse, и сохранять его где‑то в холодном хранилище. У большинства компаний уже есть некоторое стандартное рекомендуемое холодное хранилище, которым может быть объектное хранилище или распределённая файловая система, такая как HDFS.
Снимки файловой системы
Некоторые локальные файловые системы предоставляют функциональность создания снимков (например, ZFS),
но они могут быть не лучшим выбором для обслуживания онлайн‑запросов. Возможным решением
является создание дополнительных реплик с такой файловой системой и исключение их
из таблиц Distributed, которые используются для запросов SELECT.
Снимки на таких репликах будут недоступны для любых запросов, которые изменяют данные.
В качестве бонуса эти реплики могут иметь специальные конфигурации оборудования с большим
количеством дисков, подключённых к одному серверу, что будет экономически эффективно.
Для меньших объёмов данных может подойти простой INSERT INTO ... SELECT ... в удалённые таблицы.
Операции с партициями
ClickHouse позволяет использовать запрос ALTER TABLE ... FREEZE PARTITION ... для создания
локальной копии партиций таблицы. Это реализовано с помощью жёстких ссылок в каталог /var/lib/clickhouse/shadow/,
поэтому обычно это не потребляет дополнительное дисковое пространство для старых данных. Созданные
копии файлов не обрабатываются сервером ClickHouse, поэтому вы можете просто оставить их там:
у вас будет простая резервная копия, не требующая какой‑либо дополнительной внешней системы,
но она всё равно будет подвержена аппаратным сбоям. По этой причине лучше
скопировать их в другое место (например, в удалённое хранилище), а затем удалить локальные копии.
Распределённые файловые системы и объектные хранилища всё ещё являются хорошими вариантами для этого,
но обычные подключённые файловые серверы с достаточной ёмкостью также могут подойти
(в этом случае передача будет происходить через сетевую файловую систему или, возможно, через rsync).
Данные могут быть восстановлены из резервной копии с помощью ALTER TABLE ... ATTACH PARTITION ....
Для получения дополнительной информации о запросах, связанных с операциями с партициями, см.
документацию по ALTER.
Для автоматизации этого подхода доступен сторонний инструмент: clickhouse-backup.