Neo4j 基本使用创建并启动数据库

举报
xcc-2022 发表于 2022/08/07 20:54:23 2022/08/07
【摘要】 文章目录0. 背景1. 默认方式启动neo4j2. 方案0:指定配置文件启动neo4j3. 方案1:使用多个安装文件4. 方案2:使用docker4.1 拉取 neo4j 镜像4.2 创建 neo4j 容器4.3 创建多个 neo4j 容器0. 背景对于大量节点和关系的知识图谱导入neo4j,一般是使用neo4j-admin import。而使用neo4j-admin import导入neo...


0. 背景

对于大量节点和关系的知识图谱导入neo4j,一般是使用neo4j-admin import。而使用neo4j-admin import导入neo4j的时候需要数据库是空的,即如果已经有同名数据库需要预先清空。如果有多个海量节点和关系的知识图谱,则只能分开独立存储于各自的数据库中。那么如何在一台服务器上同时启动多个neo4j,以应对多个数据库呢?

1. 默认方式启动neo4j

在安装完neo4j后,我们已经在系统环境变量(/etc/profile)添加如下信息:

export NEO4J_HOME=/data/dev_tool/neo4j-community-3.4.6
export PATH=$PATH:$NEO4J_HOME/bin

所以,我们可以直接在终端窗口上用neo4j start命令启动服务。

查看此时采用conf/neo4j.conf启动的neo4j服务对于网络端口的占用情况:

在这里插入图片描述

可以看到,neo4j进程50934占用了3个端口:7687、7473和7474。其中7687是默认的bolt端口;7473是https端口;7474是http端口。

2. 方案0:指定配置文件启动neo4j

启动neo4j的方法下述两种是等价的:

nohup ./bin/neo4j console  = neo4j start

我们尝试看下,指定配置文件的启动方式可设置的参数有哪些?
在这里插入图片描述
从上述的返回结果可以看出Neo4j is already running(pid 50934)
所以,./bin/neo4j start --help其实没有help这个参数,该命令之间尝试启动一个neo4j 进程。

尝试网传类似如下命令启动一个新的neo4j服务:

./bin/neo4j start -config neo4j_pkubase.conf -run neo4j_pkubase.pid -log neo4j_pkubase.log

注定会失败的。查看./bin/neo4j中的脚本内容或者./bin/neo4j --help。可以看出,该脚本只有这几个参数:console | start | stop | restart | status | version。根本不接受配置文件作为参数传入。再细看./bin/neo4j中的脚本内容,能够进一步确认,里面具体的参数信息都是基于安装文件的一级目录下展开的。

3. 方案1:使用多个安装文件

由于上述在同一个运行脚本中通过指定配置文件的方案行不通,所以我们尝试使用多个安装文件。这里我们在neo4j官网上又下载了最新版本的neo4j(neo4j-community-3.5.12),原来已经下载的neo4j版本是neo4j-community-3.4.6。注意,需要预先将环境变量中的neo4j注释掉。具体来说是将/etc/profile中:

export NEO4J_HOME=/data/dev_tool/neo4j-community-3.4.6                             
export PATH=$PATH:$NEO4J_HOME/bin

注释。
为了使得端口号不冲突,我们这里修改neo4j-community-3.5.12中配置文件的bolt、http 和 https 端口号。由于环境变量已经取消了,需要分别进入各自的目录运行./bin/neo4j start。开启两个neo4j服务如下图所示:

在这里插入图片描述

如果上述的环境变量没有注释,直接在neo4j-community-3.5.12的bin目录下启动neo4j:
在这里插入图片描述

另外,修改环境变量之后,除了source /etc/profile之外,还需要重新开一个终端才能够真正生效。

4. 方案2:使用docker

4.1 拉取 neo4j 镜像

查看可用的 neo4j 镜像:

docker search neo4j

结果如下:
在这里插入图片描述

拉取镜像:

docker pull neo4j

那么我们拉取的这个镜像具体对应哪个版本呢?我们去https://hub.docker.com/ 查看细节:
在这里插入图片描述

点击进去可以看出对应的版本号是3.5.12:
在这里插入图片描述

4.2 创建 neo4j 容器

创建容器:

docker run --name=neo4j_pkubase  -it -p 7473:7473 -p 7474:7474 -p 7687:7687 -d neo4j

其中参数

-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

我们这里用-p参数将本地端口和容器的端口绑定,完成映射。

我们可以查看此时的端口占用情况:

在这里插入图片描述

从上图可以看出,端口的映射是通过docker-proxy启动的代理进行转发的,每个端口都需要启动一个docker-proxy代理服务。

停止容器:

docker container stop neo4j_pkubase

也可以直接kill掉一个容器服务:docker container kill neo4j_pkubase

运行容器:
启动一个已有的容器:

docker container start neo4j_pkubase

进入容器:
使用下面命令进入一个已经在运行的容器:

docker exec -it neo4j_pkubase /bin/bash

删除容器:

docker container rm neo4j_pkubase

4.3 创建多个 neo4j 容器

为了使用本地已经有的配置文件,需要在创建 容器的时候使用映射:
(1)创建一个用于存储 ownthink 知识图谱的数据库:

docker run --name=neo4j_ownthink  -it -p 7473:7473 -p 7474:7474 -p 7687:7687 -v $NEO4J_HOME/conf:/conf -v $NEO4J_HOME/data:/data -v $NEO4J_HOME/certificates:/certificates -v $NEO4J_HOME/import:/import -d neo4j

这里之所以加入certificates主要是因为懒,之前已经构建好了ownthink知识图谱,账号也创建了,不想改了,直接映射就好了。

(2)创建一个用于存储 pkubase 知识图谱的数据库:

docker run --name=neo4j_pkubase  -it -p 7483:7483 -p 7484:7484 -p 7688:7688 -v $NEO4J_HOME/conf_pkubase:/conf -d neo4j

在这里插入图片描述

在网页上通过ip:7484端口号即可访问 容器中的 neo4j。
创建完之后,修改密码为neo4jpku,账号依然是neo4j

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。