C7. orientdb - lyonwang/TechNotes GitHub Wiki

OrientDB Install (安裝 OrientDB 2.2.36 版本)

Install Java

sudo yum install java -y

System prepare

讓 cluster 可以找到對方 (orientdb-server-config.xml內的 nodeName 要相同)

sudo vim /etc/hosts
...
192.168.21.46	orientdb-node-1
192.168.21.47	orientdb-node-2
...

設定服務運行帳號 orientdb@orientdb

sudo adduser orientdb -d /opt/orientdb
sudo passwd orientdb
sudo usermod -s /bin/bash orientdb

Install OrientDB

Get tar & untar

wget https://s3.us-east-2.amazonaws.com/orientdb3/releases/2.2.36/orientdb-community-importers-2.2.36.tar.gz
tar -zxvf orientdb-community-importers-2.2.36.tar.gz
sudo mv orientdb-community-importers-2.2.36 /opt/orientdb

/opt/orientdb/bin/dserver.sh

sudo vim /opt/orientdb/bin/dserver.sh
ORIENTDB_OPTS_MEMORY="-Xms2G -Xmx2G"

Change owner

sudo chown -R orientdb:orientdb /opt/orientdb

Set server management account root@root

su - orientdb
/opt/orientdb/bin/dserver.sh
exit

HA/Cluster (Distributed Configuration)

/opt/orientdb/config/orientdb-server-config.xml

sudo chmod 640 /opt/orientdb/config/orientdb-server-config.xml
sudo vim /opt/orientdb/config/orientdb-server-config.xml

node 1

...
        <handler class="com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin">
            <parameters>
		...
                <parameter value="orientdb-node-1" name="nodeName"/>
            </parameters>
        </handler>
...

node 2

...
        <handler class="com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin">
            <parameters>
		...
                <parameter value="orientdb-node-2" name="nodeName"/>
            </parameters>
        </handler>
...

/opt/orientdb/config/hazelcast.xml

sudo vim /opt/orientdb/config/hazelcast.xml
...
        <network>
                <port auto-increment="true">2434</port>
                <join>
                        <multicast enabled="false">
                                <multicast-group>235.1.1.1</multicast-group>
                                <multicast-port>2434</multicast-port>
                        </multicast>
			<tcp-ip enabled="true">
                                <member>192.168.21.46-46:2434</member>
                                <member>192.168.21.46-47:2434</member>
                       </tcp-ip>
                </join>
        </network>
...

/opt/orientdb/config/default-distributed-db-config.json

sudo vim /opt/orientdb/config/default-distributed-db-config.json
{
  "replication": true,
  "hotAlignment" : true,
  "autoDeploy": true,
  "readQuorum": 1,
  "writeQuorum": "majority",
  "executionMode": "undefined",
  "readYourWrites": true,
  "newNodeStrategy": "static",
  "servers": {
    "orientdb-node-1": "master",
    "orientdb-node-2": "master"
  },
  "clusters": {
    "internal": {
    },
    "*": {
      "servers": ["<NEW_NODE>"]
    }
  }
}

Run OrientDB as a Service (daemon)

/opt/orientdb/bin/orientdb.sh

sudo vim /opt/orientdb/bin/orientdb.sh
ORIENTDB_DIR="/opt/orientdb"
ORIENTDB_USER="orientdb"
sudo cp /opt/orientdb/bin/orientdb.service /etc/systemd/system
sudo vim /etc/systemd/system/orientdb.service
User=orientdb
Group=orientdb
ExecStart=/opt/orientdb/bin/dserver.sh
sudo systemctl daemon-reload
sudo systemctl start orientdb.service
sudo systemctl enable orientdb.service

確認 cluster 建立成功

sudo cat /opt/orientdb/log/orient-server.log.0 | grep "|"

出現

|Name                 |Status|Databases                    |Conns|StartedOn|Binary            |HTTP              |UsedMemory              |
|orientdb-node-1(*)(@)|ONLINE|demodb=ONLINE (MASTER)       |3    |02:58:11 |192.168.21.46:2424|192.168.21.46:2480|626.85MB/1.98GB (30.93%)|
|orientdb-node-2      |ONLINE|demodb=NOT_AVAILABLE (MASTER)|2    |02:59:16 |192.168.21.47:2424|192.168.21.47:2480|636.10MB/1.98GB (31.39%)|

note

一旦使用 /opt/orientdb/bin/dserver.sh 測試過,就要執行以下指令,再起service,因為會有檔案權限被變更為root:root。

sudo chown -R orientdb:orientdb /opt/orientdb

讓 cluster backup 可運行

sudo chown -R orientdb:orientdb /tmp/orientdb

C# 程式開發套件

Install-Package OrientDB-Net.binary.Innov8tive -Version 0.1.12 -IgnoreDependencies
  • 請務必加上 -IgnoreDependencies,否則原本的相依套件會被替換掉,可能造成 Compile error
⚠️ **GitHub.com Fallback** ⚠️