您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
   
 
     
   
 订阅
  捐助
图数据库设计实践| 存储服务的负载均衡和数据迁移
 
作者:陈恒
 
63 次浏览 评价:  
2021-2-22
 
编辑推荐:
本文主要描述对于存储层(storage)的数据和服务的 balance。这些都是通过 Balance 命令来实现的:Balance 命令有两种,一种需要迁移数据,命令为 BALANCE DATA ;另一种不需要迁移数据,只改变 partition 的 raft-leader 分布(负载均衡),命令为 BALANCE LEADER 。
本文来自vesoft,由火龙果软件Linda编辑、推荐。

平衡主体浅析

在图数据库Nebula Graph中,Balance主要用于balance Leader和partition,只涉及Leader和partition在机器之间转移,不会增加或减少Leader and partition的数量。

上线新机器并启动相应的Nebula服务后,存储会自动向metametameta。Meta会计算出一个新的partition分布,然后通过删除partition 和add partition将数据从老机器搬迁到新的机器上。这个过程所对应的命令是BALANCE DATA ,通常数据搬迁是个比较漫长的过程。

但BALANCE DATA仅改变了数据和副本在机器之间的均衡分布,leader(和对应的负载)是不会改变的,因此还需要通过命令BALANCE LEADER来实现负载的均衡。这个过程也是通过meta实现的。

大规模数据迁移

举例以下说明BALANCE DATA的使用方式本。译文将从3个实例(进程)扩展到8个实例(进程):

步骤1:准备工作

部署一个3副本的副本,1个图形,1个metad,3个存储(具体部署方式请参考部署部署文:https ://zhuanlan.zhihu.com/p/80335605 ),通过SHOW HOSTS 命令可以看到重新的状态信息:

步骤1.1查看现有状态

按照部署部署文档部署好3副本合并之后,用SHOW HOSTS 命令查看下现在可用情况:

SHOW HOSTS 返回结果解释:

IP,端口表示当前的存储实例。这个最大化启动了3个storaged服务,并且还没有任何数据。(192.168.8.210:34600,192.168.8.210:34700,192.168.8.210:34500)

状态表示当前实例的状态,目前有在线/离线两种。当机器下线以后(metad在一段间隔内收不到其心跳),将其更改为离线。这个时间间隔可以在启动metad的时候通过设置expired_threshold_sec来修改,当前默认值是10分钟。

领导人数:表示当前实例

领导者分布:表示当前领导者在每个空间上的分布,目前尚未创建任何空间。(space可以理解为一个独立的数据空间,类似MySQL的数据库)

分区分布:不同空间中分区的数量。

可以看到 领导分布和 分区分布暂时都没有数据。

步骤1.2创建图空间

创建一个称为test的图空间,包含100个分区,每个分区有3个副本。

片刻后,使用SHOW HOSTS命令显示累积的分布。

如上,创建包含100个_partitio_n和3个副本图空间之后,3个实例的 领导分布和_Partition分布_具有对应的数值,对应的_Partition分布_都为100。当然,这样的learder分布还不均匀。

步骤2加入新实例

启动5个新存储的实例进行扩容。启动完成后,使用SHOW HOSTS命令查看新的状态:

上新实例之后,占用由原来的3个实例变成了8个实例。上图数据库icon为蓝色的图标为添加的5个实例,此时仅被加入了替代,新实例的状态为Online ,,但此时 领导者分布和_分区分布_并没有数值,说明还不会参与服务。

步骤3迁移数据

运行BALANCE DATA命令。

如果已经积累了新机器加入,则生成一个新的计划ID。对于已经平衡的转移,重复运行BALANCE DATA不会有任何新操作。如果当前有正在执行的计划,那会显示当前计划的ID。

也可通过BALANCE DATA $id查看这个balance的具体执行进度。

BALANCE DATA $id 返回结果说明:

第一列balanceId,spaceId:PARTID,SRC-> DST表示一个具体的平衡任务以。1570761786, 1:88, 192.168.8.210:34700->192.168.8.210:35940 为例:

1570761786为余额ID

1:88,1表示当前的spaceId(也就是space test的ID),88表示迁移的partitionId

192.168.8.210:34700->192.168.8.210:35940,表示数据从192.168.8.210:34700搬迁至 192.168.8.210:35940。而原先192.168.8.210:34700中的数据将会在迁移完成后再GC删除

第二列表示当前task的运行状态,有4种状态

成功:运行成功

失败:运行失败

进行中:运行中

无效:无效的任务

最后对所有任务运行状态的统计,部分分区尚未完成迁移。

步骤4如果要中途停止余额数据

BALANCE DATA STOP 命令已停止已经开始执行的余额数据计划。如果没有正在运行的balance计划,则返回错误提示。如果有正在运行的balance计划,则返回计划对应的ID。

由于每个balance计划对应BALANCE DATA STOP几个平衡任务,不会停止已经开始执行的balance任务,只会取消后续的task,已经开始的task将继续执行直至完成。

用户可以在BALANCE DATA STOP之后输入BALANCE DATA $id来查看已经停止的balance计划状态。

所有已经开始执行的任务完成后,可以再次执行BALANCE DATA,重新开始余额。如果之前停止的计划中有失败的任务,逐步继续执行之前的计划,如果之前停止的计划中所有任务新建一个balance计划并开始执行。

步骤5查看数据迁移结果

大多数情况下,搬迁数据是个比较漫长的过程。但是搬迁过程不会影响现有服务。现在可以通过SHOW HOSTS查看运行后的partition分布。

分区分布相近,分区总数300不变且partition已均衡的分布至各个实例。

如果有运行失败的任务,可再次运行BALANCE DATA命令进行修复。如果多次运行仍无法修复,请与社区联系GitHub。

步骤6平衡领导者

BALANCE DATA仅能平衡分区,但是领导者分布仍然不均衡,意味着这旧实例的服务较重,新而实例的服务能力未得到充分使用运行。BALANCE LEADER重新分布筏负责人:

片刻后,使用SHOW HOSTS命令查看,此时Raft Leader已均匀分布至所有的实例。

如上,BALANCE LEADER 成功执行后,添加的实例和原来的实例(对应上图图标蓝色和黑色图标)的_Leader distribution _相近,所有实例已均衡,可以,也可以 看到余额命令只涉及Leader和partition在物理机器上的转移,并且没有增加或减少Leader和partition。

批量缩容

星云图支持指定需要下线的机器进行批量缩容语法为。BALANCE DATA REMOVE $host_list,例如:BALANCE DATA REMOVE 192.168.0.1:50000,192.168.0.2:50000,将指定移除192.168.0.1:50000,192.168.0.2:50000两台机器。

如果可移除指定机器后,不满足副本数要求(例如剩余机器数小于副本数),星云图将拒绝本次balance请求,并返回相关错误码。

示例数据迁移

上面讲了如何从3个实例变成8个实例的实例,如果你对上文有疑问,记得在这里的评论区留言哈。我们现在看看上面迁移的过程,192.168.8.210: 34600 这个实例的状态变化。

说明:有颜色为红色说明对应的数值发生变化,如果数值不变,则为黑色。

 

 

   
63 次浏览     评价: 订阅 捐助
相关文章

我们该如何设计数据库
数据库设计经验谈
数据库设计过程
数据库编程总结
 
相关文档

数据库性能调优技巧
数据库性能调整
数据库性能优化讲座
数据库系统性能调优系列
相关课程

高性能数据库设计与优化
高级数据库架构师
数据仓库和数据挖掘技术
Hadoop原理、部署与性能调优
最新课程计划
 
最新文章
InfluxDB概念和基本操作
InfluxDB TSM存储引擎之数据写入
深度漫谈数据系统架构——Lambda architecture
Lambda架构实践
InfluxDB TSM存储引擎之数据读取
最新课程
Oracle数据库性能优化、架构设计和运行维护
并发、大容量、高性能数据库设计与优化
NoSQL数据库(原理、应用、最佳实践)
企业级Hadoop大数据处理最佳实践
Oracle数据库性能优化最佳实践
更多...   
成功案例
某金融公司 Mysql集群与性能优化
北京 并发、大容量、高性能数据库设计与优化
知名某信息通信公司 NoSQL缓存数据库技术
北京 oracle数据库SQL优化
中国移动 IaaS云平台-主流数据库及存储技术
更多...