停止 Neo4j Docker 镜像以从备份恢复
在 Neo4j Docker 安装
中,neo4j-admin restore
命令要求 Neo4j 服务停止,因为无法在运行中的数据库上执行恢复操作。因此,作为 Docker 镜像运行时,停止 Neo4j 服务器可以通过 Ctrl-C
(在 Docker 终端内)或从单独的终端窗口使用 docker stop <容器 ID>
来完成。然而,这会终止容器本身,因为容器只是 Neo4j 应用程序的一个实例。在这种情况下,使用 ./neo4j-admin restore
进行恢复将不是一个可行的选项。
以下是在 Docker 中执行 neo4j-admin restore
的变通方法
-
通过执行
docker ps
获取容器名称 -
通过执行
docker exec --interactive --tty <容器 ID> bin/neo4j-admin backup
备份 Neo4j,其中 <容器 ID> 替换为上述获取的 ID。 -
在恢复之前,需要停止 Neo4j 实例。如果从与 Docker 进程相同的终端执行,请使用
Ctrl-C
,这将停止 Neo4j Docker 容器进程。否则,如果 Neo4j 容器是在指示--detach
模式下创建的,那么Ctrl-C
将不起作用,您需要从单独的终端通过 Docker 命令停止容器。要从单独的终端执行此操作,请运行docker stop <容器 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 实例重新启动。
此页面有帮助吗?