Самоуправляемое обновление
Обзор обновления ClickHouse
Этот документ содержит:
- общие рекомендации
- рекомендованный план
- особенности обновления бинарных файлов на ваших системах
Общие рекомендации
Эти заметки должны помочь вам с планированием и пониманием причин, по которым мы делаем рекомендации, которые следуют в документе.
Обновляйте сервер ClickHouse отдельно от ClickHouse Keeper или ZooKeeper
Если нет необходимости в исправлении безопасности для ClickHouse Keeper или Apache ZooKeeper, обновлять Keeper при обновлении сервера ClickHouse не обязательно. Стабильность Keeper необходима в процессе обновления, поэтому завершите обновление сервера ClickHouse перед тем, как рассмотреть обновление Keeper.
Необходимо часто принимать обновления минорных версий
Настоятельно рекомендуется всегда обновляться до самой новой минорной версии сразу после ее выхода. Минорные релизы не содержат разрушающих изменений, но имеют важные исправления ошибок (а также могут содержать исправления безопасности).
Тестирование экспериментальных функций на отдельном сервере ClickHouse с установленной целевой версией
Совместимость экспериментальных функций может быть нарушена в любой момент и любым способом. Если вы используете экспериментальные функции, проверьте журналы изменений и рассмотрите возможность настройки отдельного сервера ClickHouse с установленной целевой версией и тестирования использования экспериментальных функций там.
Понижения версии
Если вы обновите версию и затем поймете, что новая версия не совместима с некоторой функцией, от которой вы зависите, вы сможете понизить версию до недавней (менее одного года назад), если не начали использовать ни одной из новых функций. Как только новые функции начинают использоваться, понижение версии не будет работать.
Несколько версий сервера ClickHouse в кластере
Мы стремимся поддерживать годовой период совместимости (который включает 2 LTS версии). Это означает, что любые две версии должны работать вместе в кластере, если разница между ними составляет менее одного года (или если между ними менее двух LTS версий). Тем не менее, рекомендуется как можно быстрее обновить всех членов кластера до одной версии, так как возможны некоторые незначительные проблемы (такие как замедление распределенных запросов, ошибочные запросы в некоторых фоновых операциях в ReplicatedMergeTree и т. д.).
Мы никогда не рекомендуем запускать разные версии в одном кластере, когда даты релиза больше одного года. Хотя мы не ожидаем потери данных, кластер может стать непригодным для использования. Проблемы, которые вы можете ожидать, если разница между версиями превышает один год, включают:
- кластер может не работать
- некоторые (или даже все) запросы могут завершаться неудачей с произвольными ошибками
- произвольные ошибки/предупреждения могут появляться в журналах
- может быть невозможно понизить версию
Пошаговые обновления
Если разница между текущей версией и целевой версией больше одного года, рекомендуется:
- Обновить с простоя (остановить все серверы, обновить все серверы, запустить все серверы).
- Или обновить через промежуточную версию (версия менее чем на один год более новая, чем текущая версия).
Рекомендуемый план
Это рекомендуемые шаги для обновления ClickHouse без остановки работы:
- Убедитесь, что ваши изменения конфигурации не находятся в файле по умолчанию
/etc/clickhouse-server/config.xml
, а вместо этого находятся в/etc/clickhouse-server/config.d/
, так как/etc/clickhouse-server/config.xml
может быть перезаписан во время обновления. - Ознакомьтесь с журналами изменений для выявления разрушающих изменений (начиная от целевой версии до версии, на которой вы в данный момент находитесь).
- Сделайте любые обновления, указанные в разрушающих изменениях, которые могут быть выполнены до обновления, а также составьте список изменений, которые необходимо будет сделать после обновления.
- Определите одну или несколько реплик для каждого шардов, чтобы поддерживать их работу, пока остальные реплики для каждого шардов обновляются.
- На репликах, которые будут обновлены, одну за другой:
- остановите сервер ClickHouse
- обновите сервер до целевой версии
- запустите сервер ClickHouse
- дождитесь сообщений от Keeper, указывающих на стабильность системы
- переходите к следующей реплике
- Проверьте наличие ошибок в журнале Keeper и журнале ClickHouse
- Обновите реплики, указанные в шаге 4, до новой версии
- Обратитесь к списку изменений, сделанных в шагах 1-3, и внесите изменения, которые нужно сделать после обновления.
Это сообщение об ошибке ожидаемо, когда в реплицируемой среде работает несколько версий ClickHouse. Вы перестанете видеть их, когда все реплики будут обновлены до одной версии.
Процесс обновления бинарного файла сервера ClickHouse
Если ClickHouse был установлен из пакетов deb
, выполните следующие команды на сервере:
Если вы установили ClickHouse, используя что-либо, кроме рекомендованных пакетов deb
, воспользуйтесь соответствующим методом обновления.
Вы можете обновлять несколько серверов одновременно, как только не будет моментов, когда все реплики одного шардов будут офлайн.
Обновление предыдущей версии ClickHouse до конкретной версии:
В качестве примера:
xx.yy.a.b
- это текущая стабильная версия. Последнюю стабильную версию можно найти здесь