В этом руководстве рассматривается, как использовать ClickHouse и S3 для реализации архитектуры с раздельными хранилищем и вычислительными ресурсами.
Разделение хранилища и вычислительных ресурсов означает, что вычислительные ресурсы и ресурсы хранения управляются независимо друг от друга. В ClickHouse это обеспечивает лучшую масштабируемость, экономическую эффективность и гибкость. При необходимости вы можете масштабировать ресурсы хранения и вычислений по отдельности, оптимизируя производительность и затраты.
Использование ClickHouse с S3 в качестве хранилища особенно полезно в сценариях, где производительность запросов к «холодным» данным менее критична. ClickHouse поддерживает использование S3 в качестве хранилища для движка MergeTree с помощью S3BackedMergeTree. Этот движок таблицы позволяет воспользоваться преимуществами S3 в плане масштабируемости и снижения затрат, сохраняя при этом производительность вставки и запросов движка MergeTree.
Обратите внимание: реализация и сопровождение архитектуры с раздельными хранилищем и вычислительными ресурсами сложнее, чем стандартные развертывания ClickHouse. Хотя самоуправляемый ClickHouse позволяет разделять хранилище и вычисления, как описано в этом руководстве, мы рекомендуем использовать ClickHouse Cloud, который позволяет использовать ClickHouse в такой архитектуре без дополнительной настройки с помощью движка таблицы SharedMergeTree.
Это руководство предполагает, что вы используете ClickHouse версии 22.8 или выше.
Не настраивайте никаких политик жизненного цикла AWS/GCS. Это не поддерживается и может привести к повреждению таблиц.
1. Используйте S3 в качестве диска ClickHouse
Создайте новый файл в каталоге ClickHouse config.d, чтобы сохранить конфигурацию хранилища:
Скопируйте следующий XML во вновь созданный файл, заменив BUCKET, ACCESS_KEY_ID, SECRET_ACCESS_KEY на параметры AWS-бакета, в котором вы хотите хранить данные:
Если вам нужно дополнительно настроить диск S3 — например, указать region или отправить пользовательский HTTP-header, — список соответствующих параметров можно найти здесь.
Вы также можете заменить access_key_id и secret_access_key следующими значениями — в этом случае система попытается получить учетные данные из переменных окружения и метаданных Amazon EC2:
После создания файла конфигурации необходимо изменить владельца и группу файла на пользователя и группу clickhouse:
Теперь можно перезапустить сервер ClickHouse, чтобы изменения применились:
2. Создайте таблицу на базе S3
Чтобы проверить, что диск S3 настроен правильно, можно попробовать создать таблицу и выполнить к ней запрос.
Создайте таблицу, указав новую политику хранения S3:
Обратите внимание, что нам не пришлось указывать движок как S3BackedMergeTree. ClickHouse автоматически преобразует тип движка внутри системы, если обнаруживает, что таблица использует S3 в качестве хранилища.
Убедитесь, что таблица была создана с правильной политикой:
Вы должны увидеть следующий результат:
Теперь вставим несколько строк в нашу новую таблицу:
Давайте проверим, что строки были вставлены:
В консоли AWS, если данные были успешно записаны в S3, вы увидите, что ClickHouse создал новые файлы в указанном вами бакете.
Если всё прошло успешно, значит, вы уже используете ClickHouse с разделением хранилища и вычислительных ресурсов!
3. Настройка репликации для отказоустойчивости (необязательно)
Не настраивайте политики жизненного цикла AWS/GCS. Это не поддерживается и может привести к повреждению таблиц.
Для отказоустойчивости можно использовать несколько узлов сервера ClickHouse, распределённых по нескольким регионам AWS, с отдельным S3 бакетом для каждого узла.
Репликацию с S3-дисками можно настроить с помощью движка таблицы ReplicatedMergeTree. Подробности см. в следующем руководстве:
Последнее изменение 12 июня 2026 г.