【2026最新】Neo4j 数据库如何像 MySQL 一样导出和快速恢复完整数据

一、前言

在使用 MySQL 时,我们经常会通过 mysqldump 将已有数据库导出为一个 .sql 文件,之后在其他机器或新环境中快速恢复数据库结构和数据。

那么 Neo4j 是否也可以做到类似的事情呢?

答案是:可以

Neo4j 也支持将已有数据库导出为一个文件,并通过该文件快速恢复数据库。常用方式主要有两种:

  1. 使用 neo4j-admin database dump/load 导出和恢复数据库;

  2. 使用 APOC 插件导出 Cypher 脚本,再通过 cypher-shell 执行恢复。

其中,如果目标是完整、快速地恢复 Neo4j 数据库,最推荐使用 neo4j-admin database dump/load 方式


二、Neo4j 常见导出方式对比

Neo4j 中常见的数据库导出方式如下表所示。

方式 导出结果 是否适合完整恢复 适用场景
neo4j-admin database dump .dump 文件 适合 完整备份、迁移、快速恢复
apoc.export.cypher.all .cypher 脚本文件 一般适合 小规模数据、需要查看或修改导出语句
apoc.export.csv.all CSV 文件 不适合直接完整恢复 数据分析、数据交换
Neo4j Browser 手动导出 查询结果文件 不适合 少量查询结果导出

如果你的需求是:

将 Neo4j 中已有数据库的完整结构和数据导出为一个文件,之后可以用这个文件快速恢复数据库。

那么建议优先使用:

复制代码
neo4j-admin database dump
neo4j-admin database load

三、方式一:使用 neo4j-admin 导出和恢复数据库

1. 适用场景

neo4j-admin database dump/load 类似于 MySQL 中的备份恢复方式,适合用于:

  • 迁移 Neo4j 数据库;

  • 备份当前图数据库;

  • 在另一台机器上快速复原数据库;

  • 保存实验数据或项目数据快照;

  • 完整恢复节点、关系、属性、索引和约束等内容。

这种方式导出的文件通常是:

复制代码
neo4j.dump

其中 neo4j 是数据库名称。


四、导出前准备

1. 确认数据库名称

Neo4j 默认数据库名通常是:

复制代码
neo4j

如果你使用的是多数据库环境,也可以在 Neo4j Browser 中执行:

复制代码
SHOW DATABASES;

查看当前有哪些数据库。

结果中可以看到类似:

复制代码
name      currentStatus
neo4j     online
system    online

一般情况下,我们要导出的就是 neo4j 数据库。


2. 停止 Neo4j 服务

使用 neo4j-admin database dump 导出数据库时,通常要求数据库处于离线状态。

如果是 Windows 服务安装的 Neo4j,可以在命令行中执行:

复制代码
neo4j stop

或者在 Windows 服务管理器中手动停止 Neo4j 服务。

如果使用的是 Neo4j Desktop,则直接停止对应的数据库实例即可。


五、导出 Neo4j 数据库为 dump 文件

假设:

  • 数据库名为:neo4j

  • 备份目录为:D:\neo4j_backup

需要先确保备份目录已经存在。

Windows 下执行命令

进入 Neo4j 安装目录的 bin 文件夹,例如:

复制代码
cd D:\neo4j-community-5.x.x\bin

然后执行:

复制代码
neo4j-admin.bat database dump neo4j --to-path=D:\neo4j_backup --overwrite-destination=true

执行完成后,会在备份目录下生成:

复制代码
D:\neo4j_backup\neo4j.dump

其中:

  • neo4j:表示要导出的数据库名称;

  • --to-path:表示导出文件保存目录;

  • --overwrite-destination=true:表示如果目标文件已经存在,则允许覆盖。


Linux 下执行命令

Linux 环境下可以执行:

复制代码
cd /path/to/neo4j/bin

然后执行:

复制代码
./neo4j-admin database dump neo4j --to-path=/home/neo4j_backup --overwrite-destination=true

执行完成后会生成:

复制代码
/home/neo4j_backup/neo4j.dump

