docker部署Neo4j图数据库
Neo4j是一个高性能的,基于java开发的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中;它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎。Neo4j分为企业版和社区版,企业版可以创建多个数据库,链接多个数据库,但是收费……;社区版只能链接一个数据库,所以社区版不支持创建数据库命令。Neo4j部署后默认创建名字为 neo4j 的数据库,可以直接链接这个数据库。
前言
Neo4j是一个高性能的,基于java开发的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中;它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎。
Neo4j分为企业版和社区版,企业版可以创建多个数据库,链接多个数据库,但是收费……;社区版只能链接一个数据库,所以社区版不支持创建数据库命令。
Neo4j部署后默认创建名字为 neo4j 的数据库,可以直接链接这个数据库。
一、拉取镜像
如果你的Docker源下载失败可以使用这篇文章的源试试。
截止目前Neo4j最新版本是 5.26.2 (社区版),这里就下载这个镜像。
# 下载镜像
docker pull neo4j:5.26.2
二、构建容器
# 创建neo4j容器
docker run -it -d -p 7474:7474 -p 7687:7687 \
-v /home/neo4j/data:/data \
-v /home/neo4j/logs:/logs \
-v /home/neo4j/conf:/var/lib/neo4j/conf \
-v /home/neo4j/import:/var/lib/neo4j/import \
-v /home/neo4j/plugins:/var/lib/neo4j/plugins \
-e NEO4J_AUTH=neo4j/password \
--name neo4j neo4j:5.26.2
-p 7474:7474 宿主机端口映射,7474端口为Neo4j界面访问端口
-p 7687:7687 宿主机端口映射,7687端口为后台API接口访问端口
-v /home/neo4j/data:/data 宿主机目录挂载,将Neo4j存储数据挂载到宿主机目录
-v /home/neo4j/logs:/logs 宿主机目录挂载,将Neo4j运行日志挂载到宿主机目录
-v /home/neo4j/conf:/conf 宿主机目录挂载,将Neo4j配置文件挂载到宿主机目录
-v /home/neo4j/import:/import 宿主机目录挂载,将Neo4j数据导入目录挂载到宿主机目录
-v /home/neo4j/plugins:/plugins 宿主机目录挂载,将Neo4j插件安装目录挂载到宿主机目录
-e NEO4J_AUTH=neo4j/password 配置Neo4j的登录密码,用户名必须是neo4j,密码可以自定义 不可以是关键字符如下划线
访问界面
访问地址:http://localhost:7474/browser/
数据备份与恢复
要想对Neo4j数据库做数据备份和数据导入稍稍有点麻烦。
停止容器
不管是导入或导出操作,第一步一定要将已启动的Neo4j停止(不是删除,是停止)
# 停止容器
docker stop neo4j
导出数据
#### 导出neo4j数据
docker run --interactive --tty --rm \
--volume=/home/neo4j/data:/data \
--volume=/home/neo4j/backups:/var/lib/neo4j/import \
--name neo4j_demo neo4j:5.26.2 \
neo4j-admin database dump neo4j --to-path=/var/lib/neo4j/import/
–interactive 提示Docker保持标准输入流(stdin,标准输入)对容器开放,允许用户通过命令行直接与容器交互,进行实时操作和调试。
–tty 提示Docker 为容器分配一个虚拟终端,允许发信号给容器进行实时操作。
–rm 容器完成操作并停止后自动删除容器。
-v /home/neo4j/data:/data 引用刚才停止的Neo4j容器存储的数据
-v /home/neo4j/backups:/var/lib/neo4j/import 将数据导出后通过容器映射目录到宿主机的 /home/neo4j/backup 目录
neo4j-admin database dump neo4j --to-path=/var/lib/neo4j/import/ 导出命令,在容器内使用 neo4j-admin
工具将 neo4j
数据库备份,备份文件存到容器内 /var/lib/neo4j/import/
目录(实际则会通过映射存到宿主机对应的挂载目录 /home/neo4j/backups )
–name neo4j_demo 重点:这里的容器名称不能和已停止的容器重名!!!!
导入数据
#### 导入neo4j数据(如果数据库存在会报错)
docker run -it --rm \
--volume=/home/neo4j/data:/data \
--volume=/home/neo4j/import:/var/lib/neo4j/import neo4j:5.26.2 \
neo4j-admin database load --from-path=/var/lib/neo4j/import/ neo4j
#### 强制导入neo4j数据(无视数据库是否存在直接覆盖)
docker run -it --rm \
--volume=/home/neo4j/data:/data \
--volume=/home/neo4j/import:/var/lib/neo4j/import neo4j:5.26.2 \
neo4j-admin database load --from-path=/var/lib/neo4j/import/ neo4j \
--overwrite-destination=true
–rm 容器完成操作并停止后自动删除容器。
-v /home/neo4j/data:/data 引用刚才停止的Neo4j容器存储的数据,目的是将数据导入到这个数据映射目录内
-v /home/neo4j/import:/var/lib/neo4j/import 将刚才导出的文件改名 “neo4j.dump”后,复制到/home/neo4j/import目录下,通过挂载机制会自动映射到容器内的 /home/neo4j/import 目录
neo4j-admin database load --from-path=/var/lib/neo4j/import/ neo4j 导入命令,在容器内使用 neo4j-admin
工具将 /var/lib/neo4j/import
目录下的“neo4j.dump”文件导入到neo4j数据库内
–overwrite-destination=true 强制导入,无视数据库是否存在直接覆盖
安装APOC插件(可选)
说明:APOC库是用Java实现的,由450+个过程和函数组成(还在不断更新中),用于完成数据集成、图形算法或数据转换等领域的不同任务。它将常用函数都提炼并封装好,开发人员可以直接使用。
下载地址:https://github.com/neo4j/apoc/releases (重点:要选择匹配版本号的插件版本)
将下载的jar包复制到刚才挂载的 /home/neo4j/plugins 目录内。
或者
使用命令映射到容器内部。
# 映射到容器内部
docker cp /home/neo4j/apoc-5.26.2-core.jar neo4j:/var/lib/neo4j/plugins
最后重启neo4j
docker restart neo4j
测试是否安装成功
# 在命令行处,输入指令
call apoc.help("apoc")
变相处理单库链接问题
免费版 Neo4j 单次只能链接单个数据库,并且默认数据库名就叫 neo4j 。
办法一
直接另起部署Neo4j服务,需要几个数据库就部署几个服务。
办法二
修改宿主机映射 /home/neo4j/data 内的数据库名称,然后重启容器;Neo4j重启找不到默认的 neo4j 数据库,就会重新创建名叫 neo4j 数据库,之后可以通过导入数据的方式格式这个数据库。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)