簡體   English   中英

OrientDB嵌入式和分布式錯誤:未安裝分布式存儲

[英]OrientDB Embedded and Distributed error: Distributed Storage was not installed

您好,謝謝您閱讀此問題。 我已經設置了定向數據庫,並希望添加第二台服務器,並使它們彼此復制。 當一個人獨立運行時,它運行良好,我已經使用了幾個月。 啟用hazelcast插件后,服務器開始通信,我可以看到它們開始相互通信。 但是,當他們嘗試互相寫信時會發生錯誤。 這是此處討論的相同問題:

https://groups.google.com/forum/#!topic/orient-database/QpZPG4y_KpU

出於其價值,我將這兩個服務器都部署在同一台計算機上,每個服務器都有自己的嵌入式數據庫。 數據庫路徑是plocal:/ home / chris / dbs / db2和plocal:/ home / chris / dbs / db1

2015-10-08 08:56:14:048 INFO  [db2-orient] Saving distributed configuration file for database 'db' to: ./databases/db/distributed-config.json [OHazelcastPlugin]
2015-10-08 08:56:14:049 INFO  [db2-orient] received new status idp2-orient.idp=SYNCHRONIZING [OHazelcastPlugin]
2015-10-08 08:56:18:054 WARNING [db2-orient]->[[db1-orient]] requesting deploy of database 'db' on local server... [OHazelcastPlugin]

然后在另一台服務器上,首先啟動的服務器

[OHazelcastPlugin]{db=db} [db1-orient]<-[db2-orient] error on executing distributed request 0: deploy_db
com.orientechnologies.orient.server.distributed.ODistributedException: Distributed storage was not installed for database 'db'. Implementation found: com.orientechnologies.orient.core.storage.impl.local.paginated.OLocalPaginatedStorage
at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin.executeOnLocalNode(OHazelcastPlugin.java:745)
at com.orientechnologies.orient.server.hazelcast.ODistributedWorker.onMessage(ODistributedWorker.java:298)
at com.orientechnologies.orient.server.hazelcast.ODistributedWorker.run(ODistributedWorker.java:121)

我在拋出該異常的行上放置了一個斷點,當時存在的存儲類型確實是OLocalPaginatedStorage。 我的orientDB版本是2.0.15。

我的分布式配置。 (兩個服務器上相同)

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

}

這就是我啟動服務器的方式。 它是嵌入式的,並通過Java應用程序啟動。

OServer server = OServerMain.create(true);
OPartitionedDatabasePool pool = server.startup(config.toString()).activate().getDatabasePoolFactory().get(dbPath, OUser.ADMIN, OUser.ADMIN);

服務器用來啟動的配置是這個

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<orient-server>
<handlers>
    <handler class="com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin">
        <parameters>
            <parameter name="nodeName" value="db2-orient" />
            <parameter name="enabled" value="true" />
            <parameter name="configuration.db.default" value="${orientDBConfigs}/orientdb-default-distributed-db-config.json" />
            <parameter name="configuration.hazelcast" value="${orientDBConfigs}/orientdb-hazelcast.xml" />
            <parameter name="conflict.resolver.impl" value="com.orientechnologies.orient.server.distributed.conflict.ODefaultReplicationConflictResolver" />

            <parameter name="sharding.strategy.round-robin" value="com.orientechnologies.orient.server.hazelcast.sharding.strategy.ORoundRobinPartitioninStrategy" />
        </parameters>
    </handler>
    <handler class="com.orientechnologies.orient.server.handler.OAutomaticBackup">
        <parameters>
            <parameter name="enabled" value="false" />
            <parameter name="delay" value="4h" />
            <parameter name="target.directory" value="backup" />
            <parameter name="target.fileName" value="${DBNAME}-${DATE:yyyyMMddHHmmss}.json" />
            <parameter name="db.include" value="" />
            <parameter name="db.exclude" value="" />
        </parameters>
    </handler>
    <handler class="com.orientechnologies.orient.server.plugin.mail.OMailPlugin">
        <parameters>
            <parameter name="enabled" value="false" />
            <parameter name="profile.default.mail.smtp.host" value="localhost" />
            <parameter name="profile.default.mail.smtp.port" value="25" />
            <parameter name="profile.default.mail.smtp.auth" value="true" />
            <parameter name="profile.default.mail.smtp.starttls.enable" value="true" />
            <parameter name="profile.default.mail.smtp.user" value="" />
            <parameter name="profile.default.mail.smtp.password" value="" />
            <parameter name="profile.default.mail.date.format" value="yyyy-MM-dd HH:mm:ss" />
        </parameters>
    </handler>
    <handler class="com.orientechnologies.orient.server.handler.OServerSideScriptInterpreter">
        <parameters>
            <parameter name="enabled" value="false" />
        </parameters>
    </handler>
</handlers>
<network>
    <protocols>
        <protocol name="binary" implementation="com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary" />
    </protocols>
     <listeners>
        <listener protocol="binary" ip-address="0.0.0.0" port-range="2424-2430" />

    </listeners> 
    <cluster>
    </cluster>
</network>
<storages>
    <storage name="${dbName}" path="${dbPath}" loaded-at-startup="true" />
</storages>
<users>
    <user name="root" password="root" resources="*"/>
</users>
<properties>

    <entry name="db.pool.min" value="1" />
    <entry name="db.pool.max" value="20" />

    <entry name="cache.level1.enabled" value="false" />
    <entry name="cache.level1.size" value="1000" />
    <entry name="cache.level2.enabled" value="true" />
    <entry name="cache.level2.size" value="1000" />
    <entry name="profiler.enabled" value="true" />

    <entry name="log.console.level" value="info" />
    <entry name="log.file.level" value="fine" />

    <entry name="plugin.dynamic" value="false"/>
</properties>

再次感謝。

正如wolf4ood指出的那樣,存儲類型由hazelcast插件的onOpen方法中的hazelcast插件代替。 分頁存儲被切換為分布式。 如果路徑不是以“ plocal:./ databases”開頭,則不會發生這種替換。 解決方案:從此開始。 我不知道這是否是一個好主意。 該檢查似乎是有原因的,代碼中的注釋似乎表明有關在同一jvm上運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM