停止 Neo4j Docker 镜像以从备份恢复
在 neo4j docker 安装
中,neo4j-admin restore
要求 neo4j 服务停止,因为不能对正在运行的数据库进行恢复。随后,在作为 Docker 镜像运行时,可以使用 Ctrl-C
(从 Docker 终端内)或从单独的终端窗口使用 docker stop <container id>
停止 neo4j 服务器。但是,这将终止容器本身,因为容器只是 neo4j 应用程序的实例。在这种情况下,使用 ./neo4j-admin restore
进行恢复将不可行。
以下是在 Docker 中执行 neo4-admin restore
的解决方法
-
通过执行
docker ps
获取容器名称 -
通过执行
docker exec --interactive --tty <container id> bin/neo4j-admin backup
备份 neo4j,将 <container id> 替换为上面获取的 ID。 -
在恢复之前,需要停止 neo4j 实例。如果从与 Docker 进程相同的终端执行,请使用
Ctrl-C
,它将停止 neo4j Docker 容器进程。否则,如果 neo4j 容器是在指示--dettach
的情况下创建的,则Ctrl-C
将不起作用,需要从单独的终端通过 Docker 命令停止容器。要从单独的终端执行此操作,请执行docker stop <container id>
-
将 graph.db 文件夹替换为之前创建的备份中的文件夹。
-
启动容器,它应该使用恢复的数据库启动。
$ docker run \
--publish=7474:7474 --publish=7687:7687 \
--volume=$HOME/neo4j/data:/data \
--volume=$HOME/neo4j/logs:/logs \
neo4j:3.3.0
或者,可以指定 --dbms.active_database=new.db
作为启动选项,如
$ docker run \
--publish=7474:7474 --publish=7687:7687 \
--volume=$HOME/neo4j/data:/data \
--volume=$HOME/neo4j/logs:/logs \
--dbms.active_database=new.db
neo4j:3.3.0`
以下是在测试过程中发现的一些项目
-
在撰写本知识库时,neo4j 社区版不支持在线备份。企业版可以使用
--neo4j:3.3.0-enterprise
而不是--neo4j:3.3.0
(默认情况下将安装社区版)来安装。 -
对于 Docker 设置,在容器启动时指定的 /data、/conf 和 /logs 目录将持久保存到磁盘。在运行的实例上替换 graph.db 将继续显示未恢复版本的数据库,除非重新启动 neo4j 实例。
此页面是否有帮助?