You need to enable JavaScript to run this app.
文档中心
ByteHouse 企业版

ByteHouse 企业版

复制全文
下载 pdf
运维监控
数据重分布
复制全文
下载 pdf
数据重分布

数据重分布(Resharding)是指将每张 MergeTree 家族表根据分片键(Sharding Key)拆分到每个分片,使得集群每个节点数据更均衡,为查询提供的性能也更均衡。

背景信息

数据重分布示意图如下。
Image

适用场景

  • 刚刚进行过水平扩容,但数据未重分布,或存在表部分分区未重分布的场景;
  • 因为直接插入本地表,或因为 Kafka 导入时上游 Partition 数量未按最佳实践配置,导致的数据不均匀的场景(不适用于 Sharding Key 设错,导致数据不均衡的场景);

不适用场景

  • 表不完整的场景:如果用户没有按照最佳实践建表(如部分表只在部分节点存在),则不会重分布这些数据;
  • 特殊的数据类型:含 Bitmap64 类型的表,无法执行重分布;
  • 特殊表引擎:MySQL,S3 等外表引擎,View,Merge,Join 等无数据存储的表引擎不支持重分布;
  • 物化库表引擎:MaterializedView,MaterializeMySQL 暂时不支持数据重分布,但您可以在扩容后通过重建库/表,重新同步数据。

注意事项
  • 每个旧节点需要预留存储的容量为最大的一张表的容量,例如,表的总大小为 100GB,当前 10 个节点,缩容为 5 个节点,则需要在每个旧节点预留 100GB/5 = 20GB 以上的存储;
  • 数据重分布期间,表会逐一进入只读状态,同时集群的计算和 IO 负载会较高,预估读性能会下降且不稳定;
  • HaUniqueMergeTree 表存在存量数据的情况下,为了保证去重的一致性,扩容前后表的拓扑不会发生改变,即扩容前若使用 2shard,扩容后仍只使用 2shard。但为了最大化利用集群资源,强烈建议您在扩容完成后及时重分布有存量数据的 HaUniqueMergeTree 表,重分布后表的拓扑将和集群拓扑保持一致。
  • 特殊情况:HaUniqueMergeTree 表引擎只能在单一分片内实现去重,因此若采用 Kafka 导入,Kafka Partition -> ByteHouse Shard 的映射关系需要保持不变。例如:
    • 扩容后:unique_key = 1 -> 原 Kafka partition 1 -> 原 ByteHouse shard 1
    • 扩容后:unique_key = 1 -> ByteHouse shard 3,那需要调整 unique_key = 1 -> 新的 Partition,使其能稳定写入 ByteHouse shard 3;
    • 若您有相关疑问,请提交工单。

操作步骤

您可以参考下面步骤完成重分布操作,操作过程中需要集群管理员或系统管理员权限。

  1. 登录并进入 ByteHouse 企业版控制台后,单击顶部集群管理,在集群列表的操作列,单击对应集群后的显示更多 > 重分布
    Image

  2. 在弹出的侧边栏中选择重分布的表。
    Image

    参数

    配置说明

    选择重分布方式

    当前支持重分布的方式有:全部重分布、最小重分布、自定义重分布。

    • 全部重分布:重分布表的全部分区,提高现有数据的读性能,但数据量过大会导致表的不可写入时间过长。
    • 最小重分布:仅重分布 HaUniqueMergeTree 表的活跃分区(72小时内有写入数据的分区),大幅缩短数据表不可写入时间。

      说明

      若进行过最小重分布后,仍有数据写入【72小时内有写入数据的分区】之外的分区,则数据无法去重,建议尽早对可能写入数据的历史分区进行重分布。

    • 自定义重分布:按需自定义数据表和相应分区进行重分布,适用于灵活配置重分布的场景。

      说明

      如果对 unique 表进行自定义分布,建议优先选择活跃分区进行重分布,否则或导致新写入数据去重逻辑失效。

    选择重分布范围

    您可以选择重分布所有表,或手动选择重分布部分表。

    • 不同的重分布方式支持选择的重分布范围不一致:
      Image
      • 全部重分布:默认选择重分布所有表,也支持您手动切换至部分表页签,选择重分布部分表。
      • 最小重分布:仅支持重分布所有 HaUniqueMergeTree 表的活跃分区。
      • 自定义重分布
        • 默认选择重分布所有表,支持设置选择重分布表的重分布范围(全表、活跃分区、指定分区、时间范围),分区支持批量设置。
        • 也支持您手动切换至部分表页签,选择重分布部分表,对设置部分表的重分布范围(全表、活跃分区、指定分区、时间范围),分区支持批量设置。
    • 如果您选择完重分布的表范围后,页面提示您当前有不支持重分布操作的表,您可单击查看详情查看不支持重分布的表列表,及不支持重分布的原因,您可参考原因对表进行修复处理,完成后再重新进行重分布操作。
      Image
  3. 开始重分布。

    • 系统会依据 Sharding_key 将数据重新拆分到所有节点;表会逐一进入只读状态,同时集群的计算和 IO 负载会较高,预估读性能会下降且不稳定。
    • HaUnique 表只要进行过重分布,拓扑会自动加入扩容节点,新写入的数据会按照新的拓扑进行分布

后续步骤
  1. 您可以在任务中心 > 运维任务页面中查看当前已提交的重分布任务,查看重分布状态。
    Image
  2. 对于失败的重分布任务可单击重分布详情,在弹出的重分布详情页面中查看失败的重分布表及失败原因,参考参考界面提示进行修改后再重新提交重分布任务。
    Image
最近更新时间:2025.04.27 15:22:09
这个页面对您有帮助吗?
有用
有用
无用
无用