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

Самостоятельное обновление

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

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

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

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

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

примечание

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

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

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

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