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

Самоуправляемое обновление

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

Этот документ содержит:

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

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

Эти заметки помогут вам в планировании и понимании, почему мы делаем рекомендации, которые мы делаем позже в документе.

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

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

Обновления минорных версий следует принимать чаще

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

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

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

Дауngrейды

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

Несколько версий сервера 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 о том, что система стабильна
    • переходите к следующей реплике
  6. Проверьте наличие ошибок в журнале Keeper и журнале ClickHouse
  7. Обновите реплики, указанные на этапе 4, до новой версии
  8. Обратитесь к списку изменений, внесенных в шагах 1-3, и внесите изменения, которые необходимо сделать после обновления.
примечание

Это сообщение об ошибке ожидается, когда в среде с репликой работает несколько версий ClickHouse. Вы перестанете видеть их, когда все реплики обновятся до одной и той же версии.

Процесс обновления бинарных файлов сервера ClickHouse

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

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

примечание

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

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

В качестве примера:

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