Перейти к основному содержимому
Перейти к основному содержимому

Внешние диски для хранения данных

Данные, обрабатываемые в ClickHouse, обычно хранятся в локальной файловой системе — на той же машине, где находится сервер ClickHouse. Это требует дисков большого объема, что может быть довольно дорого. Чтобы избежать этого, вы можете хранить данные удаленно. Поддерживаются различные хранилища:

  1. Amazon S3 объектное хранилище.
  2. Azure Blob Storage.
  3. Не поддерживается: Распределенная файловая система Hadoop (HDFS)
примечание
ClickHouse также поддерживает внешние движки таблиц, которые отличаются от описанного на этой странице варианта внешнего хранения, так как они позволяют читать данные, хранящиеся в каком-то общем файловом формате (например, Parquet), тогда как на этой странице мы описываем конфигурацию хранения для таблиц семейства MergeTree или Log.
  1. для работы с данными, хранящимися на дисках Amazon S3, используйте движок таблицы S3.
  2. для работы с данными, хранящимися в Azure Blob Storage, используйте движок таблицы AzureBlobStorage.
  3. Не поддерживается: для работы с данными в распределенной файловой системе Hadoop — используйте движок таблицы HDFS.

Конфигурация внешнего хранилища

Движки таблиц MergeTree и Log могут хранить данные в S3, AzureBlobStorage, HDFS (не поддерживается) с использованием диска с типами s3, azure_blob_storage, hdfs (не поддерживается) соответственно.

Конфигурация диска требует:

  1. секция type, равная одному из s3, azure_blob_storage, hdfs (не поддерживается), local_blob_storage, web.
  2. Конфигурация конкретного типа внешнего хранения.

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

  1. type, равный object_storage
  2. object_storage_type, равный одному из s3, azure_blob_storage (или просто azure с 24.3), hdfs (не поддерживается), local_blob_storage (или просто local с 24.3), web. Дополнительно можно указать metadata_type (по умолчанию равен local), но также может быть установлен в plain, web и, начиная с 24.4, plain_rewritable. Использование типа метаданных plain описано в разделе о простом хранилище, тип метаданных web может быть использован только с типом внешнего хранилища web, а тип метаданных local хранит файлы метаданных локально (каждый файл метаданных содержит отображение на файлы в объектном хранилище и некоторую дополнительную информацию о них).

Например, конфигурационная опция

равна конфигурации (с 24.1):

Конфигурация

равна

Пример полной конфигурации хранилища будет выглядеть так:

Начиная с версии ClickHouse 24.1, это может также выглядеть так:

Чтобы сделать конкретный вид хранилища опцией по умолчанию для всех таблиц MergeTree, добавьте следующий раздел в файл конфигурации:

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

Вы также можете использовать disk вместо storage_policy. В этом случае не требуется наличие секции storage_policy в файле конфигурации, только секции disk будет достаточно.

Динамическая конфигурация

Также существует возможность указать конфигурацию хранилища без предопределенного диска в конфигурационном файле, но ее можно настроить в параметрах запроса CREATE/ATTACH.

Следующий пример запроса основан на вышеописанной динамической конфигурации диска и показывает, как использовать локальный диск для кеширования данных из таблицы, хранящейся по URL.

Пример ниже добавляет кеш на внешнее хранилище.

В выделенных ниже настройках обратите внимание, что диск типа web находится внутри диска типа cache.

примечание

В примере используется type=web, но любой тип диска может быть настроен как динамический, даже локальный диск. Локальные диски требуют аргумент пути, чтобы находиться внутри параметра конфигурации сервера custom_local_disks_base_directory, который по умолчанию не имеет значения, поэтому установите его также при использовании локального диска.

Также возможна комбинация конфигурации на основе конфигурации и конфигурации, определенной через SQL:

где web — это из файла конфигурации сервера:

Использование хранилища S3

