Управление шардами в кластере ClickHouse®
Вы можете включить шардирование для кластера, а также добавлять и настраивать отдельные шарды.
Включить шардирование
Кластеры Managed Service for ClickHouse® создаются с одним шардом. Чтобы начать непосредственно шардирование данных, добавьте еще один или несколько шардов и создайте распределенную таблицу.
Создать шард
Количество шардов в кластерах Managed Service for ClickHouse® ограничено квотами на количество CPU и объем памяти, которые доступны кластерам БД в вашем облаке. Чтобы проверить используемые ресурсы, откройте страницу Квоты
- В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и перейдите на вкладку Шарды.
- Нажмите кнопку Создать шард.
- Укажите параметры шарда:
- Имя и вес.
- Чтобы скопировать схему со случайной реплики одного из шардов на хосты нового шарда, выберите опцию Копировать схему данных.
- Нужное количество хостов.
- Нажмите кнопку Создать шард.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать шард, выполните команду (в примере приведены не все доступные параметры):
yc managed-clickhouse shards add <имя_нового_шарда> \
--cluster-name=<имя_кластера> \
--host zone-id=<зона_доступности>,`
`subnet-name=<имя_подсети>
Где:
-
<имя_нового_шарда>
— должно быть уникальным в кластере.Может содержать латинские буквы, цифры, дефис и подчеркивание. Максимальная длина — 63 символа.
-
--cluster-name
— имя кластера.Имя кластера можно запросить со списком кластеров в каталоге.
-
--host
— параметры хоста:zone-id
— зона доступности.subnet-name
— имя подсети.
Примечание
Terraform не позволяет указывать вес шардов.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Добавьте к описанию кластера Managed Service for ClickHouse® блок
host
типаCLICKHOUSE
с заполненным полемshard_name
или измените существующие хосты:resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { ... host { type = "CLICKHOUSE" zone = "<зона_доступности>" subnet_id = yandex_vpc_subnet.<подсеть_в_зоне_доступности>.id shard_name = "<имя_шарда>" } }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:
- создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
- изменение — 90 минут;
- удаление — 30 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
Чтобы создать шард, воспользуйтесь методом REST API addShard для ресурса Cluster или вызовом gRPC API ClusterService/AddShard.
Чтобы скопировать схему данных со случайной реплики одного из шардов на хосты нового шарда, передайте в запросе параметр copySchema
со значением true
.
Важно
Используйте опцию копирования схемы данных только в том случае, когда схема одинакова на всех шардах кластера.
Получить список шардов в кластере
- В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера, затем выберите вкладку Шарды.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить список шардов в кластере, выполните команду:
yc managed-clickhouse shards list --cluster-name=<имя_кластера>
Имя кластера можно запросить со списком кластеров в каталоге.
Чтобы получить список шардов кластера, воспользуйтесь методом REST API listShards для ресурса Cluster или вызовом gRPC API ClusterService/ListShards.
Изменить шард
Вы можете изменить вес шарда, а также класс хоста и размер хранилища.
- В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера, затем выберите вкладку Шарды.
- Нажмите
и выберите пункт Редактировать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы изменить шард в кластере:
-
Посмотрите описание команды CLI для изменения шарда:
yc managed-clickhouse shards update --help
-
Запустите операцию, например, изменения веса для шарда:
yc managed-clickhouse shards update <имя_шарда> \ --cluster-name=<имя_кластера> \ --weight=<вес_шарда>
Где:
-
<имя_шарда>
— можно запросить со списком шардов в кластере. -
--cluster-name
— имя кластера.Имя кластера можно запросить со списком кластеров в каталоге.
-
--weight
— вес шарда. Минимальное значение —0
.
После успешного завершения операции CLI выведет информацию об измененном шарде.
-
Чтобы изменить шард, воспользуйтесь методом REST API updateShard для ресурса Cluster или вызовом gRPC API ClusterService/UpdateShard и передайте в запросе:
- Идентификатор кластера в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя шарда в параметре
shardName
. - Настройки шарда в параметре
configSpec
. - Список настроек, которые необходимо изменить, в параметре
updateMask
.
Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask
(одной строкой через запятую).
Удалить шард
Вы можете удалить шард из кластера ClickHouse®, если он не является:
- Единственным шардом.
- Единственным шардом в группе шардов.
Удаление шарда приведет к удалению всех таблиц и данных, которые находятся на этом шарде.
- В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и выберите вкладку Шарды.
- Нажмите на значок
в строке нужного хоста и выберите пункт Удалить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы удалить шард из кластера, выполните команду:
yc managed-clickhouse shards delete <имя_шарда> \
--cluster-name=<имя_кластера>
Имя шарда можно запросить со списком шардов в кластере, имя кластера — со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Удалите из описания кластера Managed Service for ClickHouse® блок
host
с описанием шарда. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Введите слово
yes
и нажмите Enter.-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:
- создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
- изменение — 90 минут;
- удаление — 30 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
Чтобы удалить шард, воспользуйтесь методом deleteShard для ресурса Cluster или вызовом gRPC API ClusterService/DeleteShard.
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc