Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for ClickHouse®
  • Начало работы
    • Все инструкции
      • Подключение собственной геобазы
      • Подключение внешних словарей
      • Управление схемами формата данных
      • Управление моделями машинного обучения
      • Настройка доступа к Object Storage
  • Управление доступом
  • Справочник Terraform
  • Метрики Yandex Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Обучающие курсы

В этой статье:

  • Создать геобазу
  • Загрузить геобазу в Yandex Object Storage
  • Подключить геобазу к кластеру ClickHouse®
  1. Пошаговые инструкции
  2. Хранение и обработка данных
  3. Подключение собственной геобазы

Подключение собственной геобазы в Managed Service for ClickHouse®

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 24 апреля 2025 г.
  • Создать геобазу
  • Загрузить геобазу в Yandex Object Storage
  • Подключить геобазу к кластеру ClickHouse®

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

Чтобы подключить к кластеру ClickHouse® собственную геобазу:

  1. Создайте ее.
  2. Загрузите геобазу в Yandex Object Storage.
  3. Подключите геобазу к кластеру ClickHouse®.

Создать геобазуСоздать геобазу

  1. Создайте файл regions_hierarchy.txt с иерархией регионов. Файл должен представлять собой таблицу в формате TSV без заголовков и со столбцами:

    • идентификатор региона (UInt32);
    • идентификатор родительского региона (UInt32);
    • тип региона (UInt8):
      • 1 — континент;
      • 3 — страна;
      • 4 — федеральный округ;
      • 5 — область;
      • 6 — город;
    • население (UInt32) — необязательный столбец.
  2. Чтобы добавить альтернативную иерархию регионов, создайте файлы regions_hierarchy_<суффикс>.txt с аналогичной структурой. Чтобы затем воспользоваться альтернативной геобазой, передайте этот суффикс при вызове функции. Например:

    • regionToCountry(RegionID) — использует словарь по умолчанию: regions_hierarchy.txt;
    • regionToCountry(RegionID, 'alt') — использует словарь с суффиксом alt: regions_hierarchy_alt.txt.
  3. Создайте файл regions_names.txt с именами регионов. Файл должен представлять собой таблицу в формате TSV без заголовков и со столбцами:

    • идентификатор региона (UInt32);
    • имя региона (String) — не может содержать символы табуляции или переводы строк, даже экранированные.
  4. Чтобы добавить в базу имена регионов на других языках, создайте файлы regions_names_<код_языка>.txt с аналогичной структурой. Например, regions_names_en.txt для английского языка и regions_names_tr.txt для турецкого.

  5. Создайте из файлов геобазы архив в формате tar, tar.gz или zip.

Загрузить геобазу в Yandex Object StorageЗагрузить геобазу в Yandex Object Storage

Managed Service for ClickHouse® работает только с геобазами, которые загружены в Yandex Object Storage и к которым предоставлен доступ на чтение:

  1. Для привязки сервисного аккаунта к кластеру назначьте вашему аккаунту в Yandex Cloud роль iam.serviceAccounts.user или выше.
  2. Загрузите архив с геобазой в Yandex Object Storage.
  3. Подключите сервисный аккаунт к кластеру. С помощью сервисного аккаунта вы настроите доступ к архиву геобазы.
  4. Назначьте роль storage.viewer сервисному аккаунту.
  5. В ACL бакета добавьте разрешение READ сервисному аккаунту.
  6. Получите ссылку на архив с геобазой.

Подключить геобазу к кластеру ClickHouse®Подключить геобазу к кластеру ClickHouse®

Консоль управления
CLI
Terraform
REST API
gRPC API
  1. В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
  2. Выберите кластер и нажмите кнопку Редактировать на панели сверху.
  3. В блоке Настройки СУБД нажмите кнопку Настроить.
  4. В поле Geobase uri укажите ссылку на архив с геобазой в Yandex Object Storage.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы подключить геобазу:

  1. Посмотрите описание команды CLI для изменения конфигурации кластера:

    yc managed-clickhouse cluster update-config --help
    
  2. Выполните команду, передав ссылку на архив с подключаемой геобазой в параметре geobase_uri:

    yc managed-clickhouse cluster update-config <имя_или_идентификатор_кластера> \
         --set geobase_uri="<ссылка_на_архив_с_геобазой_в_Object_Storage>"
    

    Идентификатор и имя кластера можно запросить со списком кластеров в каталоге.

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание кластера.

  2. Добавьте в настройки кластера Managed Service for ClickHouse® параметр geobase_uri со ссылкой на архив с подключаемой геобазой в Yandex Object Storage:

    resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" {
      ...
      clickhouse {
        config {
          geobase_uri = "<ссылка_на_архив_с_геобазой_в_Object_Storage>"
          ...
        }
      ...
      }
    ...
    }
    
  3. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Подробнее см. в документации провайдера Terraform.

Ограничения по времени

Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:

  • создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
  • изменение — 90 минут;
  • удаление — 30 минут.

Операции, длящиеся дольше указанного времени, прерываются.

Как изменить эти ограничения?

Добавьте к описанию кластера блок timeouts, например:

resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Cluster.Update и выполните запрос, например, с помощью cURL:

    Важно

    Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask (одной строкой через запятую).

    curl \
        --request PATCH \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://mdb.api.cloud.yandex.net/managed-clickhouse/v1/clusters/<идентификатор_кластера>' \
        --data '{
                  "updateMask": "configSpec.clickhouse.config.geobaseUri",
                  "configSpec": {
                    "clickhouse": {
                      "config": {
                        "geobaseUri": "<ссылка>"
                      }
                    }
                  }
                }'
    

    Где:

    • updateMask — перечень изменяемых параметров в одну строку через запятую.

      В данном случае указан только один параметр: configSpec.clickhouse.config.geobaseUri.

    • configSpec.clickhouse.config.geobaseUri — ссылка на архив с геобазой в Object Storage.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом ClusterService.Update и выполните запрос, например, с помощью gRPCurl:

    Важно

    Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре update_mask (в виде массива строк paths[]).

    Формат перечисления настроек
    "update_mask": {
        "paths": [
            "<настройка_1>",
            "<настройка_2>",
            ...
            "<настройка_N>"
        ]
    }
    
    grpcurl \
        -format json \
        -import-path ~/cloudapi/ \
        -import-path ~/cloudapi/third_party/googleapis/ \
        -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \
        -rpc-header "Authorization: Bearer $IAM_TOKEN" \
        -d '{
              "cluster_id": "<идентификатор_кластера>",
              "update_mask": {
                "paths": [
                  "config_spec.clickhouse.config.geobase_uri"
                ]
              },
              "config_spec": {
                "clickhouse": {
                  "config": {
                    "geobase_uri": "<ссылка>"
                  }
                }
              }
            }' \
        mdb.api.cloud.yandex.net:443 \
        yandex.cloud.mdb.clickhouse.v1.ClusterService.Update
    

    Где:

    • update_mask — перечень изменяемых параметров в виде массива строк paths[].

      В данном случае указан только один параметр: config_spec.clickhouse.config.geobase_uri.

    • config_spec.clickhouse.config.geobase_uri — ссылка на архив с геобазой в Object Storage.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc.

Была ли статья полезна?

Предыдущая
Управление пользователями БД
Следующая
Подключение внешних словарей
Проект Яндекса
© 2025 ООО «Яндекс.Облако»