Репликация в Managed Service for ClickHouse®
Managed Service for ClickHouse® позволяет использовать для организации репликации и распределения запросов один из следующих механизмов:
- ClickHouse® Keeper.
- ZooKeeper (по умолчанию).
В кластере с включенным механизмом репликации доступно создание реплицируемых таблиц. При этом управление репликацией осуществляется автоматически.
ClickHouse® Keeper
Примечание
Эта функциональность находится на стадии Preview. Доступ к ClickHouse® Keeper предоставляется по запросу. Обратитесь в техническую поддержку
ClickHouse® Keeper — сервис для репликации данных и выполнения распределенных DDL-запросов, реализующий совместимый с ZooKeeper клиент-серверный протокол. В отличие от ZooKeeper, ClickHouse® Keeper не требует для своей работы отдельных хостов, а выполняется на хостах ClickHouse®. Включить поддержку ClickHouse® Keeper можно только при создании кластера.
Использование ClickHouse® Keeper накладывает следующие ограничения:
- Можно создавать кластеры только из трех или более хостов.
- Поддержку ClickHouse® Keeper нельзя включить или выключить после создания кластера.
- Кластеры, использующие хосты ZooKeeper, нельзя перевести на использование ClickHouse® Keeper.
- Перенести хост c ClickHouse® Keeper в другую зону доступности можно только через обращение в службу поддержки
.
Подробнее о ClickHouse® Keeper см. в документации ClickHouse®
ZooKeeper
Если кластер состоит из одного хоста или нескольких однохостовых шардов и был создан без поддержки ClickHouse® Keeper, перед добавлением новых хостов должна быть включена отказоустойчивость кластера. При этом в кластер будет добавлено 3 хоста ZooKeeper — минимально необходимое количество для управления репликацией и отказоустойчивостью.
Также можно настроить хосты ZooKeeper сразу при создании кластера из нескольких хостов. При этом:
-
Если в виртуальной сети для кластера есть подсети в каждой из зон доступности, то в каждую подсеть автоматически будет добавлено по одному хосту ZooKeeper, если не указать настройки этих хостов явно. При необходимости можно явно указать три хоста ZooKeeper и их настройки при создании кластера.
-
Если в виртуальной сети для кластера есть подсети только в некоторых зонах доступности, то нужно явно указать три хоста ZooKeeper и их настройки при создании кластера.
-
Если вы не указали подсети для этих хостов, Managed Service for ClickHouse® автоматически распределит их по подсетям той сети, к которой подключен кластер ClickHouse®.
Минимальное количество ядер для одного хоста ZooKeeper зависит от суммарного количества ядер хостов ClickHouse®:
Суммарное количество ядер хостов ClickHouse® | Минимальное количество ядер для одного хоста ZooKeeper |
---|---|
Менее 48 | 2 |
48 и более | 4 |
Класс хостов ZooKeeper можно изменить при настройке отказоустойчивости или при изменении настроек кластера. Изменить настройки ZooKeeper или подключиться к его хостам нельзя.
Важно
Хосты ZooKeeper, если они есть, учитываются при расчете потребления ресурсов
Реплицируемые таблицы
ClickHouse® поддерживает автоматическую репликацию только для таблиц на движке семейства ReplicatedMergeTree
Важно
Рекомендуется создавать реплицируемые таблицы на всех хостах кластера, иначе может произойти потеря данных после восстановления кластера из резервной копии или миграции хостов кластера в другую зону доступности.
Чтобы создать таблицу ReplicatedMergeTree
на определенном хосте ClickHouse®, отправьте запрос следующего вида:
CREATE TABLE db_01.table_01 (
log_date date,
user_name String) ENGINE = ReplicatedMergeTree ('/table_01', '{replica}'
)
PARTITION BY log_date
ORDER BY
(log_date, user_name);
Здесь:
db_01
— имя базы данных.table_01
— имя таблицы./table_01
— путь к таблице в ZooKeeper или ClickHouse® Keeper, обязательно должен начинаться с прямого слэша/
.{replica}
— макроподстановка идентификатора хоста.
Чтобы создать реплицируемые таблицы на всех хостах кластера, отправьте распределенный DDL-запрос
CREATE TABLE db_01.table_01 ON CLUSTER '{cluster}' (
log_date date,
user_name String) ENGINE = ReplicatedMergeTree ('/table_01', '{replica}'
)
PARTITION BY log_date
ORDER BY
(log_date, user_name);
Аргумент '{cluster}'
автоматически разрешится в идентификатор кластера ClickHouse®.
Об организации взаимодействия реплицированных и распределенных таблиц в кластере ClickHouse® см. в разделе Шардирование.
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc