均衡数据方案

提问参考模版:

  • nebula 版本:3.4.0

  • 部署方式: 分布式

  • 安装方式: RPM

  • 是否上生产环境:Y

扩容之后,除了 BALANCE DATA 命令,是否有其他方案均衡数据?目前增加机器后,原有图空间相当于只扩了graph 服务,分片数据迁移不到新的storaged上,无法利用新的节点。

1 个赞

BALANCE LEADER 还有这个哈

see Storage 负载均衡 - NebulaGraph Database 手册

balance leader 会做数据均衡吗,直接执行balance leader 会将原有三台机器的数据均衡到其他三台,然后再执行leader的执行吗

不会,当前主要是add hosts后balance data, 如果balance data不方便可以考虑重新导入数据;

通过这里面的enable_data_balance=true,是不是就可以执行 balance data了

参考配置文件中的说明,这个功能是可以打开的,但不是特别稳定,执行前做好数据备份,以及执行报错可以贴在这里我们一起查看。

备份数据失败了…

使用BR 备份数据到本地,报错:E_LIST_CLUSTER_NO_AGENT_FAILURE

Agent 信息:

三台机器启动Agent 命令:

sudo nohup ./agent --agent=“10.152.2.95:8888” --meta=“10.152.2.95:9559” > nebula_agent.log 2>&1 &
sudo nohup ./agent --agent=“10.128.5.244:8888” --meta=“10.152.2.95:9559” > nebula_agent.log 2>&1 &
sudo nohup ./agent --agent=“10.151.1.223:8888” --meta=“10.152.2.95:9559” > nebula_agent.log 2>&1 &
BR 备份命令:

./br backup full --meta “10.152.2.95:9559” --storage “local:///data1/nebula/backup/” --spaces test_1
报错信息:

分布式应该不支持本地存储的 br 吧?可以用 minio 作为 s3 后端试试?

看文档还有论坛里的介绍,是可以的,只是恢复数据麻烦点。

1 个赞

这里预设了所有的服务的 host 部分都要有一个 agent,你那里不止3个吧?

这是备份时的host情况。我把新增的那三个先摘掉了。

@steam 要麻烦 br 同事帮看看了哈~~

如果空间足够的话,允许停机的话,可以原样copy目录。这样也是一种意义上的备份~

1 个赞

直接copy storage 数据目录吗?这么暴力,如果balance data 失败后,再迁移回来是可行的吗?

执行一下 show hosts meta,show hosts graph 看看呢,有没有少部署agent。br备份要求每个服务所在的节点上都要有一个agent,包括了graph和meta服务

1 个赞



确实是这个原因,有三个 graphd 没有关掉,且没agent。

1 个赞

目前在 balance 中了,但是速度太慢了,貌似每个partition都要被迁移,看了下文档,目前分片算法用的静态 Hash,后面是不是可以用一致性 Hash 算法。

目前看要停服 balance data 30个小时。

1 个赞

未来的大版本这里可能会重新设计,有可能会用一致性哈希,或者其他不同于静态哈希的方式

cc @dutor @critical27 @SuperYoko

1 个赞

@aibot 除了 BALANCE DATA 命令,是否有其他方案均衡数据?

目前除了 BALANCE DATA 没有其他的官方方案来均衡数据。但你可以考虑重新导入数据来达到均衡数据的目的。

1 个赞