加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 设置分片的orientdb

发布时间:2020-12-15 02:09:26 所属栏目:Java 来源:网络整理
导读:我正在尝试在3台服务器上进行设置.出于举个例子的目的,我是 试图设置一个类“客户端”,3个集群“client_1”, “client_2”和“client_3”.我的服务器叫做node1,node2和 节点3.我希望这些集群的排列方式使得每个集群都有2个副本 如果1个节点出现故障,我仍然可
我正在尝试在3台服务器上进行设置.出于举个例子的目的,我是
试图设置一个类“客户端”,3个集群“client_1”,
“client_2”和“client_3”.我的服务器叫做node1,node2和
节点3.我希望这些集群的排列方式使得每个集群都有2个副本
如果1个节点出现故障,我仍然可以访问所有数据,所以对于
例:

> node1是client_1的主服务器,并且具有client_2的副本.
> node2是client_2的主服务器,并且具有client_3的副本.
> node3是client_3的主服务器,并且具有client_1的副本.

我已经尝试通过以下步骤进行设置:
1.下载OrientDB 2.1.1社区并解压缩到3台服务器上.
2.从数据库目录中删除GratefulDeadConcerts数据库
每个服务器.
3.在node1上编辑default-distributed-db-config.json,如下所示:

{
"autoDeploy": true,"hotAlignment": false,"executionMode": "undefined","readQuorum": 1,"writeQuorum": 2,"failureAvailableNodesLessQuorum": false,"readYourWrites": true,"clusters": {
"internal": {
},"index": {
},"client_1": {
"servers" : [ "node1","node2" ]
},"client_2": {
"servers" : [ "node2","node3" ]
},"client_3": {
"servers" : [ "node3","node1" ]
},"*": {
"servers" : [ "<NEW_NODE>" ]
}
}
}

>使用dserver.sh启动node1.
>使用node1上的控制台创建数据库:
connect remote:localhost root密码
create database remote:localhost / testdb root password plocal graph
>创建一个类并重命名默认集群:
create class client extends v
alter cluster client name client_1
>使用dserver.sh启动node2,等待数据库自动部署,然后
启动node3并等待部署

此时我在3个节点上有一个数据库,其中有一个名为“client”的类
只有一个群集“client_1”.

>在node2上,添加client_2集群:
alter class client addcluster client_2
>同样,在node3上:
alter class client addcluster client_3

如果我重新连接所有控制台会话并执行“列表集群”,我现在看到
每个节点上的所有3个客户端类集群.我也看到了.cpm和
每个节点上3个集群中每个集群的.pcl文件.然而,它出现了
我的意图是default-distributed-db-config.json正在被采用
帐户好像我等了几分钟,然后插入每个记录
节点我看到时间戳和文件大小只对文件有所改变
与应该存在于每个节点上的集群有关
(如果文件不存在于错误中,那将会很好并且不那么令人困惑
节点,但它不是世界末日).

所以…现在看来我的数据库设置方式与我的预期方式相同,但是
这样做的目的是让我们能够在服务器停机时存活,所以我
使用ctrl-c关闭node3.我仍然可以看到每个记录(我插入了
来自node1和node2的3个,每个集群一个 – 到目前为止一切顺利.

如果我在node1或node2上查看distirbuted-db.json的内容,
我现在看到我的“客户端”类集群已经重新配置 – 没有
配置中的node3不再:

"client_3": { "servers": [ "node1" ],"@version": 0,"@type": "d" },"client_2": { "servers": [ "node2" ],"client_1": { "servers": [ "node1","node2" ],"@type": "d" }

现在我重新启动node3.配置未再次更新:

"client_3": { "servers": [ "node1" ],"@type": "d" }

我创建/配置数据库的方式有问题还是这个错误?

解决方法

我认为这里的问题是“hotAlignment”需要在文件“default-distributed-db-config.json”中设置为“true”.根据 OrientDB 2.2.x sharding doc,“如果设置了hotAlignment = false,当节点重新加入集群时(失败后或仅仅是不可达),来自节点的数据库的完整副本可能没有关于分片的所有信息.”但是请注意,来自 changes between 2.1.x to 2.2.x的这个子弹:“删除了热对齐设置:服务器一旦加入群集,就会一直保留在配置中,直到它们被手动删除.”

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读