Q: orientdb 分布式问题

Q: orientdb distrubuted issues

使用 orientdb v2.1.13

我从 v2.1.0 导入了数据库,想设置 3 个节点的集群。在每个节点重新启动时(我测试了它是如何工作的)它刷新了整个数据库并将其从一个节点同步回来(即使没有插入,因为它还没有生效)并且它每秒同步 1MB 的压缩数据。对于 48GB db(8GB 压缩),所以每次都需要很长时间。有没有办法解决这个问题? 默认分布-db.config.json:

{
  "autoDeploy": true,
  "hotAlignment": false,
  "executionMode": "undefined",
  "readQuorum": 1,
  "writeQuorum": 2,
  "failureAvailableNodesLessQuorum": false,
  "readYourWrites": true,
  "servers": {
    "*": "master"
  },
  "clusters": {
    "internal": {
    },
    "index": {
    },
    "*": {
      "servers": ["<NEW_NODE>"]
    }
  }
}

服务器通过 hazelcast 中的 tcp-ip 连接。服务器之间有千兆位 link 并且它们都是具有 64G ram 和 ssd 存储的新机器。 我们还尝试将 orientdb 包含在 32G ram 中,并且在每次重建索引时它几乎占用所有可用的 ram。我们尝试了很多不同的 heap/diskcache 组合,但没有成功。对此有何建议? 此外,由于此设置非常糟糕,它以分布式设置开始,然后移至单个节点,因此 "list clusters" 中打印了很多集群,我应该 freeze/remove 未使用的集群吗?

我尝试修复数据库但没有成功:

orientdb {db=DB}> repair database  
Repair of graph 'remote:localhost/DB' is started ...
Scanning 6596654 edges...

Error: java.lang.NullPointerException

欢迎提出任何建议。事情是最好的设置方案,最好的节点数量。我考虑过分片可能是为了分发索引

谢谢!

对于 2.1.13 版,当您重新启动节点时,它会刷新整个数据库并从一个节点同步回来。 对于 2.2 版,同步将是增量的。

关于您的集群情况:将所有这些集群都包含在列表中没有问题,即使它们未被使用,但如果您愿意,可以使用 drop cluster <cluster-name> 删除它们。只是要注意里面没有记录,否则只要集群就会被删除。

请参考这个http://orientdb.com/docs/last/Console-Command-Drop-Cluster.html