六、使用 dump 文件恢复 Neo4j 数据库

当需要在当前机器或另一台机器上恢复数据库时,可以使用 neo4j-admin database load 命令。

假设 dump 文件路径为:

复制代码
D:\neo4j_backup\neo4j.dump

Windows 下恢复命令

同样进入 Neo4j 的 bin 目录:

复制代码
cd D:\neo4j-community-5.x.x\bin

执行:

复制代码
neo4j-admin.bat database load neo4j --from-path=D:\neo4j_backup --overwrite-destination=true

其中:

  • neo4j:表示恢复后的数据库名称;

  • --from-path:表示 .dump 文件所在目录;

  • --overwrite-destination=true:表示允许覆盖已有数据库。

恢复完成后,重新启动 Neo4j:

复制代码
neo4j start

Linux 下恢复命令

Linux 环境下执行:

复制代码
./neo4j-admin database load neo4j --from-path=/home/neo4j_backup --overwrite-destination=true

然后启动 Neo4j:

复制代码
./neo4j start

七、验证数据库是否恢复成功

启动 Neo4j 后,可以进入 Neo4j Browser,执行以下命令查看数据库状态:

复制代码
SHOW DATABASES;

然后查看节点数量:

复制代码
MATCH (n) RETURN count(n);

查看关系数量:

复制代码
MATCH ()-[r]->() RETURN count(r);

如果节点数和关系数与原数据库一致,说明数据已经恢复成功。

也可以查看索引和约束:

复制代码
SHOW INDEXES;

SHOW CONSTRAINTS;

八、完整操作示例

假设当前数据库名为 neo4j,希望导出到:

复制代码
D:\neo4j_backup

完整流程如下。

1. 停止 Neo4j

复制代码
neo4j stop

2. 导出数据库

复制代码
neo4j-admin.bat database dump neo4j --to-path=D:\neo4j_backup --overwrite-destination=true

导出后得到:

复制代码
D:\neo4j_backup\neo4j.dump

3. 在目标环境中恢复数据库

复制代码
neo4j-admin.bat database load neo4j --from-path=D:\neo4j_backup --overwrite-destination=true

4. 启动 Neo4j

复制代码
neo4j start

5. 验证数据

复制代码
MATCH (n) RETURN count(n);

MATCH ()-[r]->() RETURN count(r);

九、方式二:导出为 Cypher 脚本文件

除了 .dump 文件外,Neo4j 也可以导出为类似 .sql 的文本脚本文件。

这种方式需要使用 APOC 插件。

1. 导出整个数据库为 Cypher 文件

在 Neo4j Browser 中执行:

复制代码
CALL apoc.export.cypher.all("all.cypher", {
  format: "cypher-shell"
})
YIELD file, nodes, relationships, properties
RETURN file, nodes, relationships, properties;

执行后会生成一个 all.cypher 文件。

该文件中保存的是重建数据库所需的 Cypher 语句,包括节点、关系、属性、索引等信息。


2. 使用 cypher-shell 导入 Cypher 文件

Windows 下可以执行:

复制代码
type all.cypher | cypher-shell.bat -a bolt://localhost:7687 -u neo4j -p your_password

Linux 下可以执行:

复制代码
cat all.cypher | ./cypher-shell -a bolt://localhost:7687 -u neo4j -p your_password

其中:

  • neo4j 是用户名;

  • your_password 是数据库密码;

  • bolt://localhost:7687 是 Neo4j 的 Bolt 连接地址。


十、dump 方式和 Cypher 脚本方式如何选择

如果是完整备份和恢复,建议使用 .dump 方式。

原因是:

  • 恢复速度更快;

  • 更适合大规模图数据;

  • 更接近数据库级别备份;

  • 操作简单,不需要逐条执行 Cypher;

  • 更适合迁移和环境复现。

如果只是小规模数据,或者希望人工查看、修改导出的语句,可以使用 Cypher 脚本方式。

简单来说:

复制代码
完整迁移、快速恢复、大数据量:使用 dump/load
小数据量、可读脚本、便于修改:使用 APOC 导出 Cypher

