本文为您介绍云数据库ClickHouse社区兼容版集群如何降低磁盘空间。
前提条件
集群为社区兼容版集群。
集群状态为运行中。
集群没有未完成支付的续费订单。
说明您可以登录云数据库ClickHouse控制台,在页面右上角,选择费用 > 费用与成本,在左侧导航栏,选择订购订单 > 我的订单,完成订单支付或作废该订单。
注意事项
单节点存储空间最小支持100 GB,最大支持32000 GB。
MergeTree类型引擎表在磁盘降配后,会将原有历史数据迁移写入新的集群中并自动完成重分布。
支持迁移的内容:
库、数据字典、物化视图。
表结构:除了Kafka和RabbitMQ引擎表以外的所有表结构。
数据:增量迁移MergeTree族表的数据。
不支持迁移的内容:
Kafka和RabbitMQ引擎表的表以及数据。
重要配置变更时会迁移数据到新建实例,并最终切流到新建实例。为保证Kafka和RabbitMQ数据不分流,请先清理源集群的Kafka和RabbitMQ引擎表,待变更完成后再重新创建。
非MergeTree类型表(例如外表、Log表等)的数据。
重要以上不支持的内容,在磁盘降配过程中,您需根据操作步骤,手动处理。
磁盘降配过程中,禁止进行DDL操作。如不遵循,降配最后,可能会出现数据校验不通过的现象,进而导致降配失败。
磁盘降配后,内部节点IP会发生变化,如果依赖节点IP数据写入和访问,需重新获取集群的VPC网段IP,具体操作,请参见获取集群的VPC网段IP。
变更集群配置后,会持续一段时间高频merge操作,这会导致IO使用率上升,从而引起业务请求的延迟增加。建议您提前规划以应对业务请求延迟的潜在影响。具体merge操作时间的计算方法,请参见计算迁移结束后的merge时间。
磁盘降配过程中,集群CPU和内存使用率会升高,预计单节点占用资源小于5核20GB。
费用
变更集群配置后,费用将会发生变化,具体费用请以控制台为准。更多信息,请参见变更配置计费说明。
操作步骤
步骤一:处理Kafka和RabbitMQ引擎表
Kafka/RabbitMQ引擎表不支持迁移,您需自主处理此类表。
登录集群,通过以下语句,查询需要处理的表。如何登录集群,请参见通过DMS连接ClickHouse。
SELECT * FROM `system`.`tables` WHERE engine IN ('RabbitMQ', 'Kafka');
查看目标表的建表语句并备份。
SHOW CREATE TABLE <aim_table_name>;
删除Kafka和RabbitMQ引擎的表。
重要删除Kafka时,需同时删除引用Kafka表的物化视图,否则导致扩缩容失败。
步骤二:备份非MergeTree类型表的业务数据
登录集群,通过以下语句,查看需要迁移数据的非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') ))
备份数据。
您需将以上非MergeTree类型的业务数据进行备份。具体操作,请参见备份数据至OSS。
步骤三:控制台磁盘降配操作
在页面左上角,选择集群所在地域。
在集群列表页面,选择社区版实例列表。
在目标集群ID的操作列,单击变更配置。
在变更配置弹窗中,选择磁盘降配,单击确定。
在弹出的磁盘降配检测窗口,查看检测状态。
检测成功:单击下一步。
检测失败:根据页面提示进行相应修改,修改完成后单击重试检测。检测成功后,单击下一步。
在磁盘降配的过程中,检测失败的原因主要有以下几种。
缺失唯一的分布式表:表示本地表没有创建分布式表,需要再创建一个对应的分布式表。
对应的分布式表不唯一:表示本地表有不止一个分布式表,请删除多余的分布式表,仅保留一个即可。
Kafka/RabbitMQ引擎表不支持:表示存在Kafka/RabbitMQ引擎表,请删除。
多副本实例存在非Replicated的
*MergeTree
表:表示数据在多副本之间不一致,扩缩容在迁移数据期间会出现异常。分布式表和本地表的列不一致:表示需要您修改分布式表和本地表的列一致,否则扩缩容在迁移数据期间会出现异常。
该表在部分节点缺失:您需要在不同分片创建同名的表。针对物化视图inner表,建议重命名inner表,然后重建物化视图,指向重命名后的inner表。具体操作,请参见物化视图inner表在不同分片不一致。
在变配页面,根据您的业务需求,配置存储空间以及停写时间。
存储空间:单节点存储空间最小支持100 GB,最大支持32000 GB。
停写时间:磁盘降配会发生数据迁移,为了保证迁移的成功率,集群需停写。
说明停写时间有以下要求:
建议将停写时间至少设置为30分钟。
磁盘降配必须在配置变更创建后的5天内结束,因此,停写时间的结束日期必须小于或等于
当前日期+5
。为了降低迁移对您业务的影响,建议您设置的停写时间范围处于您的业务低峰时段。
单击立即购买,并根据页面提示完成支付。
在支付完成页面,单击管理控制台。
在社区版实例列表的状态列,可查看目标集群的状态。当集群状态由水平变配中转变为运行中时,磁盘降配成功。
磁盘降配预计等待30分钟以上,等待时长和数据量相关,具体任务执行状态以控制台显示的集群状态为准。
步骤四:新建Kafka和RabbitMQ引擎表
登录集群,执行步骤一:处理Kafka和RabbitMQ引擎表备份的建表语句。如何登录目标集群,请参见通过DMS连接ClickHouse。
步骤五:迁移非MergeTree类型表的业务数据
登录集群,通过OSS
迁移步骤二:备份非MergeTree类型表的业务数据备份的数据。具体操作,请参见从OSS导入数据。