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

Обновление в самоуправляемой среде

Обзор обновления ClickHouse

В этом документе:

  • общие рекомендации
  • рекомендуемый план
  • подробная информация об обновлении бинарных файлов на ваших системах

Общие рекомендации

Эти примечания помогут вам при планировании и объяснят, почему далее в документе мы даем такие рекомендации.

Обновляйте сервер ClickHouse отдельно от ClickHouse Keeper или ZooKeeper

Если для ClickHouse Keeper или Apache ZooKeeper не требуется установка патча безопасности, нет необходимости обновлять Keeper при обновлении сервера ClickHouse. Стабильность Keeper необходима в процессе обновления, поэтому завершите обновление серверов ClickHouse, прежде чем рассматривать обновление Keeper.

Минорные обновления следует выполнять часто

Настоятельно рекомендуется всегда обновляться до последней минорной версии сразу после ее выхода. Минорные релисы не содержат несовместимых изменений, но включают важные исправления ошибок (и могут содержать исправления уязвимостей).

Тестируйте экспериментальные функции на отдельном сервере ClickHouse с целевой версией

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

Откаты версий

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

Несколько версий сервера ClickHouse в одном кластере

Мы прилагаем усилия, чтобы поддерживать окно совместимости длительностью один год (включая 2 LTS-версии). Это означает, что любые две версии должны уметь работать совместно в кластере, если разница между ними менее одного года (или между ними менее двух LTS-версий). Однако рекомендуется как можно быстрее обновить все узлы кластера до одной версии, так как возможны некоторые незначительные проблемы (такие как замедление распределенных запросов, повторяемые ошибки в некоторых фоновых операциях в ReplicatedMergeTree и т. п.).

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

  • кластер может не работать
  • некоторые (или даже все) запросы могут завершаться с произвольными ошибками
  • в логах могут появляться произвольные ошибки/предупреждения
  • откат может оказаться невозможным

Пошаговые (инкрементальные) обновления

Если разница между текущей версией и целевой версией превышает один год, рекомендуется либо:

  • выполнить обновление с простоем (остановить все серверы, обновить все серверы, запустить все серверы);
  • либо обновиться через промежуточную версию (версию, вышедшую менее чем на год позже текущей).

Ниже приведены рекомендуемые шаги для обновления ClickHouse без простоя:

  1. Убедитесь, что ваши изменения конфигурации не находятся в файле по умолчанию /etc/clickhouse-server/config.xml, а вместо этого размещены в /etc/clickhouse-server/config.d/, так как /etc/clickhouse-server/config.xml может быть перезаписан во время обновления.
  2. Ознакомьтесь с журналом изменений, чтобы выявить изменения, нарушающие обратную совместимость (двигаясь от целевого релиза к релизу, который вы используете в данный момент).
  3. Внесите все изменения, выявленные как нарушающие обратную совместимость и которые можно сделать до обновления, а также составьте список изменений, которые потребуется внести после обновления.
  4. Определите одну или несколько реплик для каждого шарда, которые будут оставаться в работе, пока остальные реплики каждого шарда обновляются.
  5. На репликах, которые будут обновляться, по одной за раз:
  • остановите сервер ClickHouse
  • обновите сервер до целевой версии
  • запустите сервер ClickHouse
  • дождитесь сообщений от Keeper, указывающих на стабильное состояние системы
  • переходите к следующей реплике
  1. Проверьте наличие ошибок в журнале Keeper и журнале ClickHouse.
  2. Обновите реплики, определенные на шаге 4, до новой версии.
  3. Обратитесь к списку изменений, выполненных на шагах с 1 по 3, и внесите изменения, которые должны быть сделаны после обновления.
Примечание

Такое сообщение об ошибке ожидаемо, когда в реплицируемой среде одновременно работают несколько версий ClickHouse. Вы перестанете видеть эти сообщения, когда все реплики будут обновлены до одной и той же версии.

MergeFromLogEntryTask: Code: 40. DB::Exception: Контрольные суммы частей не совпадают:
хеш несжатых файлов не совпадает. (CHECKSUM_DOESNT_MATCH)  Данные после слияния побайтово
не идентичны данным на других репликах.

Процесс обновления исполняемого файла сервера ClickHouse

Если ClickHouse был установлен из пакетов deb, выполните на сервере следующие команды:

$ sudo apt-get update
$ sudo apt-get install clickhouse-client clickhouse-server
$ sudo service clickhouse-server restart

Если вы устанавливали ClickHouse не с помощью рекомендуемых пакетов deb, используйте соответствующий метод обновления.

Примечание

Вы можете обновлять несколько серверов одновременно при условии, что ни в какой момент все реплики одного шарда не находятся одновременно офлайн.

Обновление более старой версии ClickHouse до заданной версии:

Например:

xx.yy.a.b — это текущая стабильная версия. Самую свежую стабильную версию можно найти здесь

$ sudo apt-get update
$ sudo apt-get install clickhouse-server=xx.yy.a.b clickhouse-client=xx.yy.a.b clickhouse-common-static=xx.yy.a.b
$ sudo service clickhouse-server restart