Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Yandex Managed Service for ClickHouse
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к базе данных
    • Остановка и запуск кластера
    • SQL-запросы в консоли управления
    • Изменение настроек кластера и базы данных
    • Настройка доступа к ObjectStorage
    • Подключение внешних словарей
    • Подключение собственной геобазы
    • Управление моделями машинного обучения
    • Управление схемами формата данных
    • Подключение к DataLens
    • Изменение версии ClickHouse
    • Управление хостами ZooKeeper
    • Управление хостами ClickHouse
    • Управление базами данных
    • Управление пользователями БД
    • Управление резервными копиями
    • Управление шардами
    • Управление группами шардов
    • Просмотр логов кластера
    • Удаление кластера
    • Мониторинг состояния кластера и хостов
  • Практические руководства
    • Добавление данных в БД
    • Шардирование таблиц
    • Использование гибридного хранилища
    • Получение данных из Managed Service for Apache Kafka®
    • Получение данных из RabbitMQ
    • Обмен данными с Data Proc
    • Настройка Yandex Cloud DNS для доступа к кластеру из других облачных сетей
    • Анализ логов Object Storage при помощи DataLens
    • Настройка кластера под Graphite
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
      • Действующие классы хостов
      • Архив
        • До 1 июня 2020 года
      • Использование устаревших классов хостов
    • Сеть в Managed Service for ClickHouse
    • Квоты и лимиты
    • Типы хранилища
    • Резервные копии
    • Репликация
    • Словари
    • Шардирование
    • Техническое обслуживание
    • Поддерживаемые клиенты
    • Управление памятью в Managed Service for ClickHouse
    • Политика работы с версиями ClickHouse
    • Настройки ClickHouse
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • До 1 января 2019 года
      • С 1 января до 1 марта 2019 года
      • С 1 марта 2019 года до 1 февраля 2020 года
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • BackupService
      • ClusterService
      • DatabaseService
      • FormatSchemaService
      • MlModelService
      • ResourcePresetService
      • UserService
      • VersionsService
      • OperationService
    • REST (англ.)
      • Overview
      • Backup
        • Overview
        • get
        • list
      • Cluster
        • Overview
        • addHosts
        • addShard
        • addZookeeper
        • backup
        • create
        • createExternalDictionary
        • createShardGroup
        • delete
        • deleteExternalDictionary
        • deleteHosts
        • deleteShard
        • deleteShardGroup
        • get
        • getShard
        • getShardGroup
        • list
        • listBackups
        • listHosts
        • listLogs
        • listOperations
        • listShardGroups
        • listShards
        • move
        • rescheduleMaintenance
        • restore
        • start
        • stop
        • streamLogs
        • update
        • updateHosts
        • updateShard
        • updateShardGroup
      • Database
        • Overview
        • create
        • delete
        • get
        • list
      • FormatSchema
        • Overview
        • create
        • delete
        • get
        • list
        • update
      • MlModel
        • Overview
        • create
        • delete
        • get
        • list
        • update
      • ResourcePreset
        • Overview
        • get
        • list
      • User
        • Overview
        • create
        • delete
        • get
        • grantPermission
        • list
        • revokePermission
        • update
      • Versions
        • Overview
        • list
      • Operation
        • Overview
        • get
  • История изменений
  • Вопросы и ответы
    • Общие вопросы
    • Вопросы о ClickHouse
    • Подключение
    • Изменение кластера
    • Настройки параметров кластера
    • Перемещение и восстановление кластера
    • Мониторинг и логи
    • Все вопросы на одной странице
  1. Концепции
  2. Репликация

Репликация ClickHouse

Статья создана
Yandex Cloud
  • ClickHouse Keeper
  • ZooKeeper
  • Реплицируемые таблицы

Managed Service for ClickHouse позволяет использовать для организации репликации и распределения запросов один из следующих механизмов:

  • ClickHouse Keeper.
  • ZooKeeper (по умолчанию).

Это позволяет использовать реплицируемые таблицы в кластере с несколькими хостами в шарде. При этом управление репликацией осуществляется автоматически.

Из-за ограниченных ресурсов хосты классов b1.nano, b1.micro, b2.nano и b2.micro не реплицируются.

ClickHouse Keeper

Примечание

Эта функциональность находится на стадии Preview. Доступ к ClickHouse Keeper предоставляется по запросу. Обратитесь в техническую поддержку или к вашему аккаунт-менеджеру.

ClickHouse Keeper — сервис для репликации данных и выполнения распределенных DDL-запросов, реализующий совместимый с ZooKeeper клиент-серверный протокол. В отличие от ZooKeeper, ClickHouse Keeper не требует для своей работы отдельных хостов, а выполняется на хостах ClickHouse. Включить поддержку ClickHouse Keeper можно только при создании кластера.

Использование ClickHouse Keeper накладывает следующие ограничения:

  • Можно создавать кластеры только из трех или более хостов.
  • Поддержку ClickHouse Keeper нельзя включить или выключить после создания кластера.
  • Минимальная версия ClickHouse, необходимая для использования ClickHouse Keeper — 22.3.
  • Кластеры, использующие хосты ZooKeeper, нельзя перевести на использование ClickHouse Keeper.

Подробнее о ClickHouse Keeper см. в документации ClickHouse.

ZooKeeper

Если кластер был создан без поддержки ClickHouse Keeper, перед добавлением в шард из одного хоста новых хостов необходимо включить отказоустойчивость кластера, если она еще не включена. При этом в кластер будет добавлено 3 хоста ZooKeeper — минимально необходимое количество для управления репликацией и отказоустойчивостью.

Включить отказоустойчивость и настроить хосты ZooKeeper можно после создания кластера из одного хоста.

Также можно настроить хосты ZooKeeper сразу при создании кластера из нескольких хостов. При этом:

  • Если в виртуальной сети для кластера есть подсети в каждой из зон доступности, то в каждую подсеть автоматически будет добавлено по одному хосту ZooKeeper, если не указать настройки этих хостов явно. При необходимости можно явно указать три хоста ZooKeeper и их настройки при создании кластера.

  • Если в виртуальной сети для кластера есть подсети только в некоторых зонах доступности, то нужно явно указать три хоста ZooKeeper и их настройки при создании кластера.

  • Если вы не указали подсети для этих хостов, Managed Service for ClickHouse автоматически распределит их по подсетям той сети, к которой подключен ClickHouse-кластер.

По умолчанию для ZooKeeper используются хосты минимального класса. Класс хостов ZooKeeper можно изменить при настройке отказоустойчивости или при изменении настроек кластера. Изменить настройки ZooKeeper или подключиться к его хостам нельзя.

Важно

Обратите внимание, что:

  • Хосты ZooKeeper, если они есть, учитываются при расчете потребления ресурсов и стоимости кластера.
  • Если вы создали кластер и затем включили отказоустойчивость, то уменьшить количество хостов до одного в шардах из нескольких хостов будет невозможно.

Реплицируемые таблицы

ClickHouse поддерживает автоматическую репликацию только для таблиц на движке семейства ReplicatedMergeTree. Чтобы обеспечить репликацию, вы можете создать такие таблицы на каждом хосте по отдельности или использовать распределенный DDL-запрос.

Важно

Рекомендуется создавать реплицируемые таблицы на всех хостах кластера, иначе после восстановления кластера из резервной копии может произойти потеря данных. Подробнее см. в разделе Резервные копии.

Чтобы создать таблицу 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 см. в разделе Шардирование.

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

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • ClickHouse Keeper
  • ZooKeeper
  • Реплицируемые таблицы