Обязательные параметры:

  • endpoint — URL конечной точки S3 в стилях path или virtual hosted styles. URL конечной точки должен содержать корзину и корневой путь для хранения данных.
  • access_key_id — идентификатор ключа доступа S3.
  • secret_access_key — секретный ключ доступа S3.

Дополнительные параметры:

  • region — название региона S3.
  • support_batch_delete — этот параметр управляет проверкой на поддержку пакетного удаления. Установите значение false при использовании Google Cloud Storage (GCS), так как GCS не поддерживает пакетные удаления, и предотвращение проверок избавит от сообщений об ошибках в логах.
  • use_environment_credentials — считывает учетные данные AWS из переменных среды AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY и AWS_SESSION_TOKEN, если они существуют. Значение по умолчанию — false.
  • use_insecure_imds_request — если установлено в true, клиент S3 будет использовать небезопасный запрос IMDS для получения учетных данных из метаданных Amazon EC2. Значение по умолчанию — false.
  • expiration_window_seconds — Период грации для проверки, истекли ли учетные данные на основе истечения времени. Необязательный, значение по умолчанию — 120.
  • proxy — Конфигурация прокси для конечной точки S3. Каждый элемент uri внутри блока proxy должен содержать URL прокси.
  • connect_timeout_ms — Таймаут подключения сокета в миллисекундах. Значение по умолчанию — 10 секунд.
  • request_timeout_ms — Таймаут запроса в миллисекундах. Значение по умолчанию — 5 секунд.
  • retry_attempts — Количество попыток повторного запроса в случае неудачи. Значение по умолчанию — 10.
  • single_read_retries — Количество попыток повторного запроса в случае разрыва соединения во время чтения. Значение по умолчанию — 4.
  • min_bytes_for_seek — Минимальное количество байт для использования операции seek вместо последовательного чтения. Значение по умолчанию — 1 Mb.
  • metadata_path — Путь на локальной файловой системе для хранения файлов метаданных для S3. Значение по умолчанию — /var/lib/clickhouse/disks/<disk_name>/.
  • skip_access_check — Если true, проверки доступа к диску не будут выполнены при запуске диска. Значение по умолчанию — false.
  • header — Добавляет указанный HTTP-заголовок к запросу к данной конечной точке. Необязательный, можно указать несколько раз.
  • server_side_encryption_customer_key_base64 — Если указано, будут установлены необходимые заголовки для доступа к объектам S3 с шифрованием SSE-C.
  • server_side_encryption_kms_key_id - Если указано, будут установлены необходимые заголовки для доступа к объектам S3 с шифрованием SSE-KMS. Если указано пустое значение, будет использован управляемый ключ S3 AWS. Необязательный.
  • server_side_encryption_kms_encryption_context - Если указано вместе с server_side_encryption_kms_key_id, будет установлен указанный заголовок контекста шифрования для SSE-KMS. Необязательный.
  • server_side_encryption_kms_bucket_key_enabled - Если указано вместе с server_side_encryption_kms_key_id, будет установлен заголовок для включения ключей корзины S3 для SSE-KMS. Необязательный, может быть true или false, по умолчанию ничего (соответствует настройке уровня корзины).
  • s3_max_put_rps — Максимальное количество запросов PUT в секунду до ограничения. Значение по умолчанию — 0 (безлимитное).
  • s3_max_put_burst — Максимальное количество запросов, которые могут быть выданы одновременно до достижения лимита запросов в секунду. По умолчанию (0 значение) равно s3_max_put_rps.
  • s3_max_get_rps — Максимальное количество запросов GET в секунду до ограничения. Значение по умолчанию — 0 (безлимитное).
  • s3_max_get_burst — Максимальное количество запросов, которые могут быть выданы одновременно до достижения лимита запросов в секунду. По умолчанию (0 значение) равно s3_max_get_rps.
  • read_resource — Имя ресурса, которое будет использоваться для распределения нагрузки чтения запросов к этому диску. Значение по умолчанию — пустая строка (планирование I/O не включено для этого диска).
  • write_resource — Имя ресурса, которое будет использоваться для распределения нагрузки записи запросов к этому диску. Значение по умолчанию — пустая строка (планирование I/O не включено для этого диска).
  • key_template — Определите формат, с помощью которого генерируются ключи объектов. По умолчанию Clickhouse берет корневой путь из опции endpoint и добавляет случайно сгенерированный суффикс. Этот суффикс представляет собой директорию с 3 случайными символами и имя файла с 29 случайными символами. С помощью этой опции вы имеете полный контроль над тем, как генерируются ключи объектов. Некоторые сценарии использования требуют наличия случайных символов в префиксе или в середине ключа объекта. Например: [a-z]{3}-prefix-random/constant-part/random-middle-[a-z]{3}/random-suffix-[a-z]{29}. Значение разбирается с помощью re2. Поддерживается только некоторый подмножество синтаксиса. Убедитесь, что ваш предпочтительный формат поддерживается, прежде чем использовать эту опцию. Диск не инициализируется, если ClickHouse не может сгенерировать ключ по значению key_template. Для этого требуется включенный флаг функции storage_metadata_write_full_object_key. Это запрещает объявление корневого пути в опции endpoint. Требуется определить опцию key_compatibility_prefix.
  • key_compatibility_prefix — Эта опция требуется, когда используется опция key_template. Чтобы иметь возможность читать ключи объектов, которые были сохранены в файлах метаданных с версией метаданных ниже VERSION_FULL_OBJECT_KEY, предыдущий корневой путь из опции endpoint должен быть указан здесь.
