Перейти к основному содержанию
ClickHouse не поддерживает автоматическую перебалансировку сегментов. Однако есть несколько способов перебалансировать сегменты в порядке предпочтительности:
  1. Изменить сегмент для distributed таблицы, чтобы запись преимущественно направлялась в новый сегмент. Это потенциально может вызвать дисбаланс нагрузки и горячие точки в кластере, но в большинстве сценариев, где пропускная способность записи не слишком высока, такой подход вполне применим. Пользователю не нужно менять цель записи, то есть ею по-прежнему может оставаться distributed таблица. При этом существующие данные такой способ не перебалансирует.
  2. В качестве альтернативы варианту (1) измените существующий кластер и записывайте данные только в новый сегмент, пока кластер не будет сбалансирован, — то есть вручную регулируя распределение записи. У этого подхода те же ограничения, что и у (1).
  3. Если вам нужно перебалансировать существующие данные и они разбиты на партиции, рассмотрите возможность отсоединить партиции и вручную перенести их на другой узел перед повторным присоединением к новому сегменту. Это более трудоемкий процесс, чем последующие техники, но он может оказаться быстрее и потребовать меньше ресурсов. Это ручная операция, поэтому распределение данных нужно продумать заранее.
  4. Экспортируйте данные из исходного кластера в новый кластер с помощью INSERT FROM SELECT. На очень больших наборах данных этот подход не будет производительным и потенциально приведет к значительной нагрузке на ввод-вывод в исходном кластере, а также к существенному расходу сетевых ресурсов. Это крайняя мера.
Последнее изменение 12 июня 2026 г.