Skip to main content
Эта страница не применима к ClickHouse Cloud. Описанная здесь возможность недоступна в сервисах ClickHouse Cloud. Дополнительные сведения см. в руководстве ClickHouse Cloud Compatibility.
Табличная функция s3 и тип диска S3 в ClickHouse совместимы с SeaweedFS — распределённым хранилищем объектов с открытым исходным кодом и S3-совместимым шлюзом. SeaweedFS нативно поддерживает запросы в стиле path-style, поэтому самоуправляемое хранилище работает без wildcard DNS. SeaweedFS также поддерживает таблицы Iceberg: в его бакетах таблиц данные хранятся в виде файлов Parquet, а встроенный REST-каталог Iceberg предоставляет метаданные таблиц. О выполнении запросов к ним через ту же конечную точку см. руководство по каталогу SeaweedFS. Используйте SeaweedFS 4.42 или более новую версию. В более ранних версиях объект может быть удалён, если коммит его записи происходит одновременно с удалением родительской папки как пустой. Сразу после успешной записи это проявляется сообщением Object ... suddenly disappeared.

Запуск SeaweedFS на локальной машине

Для локального тестирования создайте файл s3config.json с учетными данными S3:
Затем запустите весь стек SeaweedFS в одном контейнере — флаг -bucket создаст бакет при запуске:
-admin.port=12646 обеспечивает, чтобы административный порт gRPC, который SeaweedFS на его основе определяет, находился ниже диапазона эфемерных портов Linux, иначе при запуске его первым могло бы занять соединение. Конечная точка S3 доступна на порту 8333; прежде чем продолжить, дождитесь ответа:
Дополнительные бакеты можно создать в любое время с помощью команды echo "s3.bucket.create -name mybucket" | docker exec -i seaweedfs weed shell. По умолчанию запись подтверждается после передачи операционной системе. Чтобы перед подтверждением выполнять fsync каждой записи на диск, включите fsync для бакета:

MergeTree с бэкендом S3

Конфигурация MergeTree с бэкендом S3 совместима после внесения незначительных изменений:
Конечная точка содержит имя бакета (clickhouse), за которым следует префикс пути (tables/) для данных таблицы. SeaweedFS не требует указания региона, поэтому соответствующий тег можно оставить пустым. Замените seaweedfs на хост, на котором запущен шлюз S3.
Затем таблицы размещают данные в SeaweedFS с помощью политики хранения:
Чтобы локально кэшировать часто считываемые данные, создайте таблицу с SETTINGS disk = 's3_cache' — определённый выше кэш-диск является обёрткой для S3-диска.

Табличная функция s3

Табличная функция s3 читает и записывает объекты через одну и ту же конечную точку:
Глоб-шаблоны позволяют читать несколько объектов.

Резервное копирование и восстановление

BACKUP и RESTORE поддерживают конечную точку SeaweedFS в качестве пункта назначения S3:
Последнее изменение 26 августа 2026 г.