примечание

Google Cloud Storage (GCS) также поддерживается с использованием типа s3. См. MergeTree с поддержкой GCS.

Использование простого хранилища

В 22.10 был введен новый тип диска s3_plain, который предоставляет одноразовое хранилище. Параметры конфигурации такие же, как для типа диска s3. В отличие от типа диска s3, он хранит данные такими, какие они есть, например, вместо случайно сгенерированных имен blob, используются обычные имена файлов (так же, как ClickHouse хранит файлы на локальном диске), и не хранит никаких метаданных локально, например, это выводится из данных на s3.

Этот тип диска позволяет сохранять статическую версию таблицы, поскольку не позволяет выполнять объединения с существующими данными и не позволяет вставлять новые данные. Сценарий использования для этого типа диска — создание резервных копий, что можно сделать с помощью BACKUP TABLE data TO Disk('plain_disk_name', 'backup_name'). После этого можно выполнить RESTORE TABLE data AS data_restored FROM Disk('plain_disk_name', 'backup_name') или используя ATTACH TABLE data (...) ENGINE = MergeTree() SETTINGS disk = 'plain_disk_name'.

Конфигурация:

Начиная с 24.1 можно настроить любой объектный диск (s3, azure, hdfs (не поддерживается), local) с использованием типа метаданных plain.

Конфигурация:

Использование простого перезаписываемого хранилища S3

Новый тип диска s3_plain_rewritable был введен в 24.4. Подобно типу диска s3_plain, он не требует дополнительного хранилища для файлов метаданных; вместо этого метаданные хранятся в S3. В отличие от типа диска s3_plain, s3_plain_rewritable позволяет выполнять объединения и поддерживает операции INSERT. Мутации и репликация таблиц не поддерживаются.

Сценарий использования этого типа диска — нереплицируемые таблицы MergeTree. Хотя тип диска s3 подходит для нереплицируемых таблиц MergeTree, вы можете выбрать тип диска s3_plain_rewritable, если вам не нужны локальные метаданные для таблицы и вы готовы принять ограниченный набор операций. Это может быть полезно, например, для системных таблиц.

Конфигурация:

равна

Начиная с 24.5, возможно настроить любой объектный диск (s3, azure, local) с использованием типа метаданных plain_rewritable.

Использование Azure Blob Storage

Движки таблиц семейства MergeTree могут хранить данные в Azure Blob Storage с использованием диска типа azure_blob_storage.

