首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置一个切分的方向b

设置一个切分的方向b
EN

Stack Overflow用户
提问于 2015-09-04 07:13:39
回答 1查看 408关注 0票数 4

我试着在3台服务器上安装。作为一个示例,我试图设置一个类"client",其中包含3个集群"client_1“、"client_2”和"client_3“。我的服务器名为node1、node2和node3。我希望将集群安排成每个集群有两个副本,所以如果一个节点出现故障,我仍然可以访问所有数据,例如:

  • 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,如下所示:

代码语言:javascript
复制
{
"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>" ]
}
}
}
  1. 从node1开始使用dserver.sh。
  2. 在node1上使用控制台创建数据库:连接远程:localhost根密码创建数据库远程:localhost/testdb根密码plocal图
  3. 创建一个类并重命名默认的集群: Create扩展v ALTER群集客户端名称client_1
  4. 使用node2启动dserver.sh,等待数据库自动部署,然后启动node3并等待部署

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

  1. 在node2上,添加client_2集群: alter客户端添加群集client_2
  2. 类似地,在node3上: alter客户端添加集群client_3

如果我重新连接所有控制台会话并执行“列表群集”,那么现在我可以在每个节点上看到客户端类的所有3个集群。我还看到了每个节点上的三个集群中的每个集群的.cpm和.pcl文件。但是,我在默认分布的-db-config.json中的意图似乎被考虑到了,就好像我等待了几分钟,然后从每个节点插入了一条记录--我看到时间戳和文件大小只改变了与每个节点上应该存在的集群相关的文件(如果文件不存在于错误的节点上,但它并不是世界末日)。

所以..。现在看来,我已经按照我想要的方式设置了数据库,但是这样做的目的是为了让服务器能够继续运行,所以我用ctrl关闭了node3。我仍然可以从node1和node2中看到每条记录(我插入了3条,每个集群一条)--到目前为止还不错。

如果我看一下node1或node2上distirbuteddb.json的内容,现在我看到我的“客户机”类集群已经被重新配置了-配置中不再有node3:

代码语言:javascript
复制
"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。配置不会再次更新:

代码语言:javascript
复制
"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" }

,我创建/配置数据库的方式有什么问题吗?还是这是一个bug?

EN

回答 1

Stack Overflow用户

发布于 2016-11-23 22:07:04

我认为这里的问题是,在"default-distributed-db-config.json“文件中,需要将"hotAlignment”设置为"true“。根据OrientDB 2.2.x分片文档,“如果设置了hotAlignment=false,当节点重新加入集群时(在失败或根本无法到达),来自节点的数据库的完整副本可能没有关于碎片的所有信息。”但是,请注意,来自2.1.x至2.2.x之间的变化的这个项目:“已删除的hotAlignment设置:服务器一旦加入集群,就一直保留在配置中,直到它们被手动删除。”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32392194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档