在Docker容器里安装
OrientDB第一个多模型(Multi-Model)开源的NoSQL数据库,结合了图的强大和文档的灵活性,是一个可伸缩,高性能的OLTP数据库。
仓库中是一个创建orientdb镜像的dockerfile文件:
- 明确的orientdb版本(2.0),提供稳定缓存的镜像
- 通过supervisord(进程管理工具)初始化
- 配置,数据库,备份目录(挂载的磁盘卷)
大量的信息还在下面orientdb+docker的探索。继续阅读!
参考文章
在你的机器上构建镜像
- 克隆工程到本地目录:
git clone https://github.com/orientechnologies/orientdb-docker.git
构建镜像:
docker build -t <YOUR_DOCKER_HUB_USER>/orientdb-2.0 .
将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的配置,在线数据库和备份目录传递到远程存储。注意:不要相信在线数据库的远程存储,除非服务器挂了,而且变更正确的刷新到磁盘。
针对你想备份的目录,在在远程存储的位置上创建BTSync共享目录
1.1. config: 在config目录下的orientdb配置
1.2. databases: 在线数据库的目录
1.3. backup: OrientDB存储ZIP压缩的备份的目录(在配置文件中激活备份)
注意BTSync目录的秘密: CONFIG_FOLDER_SECRET, DATABASES_FOLDER_SECRET, BACKUP_FOLDER_SECRET
针对每个要同步的目录,运行对应的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
等待片刻,直到到所有的文件出现在对应的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
最后,你可以准备启动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