跳至主要内容

自管理升级

ClickHouse 升级概述

本文档包含

  • 一般指南
  • 推荐计划
  • 系统上升级二进制文件的具体步骤

一般指南

这些说明将帮助您进行规划,并了解我们在本文档后面部分提出建议的原因。

单独升级 ClickHouse 服务器和 ClickHouse Keeper 或 ZooKeeper

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

应经常采用次要版本升级

强烈建议您在发布后尽快升级到最新的次要版本。次要版本不会带来重大更改,但会包含重要的错误修复(并且可能包含安全修复)。

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

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

降级

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

集群中的多个 ClickHouse 服务器版本

我们努力维护一年的兼容性窗口(包括 2 个 LTS 版本)。这意味着,如果两个版本之间的差异不到一年(或它们之间不到两个 LTS 版本),那么这两个版本应该能够在同一个集群中一起工作。但是,建议尽快将集群的所有成员升级到同一个版本,因为可能会出现一些小问题(例如分布式查询速度变慢、复制 MergeTree 中某些后台操作的可重试错误等)。

当版本发布日期超过一年时,我们不建议在同一个集群中运行不同版本。虽然我们预计不会出现数据丢失,但集群可能会变得无法使用。如果您版本之间存在超过一年的差异,您应该预期的可能问题包括:

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

增量升级

如果当前版本与目标版本之间的差异超过一年,则建议您:

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

以下是在零停机情况下升级 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