我正在尝试在3台服务器上进行设置。出于举个例子的目的,我是 试图设置一个类“客户端”,3个集群“client_1”, “client_2”和“client_3”。我的服务器叫做node1,node2和 节点3。我希望这些集群的排列方式使得每个集群都有2个副本 如果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>" ]
}
}
}
此时我在3个节点上有一个数据库,其中有一个名为“client”的类 只有一个群集“client_1”。
如果我重新连接所有控制台会话并执行“列表集群”,我现在看到了 每个节点上的所有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" ], "@version": 0, "@type": "d" },
"client_1": { "servers": [ "node1", "node2" ], "@version": 0,
"@type": "d" }
现在我重新启动node3。配置没有再次更新:
"client_3": { "servers": [ "node1" ], "@version": 0,
"@type": "d" },
"client_2": { "servers": [ "node2" ], "@version": 0, "@type": "d" },
"client_1": { "servers": [ "node1", "node2" ], "@version": 0,
"@type": "d" }
我创建/配置数据库的方式有问题,还是这个错误?
答案 0 :(得分:0)
我认为这里的问题是&#34; hotAlignment&#34;需要设置为&#34; true&#34;在文件&#34; default-distributed-db-config.json&#34;中。根据{{3}},&#34;如果设置了hotAlignment = false,则当节点重新加入群集时(在失败或简单地不可达之后),来自节点的数据库的完整副本可能没有关于该节点的所有信息。碎片&#34。但是请注意,来自OrientDB 2.2.x sharding doc:&#34;已移除的热对齐设置:服务器的子弹一旦加入群集,就会一直保留在配置中,直到手动删除它们为止。&#34;