在Docker容器里安装

OrientDB第一个多模型(Multi-Model)开源的NoSQL数据库,结合了图的强大和文档的灵活性,是一个可伸缩,高性能的OLTP数据库。

仓库中是一个创建orientdb镜像的dockerfile文件:

  • 明确的orientdb版本(2.0),提供稳定缓存的镜像
  • 通过supervisord(进程管理工具)初始化
  • 配置,数据库,备份目录(挂载的磁盘卷)

大量的信息还在下面orientdb+docker的探索。继续阅读!

参考文章

在你的机器上构建镜像

  1. 克隆工程到本地目录:
    git clone https://github.com/orientechnologies/orientdb-docker.git
    
  2. 构建镜像:

    docker build -t <YOUR_DOCKER_HUB_USER>/orientdb-2.0 .
    
  3. 将docker镜像上传到Docker Hub仓库(需要登录验证):

    docker push <YOUR_DOCKER_HUB_USER>/orientdb-2.0
    

下面所有的例子都是用镜像nesrait/orientdb-2.0。如果你使用自己的镜像,将"nesrait"替换成你的Docker Hub用户.

运行Orientdb

运行镜像,创建容器:

docker run --name orientdb -d -v <config_path>:/orientdb/config -v <databases_path>:/orientdb/databases -v <backup_path>:/orientdb/backup -p 2424 -p 2480 nesrait/orientdb-2.0

docker镜像包含了一个没有修改过配置的Orientdb(配置文件有,只不过都是默认的),为了运行,你需要提供你自己的配置目录,OrientDB 从这个目录读取启动配置。

同样还需要配置数据库目录,如果配置成容器中的本地目录,那么数据会随着容器销毁或者强制杀掉的时候销毁。

备份目录只有当你在OrientDB配置文件中设置备份功能时才需要指定。

使用BTSync进行持久化存储

如果你不是分布式部署OrientDB,那么你需要特别关注下备份你的数据库(防止你的主机挂掉).

下面是一个简单,然而比较屌的方式:使用BTSync数据容器将OrientDB的配置,在线数据库和备份目录传递到远程存储。注意:不要相信在线数据库的远程存储,除非服务器挂了,而且变更正确的刷新到磁盘。

  1. 针对你想备份的目录,在在远程存储的位置上创建BTSync共享目录

    1.1. config: 在config目录下的orientdb配置

    1.2. databases: 在线数据库的目录

    1.3. backup: OrientDB存储ZIP压缩的备份的目录(在配置文件中激活备份)

  2. 注意BTSync目录的秘密: CONFIG_FOLDER_SECRET, DATABASES_FOLDER_SECRET, BACKUP_FOLDER_SECRET

  3. 针对每个要同步的目录,运行对应的BTSync数据容器:

    docker run -d --name orientdb_config -v /opt/orientdb/config nesrait/btsync /opt/orientdb/config CONFIG_FOLDER_SECRET
    docker run -d --name orientdb_databases -v /opt/orientdb/databases nesrait/btsync /opt/orientdb/databases DATABASES_FOLDER_SECRET
    docker run -d --name orientdb_backup -v /opt/orientdb/backup nesrait/btsync /opt/orientdb/backup BACKUP_FOLDER_SECRET
    
  4. 等待片刻,直到到所有的文件出现在对应的BTSync的数据卷里:

    docker run --rm -i -t --volumes-from orientdb_config --volumes-from orientdb_databases --volumes-from orientdb_backup ubuntu du -h /opt/orientdb/config /opt/orientdb/databases /opt/orientdb/backup
    
  5. 最后,你可以准备启动OrientDB服务

    docker run --name orientdb -d \
             --volumes-from orientdb_config \
             --volumes-from orientdb_databases \
             --volumes-from orientdb_backup \
             -p 2424 -p 2480 \
             nesrait/orientdb-2.0
    

OrientDB分布式部署

如果你打算分布式运行 OrientDB,你将不用担心内容会丢失,因为会复制到其他节点。 上面简单的安装步骤忽略这个参数"--volumes-from orientdb_databases",OrientDB将使用数据容器的存储数据库文件。

*备注: 如果要在容器中运行hazelcast(一种分布式内存系统),还需要一些额外的工作。(看这里的讨论).

临时备份

OrientDB 2.0,我们可以使用the new backup.sh script创建临时备份:

  • 使用我们前面创建的数据容器:

    docker run -i -t --volumes-from orientdb_config --volumes-from orientdb_backup nesrait/orientdb-2.0 ./backup.sh <dburl> <user> <password> /opt/orientdb/backup/<backup_file> [<type>]
    
  • 或者使用一个主机目录:

    docker run -i -t --volumes-from orientdb_config -v <host_backup_path>:/backup nesrait/orientdb-2.0 ./backup.sh <dburl> <user> <password> /backup/<backup_file> [<type>]

任何一种方式, 当备份完成的时候,你都可以在OrientDB容器外拿到备份文件,可以安全保管。

注意: 我没有尝试过非阻塞的备份(type=lvm),但是可以在this discussion about a docker LVM dependency issue找到相应的资料.

运行Orientdb命令行

docker run --rm -it \
            --volumes-from orientdb_config \
            --volumes-from orientdb_databases \
            --volumes-from orientdb_backup \
            nesrait/orientdb-2.0 \
            /opt/orientdb/bin/console.sh