跳到主要内容
跳到主要内容
编辑此页

自助管理升级

ClickHouse 升级概述

本文档包含

  • 通用指南
  • 推荐计划
  • 在您的系统上升级二进制文件的具体步骤

通用指南

这些注释应帮助您进行规划,并理解为什么我们在文档后面提出这些建议。

将 ClickHouse 服务器与 ClickHouse Keeper 或 ZooKeeper 分开升级

除非 ClickHouse Keeper 或 Apache ZooKeeper 需要安全修复,否则在升级 ClickHouse 服务器时,无需升级 Keeper。Keeper 的稳定性在升级过程中是必需的,因此请在考虑升级 Keeper 之前完成 ClickHouse 服务器的升级。

应经常采用小版本升级

强烈建议始终在最新小版本发布后立即升级。小版本发布没有重大更改,但确实有重要的错误修复(并且可能有安全修复)。

在运行目标版本的单独 ClickHouse 服务器上测试实验性功能

实验性功能的兼容性可能随时以任何方式被破坏。如果您正在使用实验性功能,请查看更新日志,并考虑设置一个安装了目标版本的单独 ClickHouse 服务器,并在那里测试您对实验性功能的使用。

降级

如果您升级后发现新版本与您依赖的某些功能不兼容,如果您尚未开始使用任何新功能,则可以降级到最近(不到一年)的版本。一旦使用了新功能,降级将不起作用。

集群中存在多个 ClickHouse 服务器版本

我们努力保持一年的兼容窗口(包括 2 个 LTS 版本)。这意味着,如果两个版本之间的差异小于一年(或者它们之间少于两个 LTS 版本),则任何两个版本都应该能够在集群中协同工作。但是,建议尽快将集群的所有成员升级到同一版本,因为可能会出现一些小问题(例如分布式查询速度减慢,ReplicatedMergeTree 中某些后台操作中出现可重试错误等)。

我们从不建议在同一集群中运行发布日期相差一年以上的不同版本。虽然我们不希望您会丢失数据,但集群可能会变得无法使用。如果版本差异超过一年,您应该预期的 issues 包括

  • 集群可能无法工作
  • 某些(甚至所有)查询可能会因任意错误而失败
  • 日志中可能会出现任意错误/警告
  • 可能无法降级

增量升级

如果当前版本和目标版本之间的差异超过一年,则建议执行以下操作之一

  • 停机升级(停止所有服务器,升级所有服务器,运行所有服务器)。
  • 或者通过中间版本升级(比当前版本更新不到一年的版本)。

以下是 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 时,此错误消息是预期的。当所有副本都升级到同一版本时,您将不再看到这些错误。

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.

ClickHouse 服务器二进制文件升级过程

如果 ClickHouse 是从 `deb` 包安装的,请在服务器上执行以下命令

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

如果您使用推荐的 `deb` 包以外的其他方式安装了 ClickHouse,请使用适当的更新方法。

注意

只要不同时出现一个分片的所有副本都离线的情况,您就可以一次更新多台服务器。

将旧版本的 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