升级为多可用区部署

当您需要将云数据库ClickHouse社区兼容版集群的单副升级为双副本或单可用区升级为多可用区,以提高集群的高可用性时,您可通过升级为多可用区部署操作升级集群。

前提条件

  • 集群为社区兼容版集群。

  • 集群状态为运行中。

  • 集群没有未完成支付的续费订单。

    说明

    您可以登录云数据库ClickHouse控制台,在页面右上角,选择费用 > 费用与成本在左侧导航栏,选择订购订单 > 我的订单,完成订单支付或作废该订单。

注意事项

  • MergeTree类型引擎表在集群升级为多可用区部署后,会将原有历史数据迁移写入新的集群中并自动完成重分布。

    支持迁移的内容:

    • 库、数据字典、物化视图。

    • 表结构:除了KafkaRabbitMQ引擎表以外的所有表结构。

    • 数据:增量迁移MergeTree族表的数据。

    不支持迁移的内容:

    • KafkaRabbitMQ引擎表的表以及数据。

      重要

      配置变更时会迁移数据到新建实例,并最终切流到新建实例。为保证KafkaRabbitMQ数据不分流,请先清理源集群的KafkaRabbitMQ引擎表,待变更完成后再重新创建。

    • MergeTree类型表(例如外表、Log表等)的数据。

    重要

    以上不支持的内容,在升级过程中,您需根据操作步骤,手动处理。

  • 升级为多可用区部署过程中,禁止进行DDL操作。如不遵循,升级最后,可能会出现数据校验不通过的现象,进而导致升级失败。

  • 升级为多可用区部署后,内部节点IP会发生变化,如果依赖节点IP数据写入和访问,需重新获取集群的VPC网段IP,具体操作,请参见获取集群的VPC网段IP

  • 变更集群配置后,会持续一段时间高频merge操作,这会导致IO使用率上升,从而引起业务请求的延迟增加。建议您提前规划以应对业务请求延迟的潜在影响。具体merge操作时间的计算方法,请参见计算迁移结束后的merge时间

  • 升级为多可用区部署过程中,集群CPU和内存使用率会升高,预计单节点占用资源小于520GB。

费用

变更集群配置后,费用将会发生变化,具体费用请以控制台为准。更多信息,请参见变更配置计费说明

操作步骤

步骤一:处理KafkaRabbitMQ引擎表

Kafka/RabbitMQ引擎表不支持迁移,您需自主处理此类表。

  1. 登录集群,通过以下语句,查询需要处理的表。如何登录集群,请参见通过DMS连接ClickHouse

    SELECT * FROM  `system`.`tables` WHERE engine IN ('RabbitMQ', 'Kafka');
  2. 查看目标表的建表语句并备份。

    SHOW CREATE TABLE <aim_table_name>;
  3. 删除KafkaRabbitMQ引擎的表。

    重要

    删除Kafka时,需同时删除引用Kafka表的物化视图,否则导致扩缩容失败。

步骤二:备份MergeTree类型表的业务数据

  1. 登录集群,通过以下语句,查看需要迁移数据的非MergeTree类型的表。

    SELECT
        `database` AS database_name,
        `name` AS table_name,
        `engine`
    FROM `system`.`tables`
    WHERE (`engine` NOT LIKE '%MergeTree%') AND (`engine` != 'Distributed') AND (`engine` != 'MaterializedView') AND (`engine` NOT IN ('Kafka', 'RabbitMQ')) AND (`database` NOT IN ('system', 'INFORMATION_SCHEMA', 'information_schema')) AND (`database` NOT IN (
        SELECT `name`
        FROM `system`.`databases`
        WHERE `engine` IN ('MySQL', 'MaterializedMySQL', 'MaterializeMySQL', 'Lazy', 'PostgreSQL', 'MaterializedPostgreSQL', 'SQLite')
    ))
  2. 备份数据。

    您需将以上MergeTree类型的业务数据进行备份。具体操作,请参见备份数据至OSS

步骤三:控制台升级操作

  1. 登录云数据库ClickHouse控制台

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

  3. 集群列表页面,选择社区版实例列表

  4. 在目标集群ID操作列,单击变更配置

  5. 变更配置弹窗中,选择升级为多可用区部署,单击确定

  6. 在弹出的升级为多可用区部署检测窗口,查看检测状态。

    • 检测成功:单击下一步

    • 检测失败:根据页面提示进行相应修改,修改完成后单击重试检测。检测成功后,单击下一步

      在升级为多可用区部署的过程中,检测失败的原因主要有以下几种。

      • 缺失唯一的分布式表:表示本地表没有创建分布式表,需要再创建一个对应的分布式表。

      • 对应的分布式表不唯一:表示本地表有不止一个分布式表,请删除多余的分布式表,仅保留一个即可。

      • Kafka/RabbitMQ引擎表不支持:表示存在Kafka/RabbitMQ引擎表,请删除。

      • 多副本实例存在非Replicated*MergeTree表:表示数据在多副本之间不一致,扩缩容在迁移数据期间会出现异常。

      • 分布式表和本地表的列不一致:表示需要您修改分布式表和本地表的列一致,否则扩缩容在迁移数据期间会出现异常。

      • 该表在部分节点缺失:您需要在不同分片创建同名的表。针对物化视图inner表,建议重命名inner表,然后重建物化视图,指向重命名后的inner表。具体操作,请参见物化视图inner表在不同分片不一致

  7. 变配页面,根据您的业务需求,配置部署方案、可用区、专有网交换机以及停写时间。

    说明

    升级为多可用区部署会发生数据迁移,为了保证迁移的成功率,停写时间有以下要求:

    • 建议将停写时间至少设置为30分钟。

    • 升级必须在配置变更创建后的5天内结束,因此,结束停写时间的日期必须小于或等于当前日期+5

    • 为了降低迁移对您业务的影响,建议您设置的停写时间范围处于您的业务低峰时段。

  8. 单击立即购买,并根据页面提示完成支付。

  9. 支付完成页面,单击管理控制台

  10. 社区版实例列表状态列,可查看目标集群的状态。当集群状态由水平变配中转变为运行中时,升级为多可用区部署成功。

说明

升级为多可用区部署预计等待30分钟以上,等待时长和数据量相关,具体任务执行状态以控制台显示的集群状态为准。

步骤四:新建KafkaRabbitMQ引擎表

登录集群,执行步骤一:处理KafkaRabbitMQ引擎表备份的建表语句。如何登录目标集群,请参见通过DMS连接ClickHouse

步骤五:迁移MergeTree类型表的业务数据

登录集群,通过OSS迁移步骤二:备份非MergeTree类型表的业务数据备份的数据。具体操作,请参见OSS导入数据