Neo4j 基本使用创建并启动数据库
文章目录
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
- 点赞
- 收藏
- 关注作者
评论(0)