Ребалансировка данных
ClickHouse не поддерживает автоматическую ребалансировку шардов. Однако существует несколько способов ребалансировать шарды в порядке предпочтения:
-
Настройте шард для распределённой таблицы, что позволит сместить записи в новый шард. Это может привести к дисбалансу нагрузки и горячим точкам в кластере, но в большинстве случаев является работоспособным вариантом, если скорость записи не слишком высокая. Это не требует от пользователя изменения цели записи, т.е. можно продолжать использовать распределённую таблицу. Этот метод не помогает с ребалансировкой уже существующих данных.
-
В качестве альтернативы (1), измените существующий кластер и производите записи исключительно в новый шард до тех пор, пока кластер не будет сбалансирован - вручную регулируя вес записей. Это имеет те же ограничения, что и (1).
-
Если вам необходимо ребалансировать уже существующие данные и вы использовали разбиение для ваших данных, рассмотрите возможность отсоединения разделов и их ручного перемещения на другой узел перед повторным подключением к новому шарду. Этот метод более ручной, чем последующие, но может быть быстрее и менее ресурсоёмким. Это ручная операция, и поэтому необходимо учитывать ребалансировку данных.
-
Экспортируйте данные из исходного кластера в новый кластер через INSERT FROM SELECT. Это будет непроизводительно для очень больших наборов данных и потенциально вызовет значительную нагрузку на ввод-вывод на исходном кластере и потребует значительных сетевых ресурсов. Этот метод следует использовать в крайнем случае.