Конфигурация разметки:

Параметры соединения:

  • storage_account_url - Обязательный, URL учетной записи Azure Blob Storage, например http://account.blob.core.windows.net или http://azurite1:10000/devstoreaccount1.
  • container_name - Название целевого контейнера, по умолчанию — default-container.
  • container_already_exists - Если установлено в false, в учетной записи хранения создается новый контейнер container_name, если установлено в true, диск подключается к контейнеру напрямую, а если оставлено без изменений, диск подключается к учетной записи, проверяет, существует ли контейнер container_name, и создает его, если он еще не существует.

Параметры аутентификации (диск попробует все доступные методы и учетные данные управляемой идентичности):

  • connection_string - Для аутентификации с помощью строки подключения.
  • account_name и account_key - Для аутентификации с использованием общего ключа.

Параметры ограничения (в основном для внутреннего использования):

  • s3_max_single_part_upload_size - Ограничивает размер одной загрузки блока в Blob Storage.
  • min_bytes_for_seek - Ограничивает размер области с возможностью поиска.
  • max_single_read_retries - Ограничивает количество попыток чтения чанка данных из Blob Storage.
  • max_single_download_retries - Ограничивает количество попыток загрузки читаемого буфера из Blob Storage.
  • thread_pool_size - Ограничивает количество потоков, с которыми инициализируется IDiskRemote.
  • s3_max_inflight_parts_for_one_file - Ограничивает количество запросов PUT, которые могут выполняться одновременно для одного объекта.

Другие параметры:

  • metadata_path - Путь на локальной файловой системе для хранения файлов метаданных для Blob Storage. Значение по умолчанию — /var/lib/clickhouse/disks/<disk_name>/.
  • skip_access_check - Если true, проверки доступа к диску не будут выполнены при запуске диска. Значение по умолчанию — false.
  • read_resource — Имя ресурса, которое будет использоваться для распределения нагрузки чтения запросов к этому диску. Значение по умолчанию — пустая строка (планирование I/O не включено для этого диска).
  • write_resource — Имя ресурса, которое будет использоваться для распределения нагрузки записи запросов к этому диску. Значение по умолчанию — пустая строка (планирование I/O не включено для этого диска).
  • metadata_keep_free_space_bytes - количество свободного дискового пространства для метаданных, которое должно быть резервировано.

Примеры рабочих конфигураций можно найти в каталоге интеграционных тестов (см. например, test_merge_tree_azure_blob_storage или test_azure_blob_storage_zero_copy_replication).

Репликация без копирования не готова к производству

Репликация без копирования по умолчанию отключена в версиях ClickHouse 22.8 и выше. Эта функция не рекомендуется для использования в производственной среде.

Использование хранения HDFS (не поддерживается)

В этой примерной конфигурации:

  • диск типа hdfs (не поддерживается)
  • данные размещены по адресу hdfs://hdfs1:9000/clickhouse/

Заметьте, что HDFS не поддерживается и, следовательно, могут возникнуть проблемы при его использовании. Не стесняйтесь сделать pull request с исправлением, если возникла проблема.

Имейте в виду, что HDFS может не работать в крайних случаях.

Использование шифрования данных

Вы можете зашифровать данные, хранящиеся на S3, или на внешних дисках HDFS (не поддерживается), или на локальном диске. Чтобы включить режим шифрования, в конфигурационном файле необходимо определить диск с типом encrypted и выбрать диск, на котором будут сохранены данные. Зашифрованный диск шифрует все записанные файлы на лету, и когда вы читаете файлы с зашифрованного диска, он автоматически их расшифровывает. Таким образом, вы можете работать с зашифрованным диском так же, как и с обычным.

Пример конфигурации диска:

Например, когда ClickHouse записывает данные из некоторой таблицы в файл store/all_1_1_0/data.bin на disk1, на самом деле этот файл будет записан на физическом диске по пути /path1/store/all_1_1_0/data.bin.

