Внешние диски для хранения данных
Данные, обрабатываемые в 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
описано в разделе plain storage, тип метаданныхweb
можно использовать только с типом объекта хранилищаweb
, тип метаданныхlocal
хранит метафайлы локально (каждый метафайл содержит сопоставление с файлами в объектном хранилище и некоторую дополнительную информацию о них).
Например, конфигурационная опция
равняется конфигурации (с 24.1
):
Конфигурация
равняется
Пример полной конфигурации хранения будет выглядеть так:
Начиная с версии ClickHouse 24.1, это также может выглядеть так:
Чтобы установить определенный тип хранения в качестве значения по умолчанию для всех таблиц MergeTree
, добавьте следующий раздел в конфигурационный файл:
Если вы хотите настроить конкретную политику хранения только для конкретной таблицы, вы можете определить ее в настройках при создании таблицы:
Вы также можете использовать disk
вместо storage_policy
. В этом случае не требуется наличие раздела storage_policy
в конфигурационном файле, достаточно будет только раздела disk
.
Динамическая конфигурация
Также существует возможность указать конфигурацию хранения без предопределенного диска в конфигурационном файле, но ее можно настроить в настройках запроса CREATE
/ATTACH
.
Следующий пример запроса основан на динамической конфигурации диска выше и демонстрирует, как использовать локальный диск для кеширования данных из таблицы, хранящейся по URL.
Пример ниже добавляет кеш к внешнему хранилищу.
В выделенных ниже настройках обратите внимание, что диск с type=web
вложен внутри
диска с type=cache
.
В примере используется type=web
, но любой тип диска может быть настроен как динамический, даже локальный диск. Локальные диски требуют аргумент path
, чтобы находиться в параметре конфигурации сервера 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
— Минимальное количество байт для использования операции поиска вместо последовательного чтения. Значение по умолчанию —1 Мб
.metadata_path
— Путь на локальной FS для хранения метафайлов для 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. Если указана пустая строка, будет использован управляемый AWS ключ S3. Необязательный.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
— Имя ресурса, которое будет использоваться для планирования запросов на чтение к этому диску. Значение по умолчанию — пустая строка (планирование ввода-вывода не включено для этого диска).write_resource
— Имя ресурса, которое будет использоваться для планирования запросов на запись к этому диску. Значение по умолчанию — пустая строка (планирование ввода-вывода не включено для этого диска).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
. См. GCS-backed MergeTree.
Использование простого хранилища
В 22.10
был введен новый тип диска s3_plain
, который предоставляет хранилище только для записи. Параметры конфигурации такие же, как для типа диска s3
.
В отличие от типа диска s3
, он хранит данные как есть, например, вместо случайно сгенерированных имен блобов, он использует обычные имена файлов (так же, как 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
, диск подключается к контейнеру напрямую, а если оставить unset - диск подключается к учетной записи, проверяет существует ли контейнерcontainer_name
и создает его, если он еще не существует.
Параметры аутентификации (диск будет пытаться все доступные методы и Managed Identity Credential):
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
- Ограничивает количество запросов, которые могут выполняться одновременно для одного объекта.
Другие параметры:
metadata_path
- Путь на локальной FS для хранения метафайлов для Blob Storage. Значение по умолчанию —/var/lib/clickhouse/disks/<disk_name>/
.skip_access_check
— Еслиtrue
, проверки доступа к диску не будут выполнены при запуске диска. Значение по умолчанию —false
.read_resource
— Имя ресурса, которое будет использоваться для планирования запросов на чтение к этому диску. Значение по умолчанию — пустая строка (планирование ввода-вывода не включено для этого диска).write_resource
— Имя ресурса, которое будет использоваться для планирования запросов на запись к этому диску. Значение по умолчанию — пустая строка (планирование ввода-вывода не включено для этого диска).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 не поддерживается, и, следовательно, могут возникнуть проблемы при его использовании. Не стесняйтесь делать запрос на исправление, если возникнет какая-либо проблема.
Имейте в виду, что 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-though" включен. Но если вам нужно отключить эту общую настройку для конкретных запросов, тогда установка 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/
- используется кэш на локальном диске
Хранилище также может быть временно настроено внутри запроса, если веб-набор данных не ожидается для рутинного использования, смотрите динамическую конфигурацию и пропустите редактирование конфигурационного файла.
Регулярный набор данных хранится на demo dataset в GitHub. Чтобы подготовить свои собственные таблицы для веб-хранилища, смотрите инструмент clickhouse-static-files-uploader
В этом запросе ATTACH TABLE
предоставленный UUID
совпадает с именем директории данных, а конечная точка — это URL для сырого контента GitHub.
Готовый тестовый случай. Вам нужно добавить эту конфигурацию в config:
А затем выполните этот запрос:
Обязательные параметры:
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 и выше. Эта функция не рекомендуется для использования в производственной среде.