> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Документация по обновлению

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

<div id="clickhouse-upgrade-overview">
  ## Обзор обновления ClickHouse
</div>

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

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

<div id="general-guidelines">
  ## Общие рекомендации
</div>

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

<div id="upgrade-clickhouse-server-separately-from-clickhouse-keeper-or-zookeeper">
  ### Обновляйте сервер ClickHouse отдельно от ClickHouse Keeper или ZooKeeper
</div>

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

<div id="minor-version-upgrades-should-be-adopted-often">
  ### Минорные версии следует обновлять как можно чаще
</div>

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

<div id="test-experimental-features-on-a-separate-clickhouse-server-running-the-target-version">
  ### Тестируйте экспериментальные возможности на отдельном сервере ClickHouse с целевой версией
</div>

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

<div id="downgrades">
  ### Понижение версии
</div>

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

<div id="multiple-clickhouse-server-versions-in-a-cluster">
  ### Несколько версий сервера ClickHouse в кластере
</div>

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

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

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

<div id="incremental-upgrades">
  ### Поэтапные обновления
</div>

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

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

<div id="recommended-plan">
  ## Рекомендуемый план
</div>

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

1. Убедитесь, что изменения конфигурации вносятся не в файл `/etc/clickhouse-server/config.xml` по умолчанию, а в `/etc/clickhouse-server/config.d/`, поскольку во время обновления файл `/etc/clickhouse-server/config.xml` может быть перезаписан.
2. Просмотрите [changelogs](/ru/resources/changelogs/oss/2026) на предмет несовместимых изменений (от целевого релиза до релиза, который вы используете сейчас).
3. Внесите все изменения, указанные в списке несовместимых изменений, которые можно сделать до обновления, и составьте список изменений, которые потребуется внести после обновления.
4. Определите одну или несколько реплик для каждого сегмента, которые останутся в работе, пока остальные реплики каждого сегмента будут обновляться.
5. На репликах, которые будут обновляться, по одной за раз:

* остановите сервер ClickHouse
* обновите сервер до целевой версии
* запустите сервер ClickHouse
* дождитесь, пока сообщения Keeper покажут, что система стабильна
* переходите к следующей реплике6. Проверьте наличие ошибок в журнале Keeper и журнале ClickHouse

7. Обновите реплики, определённые на шаге 4, до новой версии
8. Обратитесь к списку изменений, составленному на шагах 1–3, и внесите изменения, которые нужно выполнить после обновления.

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

  ```text theme={null}
  MergeFromLogEntryTask: Code: 40. DB::Exception: Checksums of parts don't match:
  hash of uncompressed files doesn't match. (CHECKSUM_DOESNT_MATCH)  Data after merge is not
  byte-identical to data on another replicas.
  ```
</Note>

<div id="clickhouse-server-binary-upgrade-process">
  ## Процесс обновления бинарного файла сервера ClickHouse
</div>

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

```bash theme={null}
$ sudo apt-get update
$ sudo apt-get install clickhouse-client clickhouse-server
$ sudo service clickhouse-server restart
```

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

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

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

Например:

`xx.yy.a.b` — текущая стабильная версия. Последнюю стабильную версию можно найти [здесь](https://github.com/ClickHouse/ClickHouse/releases)

```bash theme={null}
$ 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
```