При записи того же файла на disk2 он будет фактически записан на физический диск по пути /path1/path2/store/all_1_1_0/data.bin в зашифрованном режиме.

Обязательные параметры:

  • typeencrypted. В противном случае зашифрованный диск не создается.
  • disk —Тип диска для хранения данных.
  • key — Ключ для шифрования и расшифровки. Тип: Uint64. Вы можете использовать параметр key_hex, чтобы закодировать ключ в шестнадцатеричном формате. Вы можете указать несколько ключей с помощью атрибута id (см. пример ниже).

Необязательные параметры:

  • path — Путь к местоположению на диске, где будут сохранены данные. Если не указано, данные будут сохранены в корневом каталоге.
  • current_key_id — Ключ, используемый для шифрования. Все указанные ключи могут быть использованы для расшифровки, и вы всегда можете переключиться на другой ключ, сохраняя доступ к ранее зашифрованным данным.
  • algorithmАлгоритм для шифрования. Возможные значения: AES_128_CTR, AES_192_CTR или AES_256_CTR. Значение по умолчанию: AES_128_CTR. Длина ключа зависит от алгоритма: AES_128_CTR — 16 байт, AES_192_CTR — 24 байта, AES_256_CTR — 32 байта.

Пример конфигурации диска:

Использование локального кеша

С версии 22.3 возможно настроить локальный кеш на дисках в конфигурации хранилища. Для версий 22.3 - 22.7 кеш поддерживается только для типа диска s3. Для версий >= 22.8 кеш поддерживается для любых типов дисков: S3, Azure, Local, Encrypted и т.д. Для версий >= 23.5 кеш поддерживается только для удалённых типов дисков: S3, Azure, HDFS (не поддерживается). Кеш использует политику кеширования LRU.

Пример конфигурации для версий 22.8 и выше:

Пример конфигурации для версий до 22.8:

Настройки конфигурации диска кеша:

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

  • path - путь к директории с кешем. По умолчанию: Не задано, этот параметр обязателен.

  • max_size - максимальный размер кеша в байтах или в удобочитаемом формате, например, ki, Mi, Gi и т.д., пример 10Gi (такой формат работает начиная с версии 22.10). Когда лимит достигнут, файлы кеша удаляются в соответствии с политикой удаления кеша. По умолчанию: Не задано, этот параметр обязателен.

  • cache_on_write_operations - разрешает включить кеш write-through (кеширование данных при любых операциях записи: INSERT запросы, фоновая слияния). По умолчанию: false. Кеш write-through можно отключить для каждого запроса с помощью параметра enable_filesystem_cache_on_write_operations (данные кешируются только если включены как настройки кеша, так и соответствующий параметр запроса).

  • enable_filesystem_query_cache_limit - позволяет ограничить размер кеша, который загружается в рамках каждого запроса (зависит от настройки пользователя max_query_cache_size). По умолчанию: false.

  • enable_cache_hits_threshold - число, которое определяет, сколько раз необходимо прочитать некоторые данные, прежде чем они будут кешированы. По умолчанию: false. Этот порог можно определить с помощью cache_hits_threshold. По умолчанию: 0, т.е. данные кешируются при первой попытке их прочитать.

  • enable_bypass_cache_with_threshold - позволяет полностью пропустить кеш в случае, если запрашиваемый диапазон чтения превышает порог. По умолчанию: false. Этот порог может быть определен с помощью bypass_cache_threashold. По умолчанию: 268435456 (256Mi).

  • max_file_segment_size - максимальный размер одного файла кеша в байтах или в удобочитаемом формате (ki, Mi, Gi и т.д., пример 10Gi). По умолчанию: 8388608 (8Mi).

  • max_elements - лимит на количество файлов кеша. По умолчанию: 10000000.

  • load_metadata_threads - количество потоков, используемых для загрузки метаданных кеша при старте. По умолчанию: 16.

Настройки запроса/профиля кеша:

