Перейти к основному содержанию
Перейти к основному содержанию

Балансировка данных

ClickHouse не поддерживает автоматическую перебалансировку шардов. Однако есть несколько способов перебалансировать шарды, в порядке предпочтения:

  1. Скорректировать шард для распределённой таблицы, сместив новые записи в пользу нового шарда. Это потенциально может привести к дисбалансу нагрузки и горячим точкам в кластере, но может быть приемлемым в большинстве сценариев, когда пропускная способность записи не чрезвычайно высока. Это не требует от пользователя изменения цели записи, т. е. она может оставаться распределённой таблицей. Этот способ не помогает перебалансировать уже существующие данные.

  2. В качестве альтернативы (1), изменить существующий кластер и выполнять запись исключительно в новый шард до тех пор, пока кластер не будет сбалансирован — вручную регулируя распределение записей. Этот подход имеет те же ограничения, что и (1).

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

  4. Экспортировать данные из исходного кластера в новый кластер с помощью INSERT FROM SELECT. Этот способ будет неэффективен на очень больших наборах данных и потенциально приведёт к значительной нагрузке на подсистему ввода-вывода исходного кластера и существенному использованию сетевых ресурсов. Это крайняя мера.