十一、常见问题

1. 执行 dump 时提示数据库正在使用怎么办?

一般是因为 Neo4j 服务没有停止。

需要先停止数据库:

复制代码
neo4j stop

或者在 Neo4j Desktop 中关闭对应数据库实例。


2. 恢复时报数据库已经存在怎么办?

如果目标数据库已经存在,可以使用:

复制代码
--overwrite-destination=true

例如:

复制代码
neo4j-admin.bat database load neo4j --from-path=D:\neo4j_backup --overwrite-destination=true

这会覆盖已有数据库。

注意:覆盖前请确认已有数据库不再需要,避免误删数据。


3. dump 文件可以直接复制到其他机器吗?

可以。

只需要将生成的 .dump 文件复制到目标机器,然后在目标机器上执行:

复制代码
neo4j-admin database load

即可恢复数据库。


4. dump 是否包含所有用户和权限?

一般情况下,dump/load 主要用于导出和恢复具体数据库的数据内容,包括节点、关系、属性、索引和约束等。

但是用户、角色、权限等系统级信息不一定都包含在普通数据库 dump 中。如果涉及生产环境迁移,需要单独考虑 system 数据库、用户权限和配置文件等内容。


5. Neo4j Desktop 可以使用这种方式吗?

可以。

Neo4j Desktop 中的数据库本质上也是 Neo4j 数据库实例。可以找到对应数据库的安装路径和 bin 目录,然后使用 neo4j-admin 命令。

不过在执行 dump/load 之前,需要先停止对应数据库实例。


十二、总结

Neo4j 可以像 MySQL 一样,将已有数据库导出为一个文件,并通过该文件快速恢复数据库。

如果目的是完整备份、迁移和恢复,推荐使用:

复制代码
neo4j-admin database dump
neo4j-admin database load

核心命令如下:

复制代码
neo4j-admin.bat database dump neo4j --to-path=D:\neo4j_backup --overwrite-destination=true

neo4j-admin.bat database load neo4j --from-path=D:\neo4j_backup --overwrite-destination=true

如果想导出为类似 .sql 的文本脚本,可以使用 APOC:

复制代码
CALL apoc.export.cypher.all("all.cypher", {
  format: "cypher-shell"
})
YIELD file, nodes, relationships, properties
RETURN file, nodes, relationships, properties;

总体来说:

  • .dump 文件方式更适合完整恢复和迁移;

  • .cypher 脚本方式更适合小规模数据和人工查看修改;

  • 生产环境中需要额外关注用户、权限和配置文件等系统级信息。

对于大多数项目实验、数据迁移和本地环境复现,使用 .dump 文件是最方便、最稳妥的方式。

相关推荐
tjc199010051 小时前
mysql如何防止SQL注入攻击_mysql参数化查询与转义
jvm·数据库·python
sjsjsbbsbsn1 小时前
RAG 基础学习总结
java·数据库·学习
汽车仪器仪表相关领域1 小时前
Kvaser Memorator Light HS v2:单通道 CAN FD 便携记录仪,即插即用的故障诊断利器
运维·服务器·数据库·人工智能·功能测试·单元测试
Francek Chen1 小时前
【大数据存储与管理】NoSQL数据库:05 NoSQL的三大基石
大数据·数据库·分布式·nosql
人道领域2 小时前
【黑马点评日记】Redis分布式锁终极方案:Redisson全面解析(含源码解析)
java·数据库·redis·分布式·缓存
m0_741173332 小时前
MySQL导入大SQL文件报错怎么办_拆分文件与优化系统参数
jvm·数据库·python
BullSmall2 小时前
Redis AOF 文件损坏报错:完整修复方案
数据库·redis·缓存
Amnesia0_02 小时前
磁盘文件系统
linux·运维·数据库
数据库知识分享者小北2 小时前
智能运维+多模型服务能力,阿里云 RDS AI 助手旗舰版正式上线!
运维·数据库·阿里云·阿里巴巴·rds·智能运维