Некоторые из этих параметров отключат функции кеша для запроса/профиля, которые включены по умолчанию или в настройках конфигурации диска. Например, вы можете включить кеш в конфигурации диска и отключить его для конкретного запроса/профиля, установив enable_filesystem_cache в false. Также установка cache_on_write_operations в true в конфигурации диска означает, что активен кеш "write-through". Но если вам нужно отключить эту общую настройку для конкретных запросов, то установка enable_filesystem_cache_on_write_operations в false означает, что кеш операций записи будет отключен для конкретного запроса/профиля.

  • enable_filesystem_cache - позволяет отключить кеш для запроса, даже если политика хранения была настроена с типом диска cache. По умолчанию: true.

  • read_from_filesystem_cache_if_exists_otherwise_bypass_cache - позволяет использовать кеш в запросе только если он уже существует, в противном случае данные запроса не будут записаны в локальное хранилище кеша. По умолчанию: false.

  • enable_filesystem_cache_on_write_operations - включает кеш write-through. Этот параметр работает только если параметр cache_on_write_operations в конфигурации кеша включен. По умолчанию: false. Значение по умолчанию для облака: true.

  • enable_filesystem_cache_log - включает ведение журнала в таблицу system.filesystem_cache_log. Предоставляет детальный обзор использования кеша для каждого запроса. Его можно включить для конкретных запросов или включить в профиле. По умолчанию: false.

  • max_query_cache_size - лимит для размера кеша, который может быть записан в локальное хранилище кеша. Требуется включение enable_filesystem_query_cache_limit в конфигурации кеша. По умолчанию: false.

  • skip_download_if_exceeds_query_cache - позволяет изменить поведение параметра max_query_cache_size. По умолчанию: true. Если этот параметр включен и лимит скачивания кеша во время запроса был достигнут, больше кеша не будет загружено в хранилище кеша. Если этот параметр отключен и лимит скачивания кеша во время запроса был достигнут, кеш все равно будет записан за счет удаления ранее загруженных (в рамках текущего запроса) данных, т.е. второе поведение позволяет сохранить поведение last recently used, при этом поддерживая лимит кеша запроса.

Внимание Настройки конфигурации кеша и параметры запроса кеша соответствуют последней версии ClickHouse, для более ранних версий что-то может не поддерживаться.

Системные таблицы кеша:

  • system.filesystem_cache - системные таблицы, показывающие текущее состояние кеша.

  • system.filesystem_cache_log - системная таблица, показывающая детализированное использование кеша по запросам. Требует, чтобы параметр enable_filesystem_cache_log был установлен в true.

Команды кеша:

  • SYSTEM DROP FILESYSTEM CACHE (<cache_name>) (ON CLUSTER) -- ON CLUSTER поддерживается только если не указан <cache_name>

  • SHOW FILESYSTEM CACHES -- показать список файловых систем кешей, которые были настроены на сервере. (Для версий <= 22.8 команда называется SHOW CACHES)

Результат:

  • DESCRIBE FILESYSTEM CACHE '<cache_name>' - показать конфигурацию кеша и некоторую общую статистику для конкретного кеша. Имя кеша можно получить из команды SHOW FILESYSTEM CACHES. (Для версий <= 22.8 команда называется DESCRIBE CACHE)

Текущие метрики кеша:

  • FilesystemCacheSize

  • FilesystemCacheElements

Асинхронные метрики кеша:

  • FilesystemCacheBytes

  • FilesystemCacheFiles

События профиля кеша:

  • CachedReadBufferReadFromSourceBytes, CachedReadBufferReadFromCacheBytes,

  • CachedReadBufferReadFromSourceMicroseconds, CachedReadBufferReadFromCacheMicroseconds

  • CachedReadBufferCacheWriteBytes, CachedReadBufferCacheWriteMicroseconds

  • CachedWriteBufferCacheWriteBytes, CachedWriteBufferCacheWriteMicroseconds

Использование статического веб-хранилища (только для чтения)

