备份和恢复 Neo4j 数据库(在线)企业版
Neo4j 备份和恢复命令可以在本地运行,用于备份和恢复在线(运行中)的数据库。
根据现有的企业版许可协议条款,您还可以获取一个可在专用机器上运行的 neo4j-admin 镜像。
如果 Neo4j(单实例或 Neo4j 集群的任何成员)运行在 Docker 容器内,您可以使用 docker exec 从容器内部调用 neo4j-admin 并对数据库进行备份。
使用 docker exec 备份数据库
要备份数据库,必须首先将主机备份文件夹挂载到容器中。由于 Docker 不允许向正在运行的容器添加新的挂载,因此必须在启动容器时执行此操作。
示例 1. 将主机备份文件夹挂载到 Neo4j 容器的
docker run 命令。docker run --name <container name> \
--detach \
--publish=7474:7474 --publish=7687:7687 \
--volume=$HOME/neo4j-enterprise/data:/data \ (1)
--volume=$HOME/neo4j-enterprise/backups:/backups \ (2)
--user="$(id -u):$(id -g)" \
--env NEO4J_ACCEPT_LICENSE_AGREEMENT=yes \ (3)
--env NEO4J_server_backup_enabled=true \ (4)
neo4j:2026.03.1-enterprise
| 1 | 包含您要备份的数据库的卷。 |
| 2 | 将用于存储数据库备份的卷。 |
| 3 | 接受 Neo4j 企业版许可协议的环境变量。 |
| 4 | 启用在线备份的环境变量。 |
示例 2. 使用
docker exec 调用 neo4j-admin database backup 来备份在线数据库。docker exec --interactive --tty <container name> neo4j-admin database backup --to-path=/backups <database name>
|
有关 |
使用 neo4j-admin 镜像备份数据库
为了执行备份,集群至少需要一台启用了备份功能并设置且暴露了备份监听地址端口的服务器。Docker 容器一旦启动就无法暴露端口,因此必须在启动容器时完成此配置。
示例 3. 启动配置为进行备份的数据库的
docker run 命令。docker run \
--detach \
--publish=7474:7474 \
--publish=7687:7687 \
--publish=6362:6362 \ (1)
--volume=$HOME/neo4j-enterprise/data:/data \ (2)
--env NEO4J_ACCEPT_LICENSE_AGREEMENT=yes \ (3)
--env NEO4J_server_backup_enabled=true \ (4)
--env NEO4J_server_backup_listen__address=0.0.0.0:6362 \ (5)
neo4j:2026.03.1-enterprise
| 1 | 在 5 中定义的 server.backup.listen_address 端口。 |
| 2 | 包含您要备份的数据库的卷。 |
| 3 | 接受 Neo4j 企业版许可协议的环境变量。 |
| 4 | 启用在线备份的环境变量。 |
| 5 | 设置 server.backup.listen_address 的环境变量。 |
一旦拥有了启用备份的集群节点,就可以使用 neo4j/neo4j-admin:2026.03.1-enterprise Docker 镜像来备份数据库。
示例 4. 调用
neo4j-admin Docker 镜像来备份您的数据库。docker run --interactive --tty --rm \
--volume=$HOME/neo4j-enterprise/backups:/backups \ (1)
--env NEO4J_ACCEPT_LICENSE_AGREEMENT=yes \ (2)
neo4j/neo4j-admin:2026.03.1-enterprise \
neo4j-admin database backup <database name> \
--to-path=/backups \
--from=<backup node IP address>:6362 (3)
| 1 | 将用于备份数据库文件的卷。 |
| 2 | 接受 Neo4j 企业版许可协议的环境变量。 |
| 3 | 备份集群节点的 IP 地址和 server.backup.listen_address 端口。 |
使用 docker exec 恢复数据库
以下是在正在运行的 Neo4j 实例中停止数据库并恢复数据库备份的示例。
示例 5. 创建用于恢复数据库备份的容器的
docker run 命令。docker run --name <container name> \
--detach \
--publish=7474:7474 --publish=7687:7687 \
--volume=$HOME/neo4j-enterprise/data:/data \ (1)
--volume=$HOME/neo4j-enterprise/backups:/backups \ (2)
--user="$(id -u):$(id -g)" \
--env NEO4J_ACCEPT_LICENSE_AGREEMENT=yes \ (3)
neo4j:2026.03.1-enterprise
| 1 | 包含您所有数据库的卷。 |
| 2 | 包含数据库备份的卷。 |
| 3 | 接受 Neo4j 企业版许可协议的环境变量。 |
示例 6. 调用
cypher-shell 停止您要用于恢复备份的数据库。docker exec -it <containerID/name> cypher-shell -u neo4j -p <my-password> -d system "stop database <database name>;"
示例 7. 调用
neo4j-admin database restore 来恢复数据库备份。docker exec --interactive --tty <containerID/name> neo4j-admin database restore --from=/backups/<databasename>-<timestamp>.backup --overwrite-destination <database name>
使用 neo4j-admin 镜像恢复数据库
neo4j-admin database restore 操作无法远程执行,因为它需要访问 neo4j 的 /data 文件夹。因此,在恢复之前必须将备份文件复制到新机器上,并且必须在与要恢复的数据库相同的机器上运行 neo4j-admin Docker 镜像。
示例 8. 创建用于恢复数据库备份的容器的
docker run 命令。docker run --name <container name> \
--detach \
--volume=$HOME/neo4j-enterprise/data:/data \ (1)
--env NEO4J_ACCEPT_LICENSE_AGREEMENT=yes \ (2)
neo4j:2026.03.1-enterprise
| 1 | 包含(或将包含)您所有数据库数据的卷。 |
| 2 | 接受 Neo4j 企业版许可协议的环境变量。 |
示例 9. 停止旧数据库,然后使用
neo4j/neo4j-admin:2026.03.1-enterprise 恢复备份数据库。最后再次启动包含新数据的数据库。docker exec -it <containerID/name> cypher-shell -u neo4j -p <my-password> -d system "stop database <database name>;"
docker run --interactive --tty --rm \
--volume=$HOME/neo4j-enterprise/data:/data \ (1)
--volume=$HOME/neo4j-enterprise/backups:/backups \ (2)
--env NEO4J_ACCEPT_LICENSE_AGREEMENT=yes \ (3)
neo4j/neo4j-admin:{neo4j-version-exact}-enterprise \
neo4j-admin database restore \
--from=/backups/<databasename>-<timestamp>.backup \
--overwrite-destination \
<database name> \
docker exec -it <containerID/name> cypher-shell -u neo4j -p <my-password> -d system "start database <database name>;"
| 1 | 包含(或将包含)您所有数据库数据的卷。这必须与 Neo4j DBMS 容器正在使用的数据文件夹相同。 |
| 2 | 包含数据库备份的卷。 |
| 3 | 接受 Neo4j 企业版许可协议的环境变量。 |
|
有关 |
最后,您可以使用 Cypher Shell 工具 来验证您的数据是否已恢复。