orientdb

1. 环境准备

操作系统: Centos6.8

内存:  8G(分布式部署时建议4G及以上,否则需要手动修改JVM配置)

JDK:  建议jdk8版本(3.0版本要求jdk8)

环境变量:需配置JAVA_HOME、ORIENTDB_HOME (配置文件中有用到)

export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
export ORIENTDB_HOME=/usr/local/orientdb
export PATH=$PATH:$ORIENTDB_HOME/bin

创建orientdb用户

# groupadd orientdb
# useradd -r  -g orientdb orientdb

 OrientDB安装包下载:官网地址https://orientdb.com/

2. 单实例部署

 

2.1    解压数据库安装包,并授权

tar -zxvf orientdb-enterprise-2.2.37.tar.gz
ln -s orientdb-enterprise-2.2.37 orientdb
chown -R orientdb:orientdb orientdb/

如果是下载的为社区版需将企业版agent jar包拷贝至plugins目录下

tar -zxvf orientdb-3.0.10.tar.gz

ln -s  orientdb-3.0.10 orientdb
chown -R orientdb:orientdb orientdb/
cp agent-3.0.10.jar orientdb/ plugins

 

2.2    修改bin目录下orientdb.sh

ORIENTDB_DIR="/usr/local/orientdb"

ORIENTDB_USER="orientdb"

2.3    修改bin目录下orientdb.service

User=orientdb

Group=orientdb

ExecStart=$ORIENTDB_HOME/bin/server.sh

2.4    首次启动数据库使用server.sh,并在启动过程中提示配置root账号密码,如首次不采用此方式启动,则会随机生成root账号的密码。因此单实例启动时建议用该方式启动。

./server.sh

uni getBluetoothDevices 数据结构示例_服务器

 

2.5 首次启动后会在databases目录下生成OSystem,如果该目录属主不是orientdb则需要手动修改为orientdb,否则下次启动时异常(报没有权限操作OSystem目录的错误)

2.6 启动、关闭服务(也可以复制到/etc/init.d目录下,做成服务)

./orientdb.sh  start

./orientdb.sh  status

./orientdb.sh  stop

 

2.7. 进入控制台,进行数据库交互

./console.sh

 

 

3.    分布式部署

分布式部署前几步操作同单实例情况(3.1-3.3),但后续操作不同

3.1 解压数据库安装包

tar -zxvf orientdb-enterprise-2.2.37.tar.gz

如果是下载的为社区版需将企业版agent jar包拷贝至plugins目录下

tar -zxvf orientdb-3.0.10.tar.gz

ln -s  orientdb-3.0.10 orientdb

cp agent-3.0.10.jar orientdb/ plugins

 

3.2 修改bin目录下orientdb.sh

ORIENTDB_DIR="/usr/local/orientdb"

ORIENTDB_USER="orientdb"

3.3 修改bin目录下orientdb.service

User=orientdb

Group=orientdb

ExecStart=$ORIENTDB_HOME/bin/server.sh

 

3.4 首次初始化启动数据库使用dserver.sh,并在启动过程中提示配置root账号密码,以及节点名称,节点名称在后续操作中需要用到

./dserver.sh

uni getBluetoothDevices 数据结构示例_服务器_02

 

uni getBluetoothDevices 数据结构示例_服务器_03

 

 

3.5 修改hazelcast.xml文件

配置TCP / IP模式机制,并添加对应节点信息,修改后主要配置信息如下:

<group>

        <name>clusterName</name>

        <password>clusterPassword</password>

    </group>

    <properties>   

        . . .

    </properties>

    <network>

        <port auto-increment="false">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>your_master_server_ip_1</member>

                <member>your_master_server_ip_2</member>

                <member>your_replica_server_ip</member>

            </tcp-ip>

        </join>

    </network>

 

其中部分标签的含义如下:

group> name :此元素定义集群的名称。 你可以选择任何你喜欢的东西

group> password :定义用于加密每个成员发送的广播消息加入群集的密码。 在这里选择一个强大的密码。

network> port :标识用于自动发现节点的端口。 auto-increment属性指示机制从定义的端口开始,如果该端口正在使用,则继续尝试其他端口。 通过将其设置为false,定义的端口将用于通信,如果端口已在使用中,则节点发现将失败。 对于本文,该属性将被禁用。

join>组播元素用于定义IP组播参数。 您将不会使用IP多播,因此我们将忽略它们。 这意味着我们将enabled属性设置为false。

join> tcp-ip :用于定义与TCP / IP集群相关的参数。 enabled属性用于启用它。

join> tcp-ip> member :定义集群的每个成员。 还有其他方法来指定每个成员,但是我们将坚持指定每个成员的IP地址(每行一个)。

3.6 修改orientdb-server-config.xml文件

其中NodeName参数的值是在第3.4步中配置的节点名

. . .

<handler class="com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin">

    <parameters>

        <parameter value="true" name="enabled"/>

        <parameter value="${ORIENTDB_HOME}/config/default-distributed-db-config.json" na$

        <parameter value="${ORIENTDB_HOME}/config/hazelcast.xml" name="configuration.haz$

        <parameter value="orientdb_server_name_1" name="nodeName"/>

    </parameters>

</handler>

. . .

 

 

 

3.7 修改default-distributed-db-config.json文件

默认配置全部节点均为主节点,如配置其中部分节点为副本,则修改为如下情况,

其中新增replication ,hotAlignment

{

  "replication": true,

  "hotAlignment" : true,

  "autoDeploy": true,

  "readQuorum": 1,

  "writeQuorum": "majority",

  "executionMode": "undefined",

  "readYourWrites": true,

  "newNodeStrategy": "static",

  "servers": {

    "orientdb_server_name_1": "master",

    "orientdb_server_name_2": "master",

    "orientdb_server_name_3": "replica"

  },

 

  ...

 

}

 

autoDeploy :指定是否将数据库部署到集群中尚未拥有的新节点。

readQuorum :在读取操作上回复客户端之前需要一致的集群节点的响应次数。 将其设置为“1”将禁用读取一致性。

writeQuorum :在写入操作时,在向客户端发送回复之前需要响应多少个节点。 默认值为多数 ,它使用N / 2)+ 1计算 ,其中N是集群中可用主节点的数量。 在计算大多数时,不考虑复制节点。 如果在仅具有两个主节点的群集中保留默认值,则如果其中一个节点关闭,则法定人数将永远不会形成。

executionMode :定义客户端的执行模式 - 同步或异步。 默认值允许客户端决定。

readYourWrites :指定节点的响应是否计数达到写入定额。

newNodeStrategy :当新节点加入集群时会发生什么。 使用默认值,节点将自动注册在服务器列表下。

hotAlignment :指定如果节点关闭然后重新联机,会发生什么。 如果启用,则当节点脱机时,同步消息将保留在分布式队列中。 当它回到在线时,通过轮询队列中的所有同步消息来启动同步阶段。

servers :用于指定集群中节点的角色(主节点或副本节点)。 默认情况下,使用星号*表示服务器中的所有节点都是主节点。 因为我们打算构建一个包含两个主器件和一个副本的集群,所以我们将通过指定每个节点的名称和集群中的角色来修改此参数进行匹配。

 

3.8启动各节点服务

启动时,注意启动顺序。启动的第一个服务器(即第一个加入集群)成为协调服务器 ,这是分布式操作启动的地方。 如果希望特定服务器具有此角色,先启动该角色

./orientdb.sh  start

 

所有节点启动完毕后,日志中将有如下信息,其中含有主节点、副本集信息

 

uni getBluetoothDevices 数据结构示例_服务器_04