数据迁移再平衡的目标是保证分区副本尽可能均衡分布,副本位置影响着 IO 性能、节点负载,对于数据访问延迟有着较大的影响。近来,越来越多的客户对于数据容量或计算性能提出了更高要求,因而进行了集群扩展,扩展之后如何在新的拓扑之中平衡数据,这是客户必然面临的问题。为此,我们撰写了本文,总结数据迁移再平衡的常见场景与方法。
本教程适用于1.30.17、2.00.5及以上版本。
1 概述
DolphinDB 集群支持扩展节点与存储,以便增强计算能力与数据容量,那么新增的节点与磁盘是没有存储任何数据的,所有数据依旧存储在旧的节点与磁盘。也就是说,不同节点或不同磁盘上的数据分布可能会存在较为严重的倾斜,这样可能会带来几个问题:
分布式查询计算子任务无法分配到新增的节点,导致该节点计算资源无法被充分利用;
旧的磁盘 IO 压力过大,新增的磁盘 IO 无法被充分利用。
再者,数据依旧存储在旧的磁盘,如果旧的数据库分区存在数据写入或更新,那么旧的磁盘空间占满的几率相对较大,一旦满了会引发多种问题。
所以,节点与存储变更之后的数据迁移与平衡便显得非常必要。后面章节中,将会重点介绍节点与磁盘变更之后的数据迁移与平衡。
2 环境配置与数据模拟
2.1 硬件配置
测试总共使用三台配置相同的服务器,分别命名为 P1、P2、P3,具体硬件配置如表所示。
处理器 |
核数 |
内存 |
操作系统 |
硬盘 |
Intel(R) Xeon(R) Silver 4216 CPU @ 2.10GHz |
64 |
512 GB |
CentOS Linux release 7.9 |
SSD |