neo4j图数据库,如何利用neo4j-admin备份还原数据库?
发布于 作者:苏南大叔 来源:程序如此灵动~再把视线转回以前的话题,图数据库neo4j
。图数据库里面的数据,如何用官方给的工具导入导出呢?如何才能给数据库进行备份呢?如何转移数据库呢?又如何把备份好的数据进行还原呢?
大家好,这里是苏南大叔的“程序如此灵动”博客,这里记录苏南大叔和计算机代码的故事。本文的主角是neo4j-admin
,使用这个工具,可以导入导出数据库为.dump
文件。该文件不能被常见的类似记事本等软件打开,打开也是看不懂的乱码。本文测试环境:win10
,neo4j@4.4.3
。
基础知识
本文涉及的两个命令是:neo4j-admin dump
和neo4j-admin load
。以前还涉及过一个命令neo4j-admin import
,参考文章:
本文中的neo4j
是win10
环境下的,其有个bin/
目录,里面的neo4j.bat
是用于启动、停止、或者重启的。参考文章:
默认情况下,因为是必须安装系统服务的。所以,开机后neo4j
就是启动状态,不用额外再start
。但是本文中对数据库图进行导入和导出的操作,都要求数据库是stop
状态。所以,您需要主动执行如下命令:
neo4j stop
否则就会得到下面类似的错误信息:
The database is in use. Stop database 'neo4j' and try again.
等着本文中描述的导入导出操作完成后,再执行:
neo4j start
列出数据库图(可选)
neo4j
和传统的mysql
之类的类似,其内部都是有一个一个的数据库图的。那么,你要执行导入导出的时候,需要指明目标数据库图的名称。neo4j
内部的数据库图默认有两个,一个是system
,另外一个是neo4j
(默认的就是它,其实也没有啥好确定的。社区版的neo4j
,没改配置的话,就是这个图。)。
在有的neo4j
版本中,数据库图的名字后面还带有.db
三字,比如:neo4j.db
。这仅仅是个名字,并没有啥特别的意思。在传递参数的时候,照着传就行。
在neo4j
的管理界面,执行下面的语句就可以列出所有的数据库图。命令如下:
:dbs
这个时候,neo4j
就会异常友好的显示出现有的数据库图名字。如下图所示:
当然,您还可以查看文件夹结构,也是能够看出来有几个数据库图的。比如查看目录:<neo4j>/data/databases/
或者 <neo4j>/data/transactions/
。
导出(备份)数据库
要导出数据库,首先要确定自己要操作的数据库图名字,然后想清楚数据库要导出到哪里,然后停止neo4j
服务。
neo4j-admin dump --database=neo4j --to=e:\backup.dump
导出得到的.dump
文件,二进制打不开看不懂,就算是个外星文件吧。
然后记得再次启动neo4j
服务。
单独备份还原/data/databases/neo4j/
文件夹是不能完成任务的,并不能识别其中的节点数据。可能需要配合system
文件夹一起操作。但是,这样似乎也不是很合适。
导入(还原)数据库
到导入数据库,一样要先确定要操作的目标数据库图名字,然后想清楚要导入的备份文件的位置,重要的是要停止neo4j
服务。
neo4j-admin load --from=e:\backup.dump --database=neo4j
如果要操作的数据库图名字已经存在的话(即使里面没有任何数据),这里会导入失败。可能会得到下面类似的错误提示信息:
Database already exists: neo4j
推荐:这里需要使用一个--force
参数,强制导入。
neo4j-admin load --from=e:\backup.dump --database=neo4j --force
不推荐:或者写一个新的肯定不存在的数据库图名字,也可以。这样的话,保证不会失败。例如:
neo4j-admin load --from=e:\backup.dump --database=neo4j2
对于社区版的neo4j
来说,除了system
之后,只能支持一个图。所以,新的neo4j2
图确实能建立成功,但是不能同时和原来默认的图同时在线,这就导致这个图的建立没有啥意义了,这只能怪使用的是社区版本。
然后记得再次启动neo4j
服务。
参考文献
综述
本文讲述的是neo4j-admin
操作.dump
文件,实现导入导出备份还原的全过程。但是导出的.dump
文件没有任何的可读性,不存在任何的sql
语句在里面。所以,暂时无法实现对.dump
文件的物理修改。
更多neo4j
的经验文章,请点击苏南大叔的博客。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。