Это диск только для чтения. Его данные только читаются и никогда не модифицируются. Новая таблица загружается на этот диск с помощью запроса ATTACH TABLE (см. пример ниже). Локальный диск на самом деле не используется, каждый запрос SELECT приведет к http-запросу для получения необходимых данных. Все модификации данных таблицы приведут к исключению, т.е. следующие типы запросов не разрешены: CREATE TABLE, ALTER TABLE, RENAME TABLE, DETACH TABLE и TRUNCATE TABLE. Веб-хранилище может использоваться только для чтения. Пример использования - для размещения демонстрационных данных или для перемещения данных. Есть инструмент clickhouse-static-files-uploader, который подготавливает директорию данных для данной таблицы (SELECT data_paths FROM system.tables WHERE name = 'table_name'). Для каждой таблицы, которая вам нужна, вы получаете директорию с файлами. Эти файлы можно загрузить на, например, веб-сервер со статическими файлами. После этой подготовки вы можете загрузить эту таблицу на любой сервер ClickHouse через DiskWeb.

В этой примерной конфигурации:

  • тип диска web
  • данные размещены по адресу http://nginx:80/test1/
  • используется кеш на локальном хранилище
подсказка

Хранилище также может быть настроено временно в рамках запроса, если веб-набор данных не предполагается использовать регулярно, см. динамическую конфигурацию и пропустите редактирование файла конфигурации.

подсказка

В GitHub размещен демонстрационный набор данных. Чтобы подготовить свои собственные таблицы для веб-хранилища, смотрите инструмент clickhouse-static-files-uploader.

В этом запросе ATTACH TABLE предоставленный UUID соответствует имени директории с данными, а конечная точка - это URL для сырого содержимого GitHub.

Готовый тестовый случай. Вам нужно добавить эту конфигурацию в конфиг:

А затем выполните этот запрос:

Обязательные параметры:

  • typeweb. В противном случае диск не будет создан.
  • endpoint — URL конечной точки в формате пути. URL конечной точки должен содержать корневой путь для хранения данных, куда они были загружены.

Необязательные параметры:

  • min_bytes_for_seek — минимальное количество байт для использования операции поиска вместо последовательного чтения. Значение по умолчанию: 1 Мб.
  • remote_fs_read_backoff_threashold — максимальное время ожидания при попытках чтения данных для удалённого диска. Значение по умолчанию: 10000 секунд.
  • remote_fs_read_backoff_max_tries — максимальное количество попыток чтения с использованием задержки. Значение по умолчанию: 5.

Если запрос завершается с исключением DB:Exception Unreachable URL, то вы можете попробовать настроить параметры: http_connection_timeout, http_receive_timeout, keep_alive_timeout.

Чтобы получить файлы для загрузки, выполните: clickhouse static-files-disk-uploader --metadata-path <path> --output-dir <dir> (--metadata-path можно найти в запросе SELECT data_paths FROM system.tables WHERE name = 'table_name').

При загрузке файлов через endpoint их необходимо загружать в путь <endpoint>/store/, но конфигурация должна содержать только endpoint.

Если URL недоступен при загрузке диска во время запуска сервера таблицы, то все ошибки будут зарегистрированы. Если в этом случае произошли ошибки, таблицы можно перезагрузить (стать видимыми) через DETACH TABLE table_name -> ATTACH TABLE table_name. Если метаданные успешно загружены во время запуска сервера, то таблицы доступны сразу.

Используйте http_max_single_read_retries для ограничения максимального числа попыток чтения во время одного HTTP-сканирования.

Репликация без копий (не готово для производства)

Репликация без копий возможна, но не рекомендуется, с дисками S3 и HDFS (не поддерживается). Репликация без копий означает, что если данные хранятся удаленно на нескольких машинах и требуют синхронизации, то реплицируется только метаданные (пути к частям данных), но не сами данные.

Репликация без копий не готова для производства

Репликация без копий отключена по умолчанию в версии ClickHouse 22.8 и выше. Эта функция не рекомендуется для использования в производственной среде.