一键升级内核大版本

本文介绍如何在云数据库 ClickHouse 社区兼容版控制台一键升级实例内核大版本。

前提条件

  • 云数据库 ClickHouse 社区兼容版内核版本为22.8及以上实例和部分20.3、20.8、21.8实例。

    说明

    查看是否符合升级版本要求,请在集群信息页面的集群属性中查看版本,若版本号右侧有大版本升级,则版本符合升级要求。

  • 实例状态为运行中

注意事项

重要
  • 为确保升级过程顺利进行,建议您在进行升级前停止业务侧的写入操作。因为在升级过程中,集群会主动停止写入,但若业务未提前停止写入,则可能导致同步等待时间过长,甚至无法在短时间内完成同步,从而影响升级的时效性。

  • 不同内核大版本间可能存在写入和查询的功能、语法、性能的差异。生产环境,请提前测试验证,已确保排除这些差异对业务的影响。

  • 版本升级过程会多次重启实例,部分实例由于库表数量、分区(Parts)数量过多等因素单次启动过程需要较长时间。您可通过测试验证具体升级时长。

  • 如果您的实例数据大量存在冷存存储,由于克隆不会克隆冷存数据,所以通过克隆验证的耗时可能会比一键升级的耗时长。

  • 测试验证的具体操作,请参见克隆实例验证版本兼容流程

  • 一键升级内核大版本流程启动后,无法取消。

  • 一键升级内核大版本后无法回退到原版本。

    说明

    一键升级内核大版本后不支持版本回退,如果您需要在版本升级后,仍然具有能回退到原来版本的能力,可尝试通过克隆的方式进行升级,具体操作,请参见通过克隆升级内核大版本

  • 版本升级期间实例会进行多次重启,不可读也不可写,建议在业务低峰期进行操作。

克隆实例验证版本兼容流程

建议您先使用克隆实例进行升级测试,确认新版本实例完全兼容原版本实例的功能以及升级时长后再进行升级。

重要

开启了冷热分层的实例,克隆仅包含热数据(即新实例无法查询到冷数据)。

参考流程:

  1. 进入目标实例集群信息页面,点击左侧导航栏中的备份恢复,实例备份完成后,点击恢复实例

  2. 选择从实时副本克隆,目标内核版本为升级目标版本。

  3. 创建克隆实例。

  4. 进行兼容性验证,常见验证方法:

    1. 拉取原实例上的query_log,在新实例上运行,验证业务查询的新版本兼容性。

    2. 回归业务功能。

操作步骤

  1. 使用阿里云账号登录云数据库ClickHouse控制台

  2. 在页面左上角,选择目标集群所在的地域。

  3. 在左侧导航栏,单击社区版实例列表

  4. 找到目标集群,单击集群ID,进入集群信息页面。

  5. 集群属性区域,单击版本右侧的大版本升级

    重要

    如果这里显示为当前实例仅支持迁移升级,则可参见通过迁移升级内核大版本进行大版本升级。

  6. 根据页面提示,配置如下参数,点击确定按钮。

配置项

说明

示例

将实例内核版本升级至

目标实例版本,版本升级后无法回退。

当前仅支持的版本有23.8(推荐)和22.8。

23.8(LTS版本)

版本升级执行时间

升级版本的执行时间。

重要

选择指定时间升级和可维护时间段升级后,实例的状态会由运行中变为版本升级中,在指定时间或者运维窗口到来前,实例可正常对外提供读写服务,但是不能执行升降配、扩缩容、迁移等运维操作。

  • 指定时间:选择未来某一指定时间段做大版本升级,默认时间为当前实例的下一次运维窗时间。

  • 可维护时间段升级:默认选取当前集群的运维窗口时间。

  • 立即升级:立即执行升级操作。

2024-05-29 14:46

是否执行克隆验证

勾选已执行克隆验证跳过克隆验证(不推荐)

已执行克隆验证

常见问题

Q:升级内核大版本时,报存在不支持的Kafka表定义的错该怎么办?

A:在售版本的Kafka表不支持用DEFAULT定义字段默认值,从而导致内核包启动失败。解决步骤如下:

  1. 使用select create_table_query from system.tables where engine = 'Kafka'找到所有的Kafka表。

  2. 备份找到的表的DDL语句。

  3. 删除找到的表。

  4. 重新建表。

    重要

    建表时不要使用DEFAULT定义字段默认值。

Q:升级内核大版本时,报存在不支持的MaterializedMySQL表定义的错该怎么办?

A:在售版本与源实例版本的MaterializeMySQL引擎的配置参数不兼容。解决步骤如下:

  1. 使用select name from system.databases where engine = 'MaterializeMySQL'找到是MaterializeMySQL引擎的数据库。

  2. 备份找到的数据库的DDL语句。

  3. 删除找到的数据库。

  4. 升级内核版本。

  5. 调整备份的数据库的DDL以适用目标版本,重新创建MaterializeMySQL引擎的数据库。

Q:升级内核大版本时,报存在除20.3不支持的表定义Nullable(Array(*))/SecondaryIndex(存在KEY定义)的错该怎么办?

A:如果您的实例版本为20.3版本,可能使用了阿里云自研的部分功能。例如以下功能:

  • 定义表字段为Nullable(Array(*))类型。

  • 使用KEY关键字定义的二级索引。

由于这些功能并没有合并回开源ClickHouse,所以实例版本20.8之后并不包含这些功能。建议您在升级之前调整相关的表。可进行以下操作:

  1. 验证源实例版本与目标版本的兼容性。

    重要

    由于20.3和在售版本跨度较大,建议您在实施升级之前充分验证,以避免升级对业务造成影响。

  2. 删除Nullable(Array(*))修饰的字段,重新添加字段;

  3. 删除使用KEY关键字定义的二级索引,在升级完成后重新为表添加跳数索引。

    重要

    两种索引实现原理有差异可能会造成性能差异。

相关文档

数据迁移同步

通过迁移升级内核大版本

通过克隆升级内核大版本

升级内核小版本