Внешние диски для хранения данных
Данные, обрабатываемые в ClickHouse, обычно хранятся в локальной файловой системе — на той же машине, где находится сервер ClickHouse. Это требует дисков большого объема, что может быть довольно дорого. Чтобы избежать этого, вы можете хранить данные удаленно. Поддерживаются различные хранилища:
- Amazon S3 объектное хранилище.
- Azure Blob Storage.
- Не поддерживается: Распределенная файловая система Hadoop (HDFS)
MergeTree
или Log
.- для работы с данными, хранящимися на дисках
Amazon S3
, используйте движок таблицы S3. - для работы с данными, хранящимися в Azure Blob Storage, используйте движок таблицы AzureBlobStorage.
- Не поддерживается: для работы с данными в распределенной файловой системе Hadoop — используйте движок таблицы HDFS.
Конфигурация внешнего хранилища
Движки таблиц MergeTree и Log могут хранить данные в S3
, AzureBlobStorage
, HDFS
(не поддерживается) с использованием диска с типами s3
, azure_blob_storage
, hdfs
(не поддерживается) соответственно.
Конфигурация диска требует:
- секция
type
, равная одному изs3
,azure_blob_storage
,hdfs
(не поддерживается),local_blob_storage
,web
. - Конфигурация конкретного типа внешнего хранения.
Начиная с версии ClickHouse 24.1, стало возможным использовать новую опцию конфигурации. Необходимо указать:
type
, равныйobject_storage
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
в зашифрованном режиме.
Обязательные параметры:
type
—encrypted
. В противном случае зашифрованный диск не создается.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.
Готовый тестовый случай. Вам нужно добавить эту конфигурацию в конфиг:
А затем выполните этот запрос:
Обязательные параметры:
type
—web
. В противном случае диск не будет создан.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 и выше. Эта функция не рекомендуется для использования в производственной среде.