自助管理升级
ClickHouse 升级概述
本文档包含
- 通用指南
- 推荐计划
- 在您的系统上升级二进制文件的具体步骤
通用指南
这些注释应帮助您进行规划,并理解为什么我们在文档后面提出这些建议。
将 ClickHouse 服务器与 ClickHouse Keeper 或 ZooKeeper 分开升级
除非 ClickHouse Keeper 或 Apache ZooKeeper 需要安全修复,否则在升级 ClickHouse 服务器时,无需升级 Keeper。Keeper 的稳定性在升级过程中是必需的,因此请在考虑升级 Keeper 之前完成 ClickHouse 服务器的升级。
应经常采用小版本升级
强烈建议始终在最新小版本发布后立即升级。小版本发布没有重大更改,但确实有重要的错误修复(并且可能有安全修复)。
在运行目标版本的单独 ClickHouse 服务器上测试实验性功能
实验性功能的兼容性可能随时以任何方式被破坏。如果您正在使用实验性功能,请查看更新日志,并考虑设置一个安装了目标版本的单独 ClickHouse 服务器,并在那里测试您对实验性功能的使用。
降级
如果您升级后发现新版本与您依赖的某些功能不兼容,如果您尚未开始使用任何新功能,则可以降级到最近(不到一年)的版本。一旦使用了新功能,降级将不起作用。
集群中存在多个 ClickHouse 服务器版本
我们努力保持一年的兼容窗口(包括 2 个 LTS 版本)。这意味着,如果两个版本之间的差异小于一年(或者它们之间少于两个 LTS 版本),则任何两个版本都应该能够在集群中协同工作。但是,建议尽快将集群的所有成员升级到同一版本,因为可能会出现一些小问题(例如分布式查询速度减慢,ReplicatedMergeTree 中某些后台操作中出现可重试错误等)。
我们从不建议在同一集群中运行发布日期相差一年以上的不同版本。虽然我们不希望您会丢失数据,但集群可能会变得无法使用。如果版本差异超过一年,您应该预期的 issues 包括
- 集群可能无法工作
- 某些(甚至所有)查询可能会因任意错误而失败
- 日志中可能会出现任意错误/警告
- 可能无法降级
增量升级
如果当前版本和目标版本之间的差异超过一年,则建议执行以下操作之一
- 停机升级(停止所有服务器,升级所有服务器,运行所有服务器)。
- 或者通过中间版本升级(比当前版本更新不到一年的版本)。
推荐计划
以下是 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 时,此错误消息是预期的。当所有副本都升级到同一版本时,您将不再看到这些错误。
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