Neo4j Dump备份:如何正确指定数据库参数?
解决Neo4j Admin Dump命令中
<database>参数的困惑 我来帮你理清这个问题——你遇到的核心是没搞清楚Neo4j中数据库的逻辑名称和存储路径的区别,这也是很多刚接触新版本Neo4j的开发者容易踩的坑。
首先明确几个关键知识点:
neo4j-admin dump要求的<database>是数据库的逻辑名称,不是磁盘上的文件夹路径(比如旧版本里的graph.db这种存储目录名已经不再作为参数使用了)。- 如果你用的是Neo4j 4.x及以上版本,默认数据库的逻辑名称是
neo4j,而非graph.db(graph.db是3.x及更早版本的存储目录命名方式)。
步骤1:确认你的数据库逻辑名称
你可以通过两种简单方式查看:
- 打开Neo4j的配置文件
neo4j.conf,找到dbms.default_database配置项,它的值就是默认数据库的逻辑名称(绝大多数情况下是neo4j)。 - 如果Neo4j服务正在运行,直接在Neo4j Browser里执行Cypher查询:
这个查询会列出所有已存在的数据库及其运行状态,你要找的就是需要备份的目标数据库名称。SHOW DATABASES;
步骤2:正确执行Dump命令
假设你的数据库逻辑名称是neo4j,想要把备份文件存到/home/backups/my-neo4j-backup.dump,那么正确的命令应该是:
neo4j-admin dump --database=neo4j --to=/home/backups/my-neo4j-backup.dump
常见坑点提醒
- 绝对不要填存储路径:比如你如果输入
/var/lib/neo4j/data/databases/neo4j这种磁盘路径,肯定会触发报错,因为命令只接受逻辑名称,不接受物理路径。 - 旧版本兼容问题:如果是从Neo4j 3.x升级过来的,磁盘上可能还保留着
graph.db目录,但在4.x+版本中,这个目录对应的逻辑名称依然是neo4j,所以参数还是要填neo4j。 - 服务状态建议:执行备份时,最好让目标数据库处于停止状态,或者确保没有写入操作正在进行,否则可能导致备份不完整。如果必须在运行状态下备份,可以加上
--force参数强制执行,但这不是最优选择,停服备份更安全。
如果还是遇到问题,可以把SHOW DATABASES的输出或者配置文件里的相关项贴出来,我再帮你进一步排查~
内容的提问来源于stack exchange,提问作者EFL
相关产品推荐
相关产品推荐

