在unix:mac或linux下离线备份neo4j社区版

时间:2014-08-29 11:50:57

标签: neo4j backup database nosql

以前我在制作“备份”时遇到了问题。如此question所示,我在尝试恢复数据库时遇到错误,因为我在数据库运行时进行了复制。

所以我在另一台计算机上进行了一个新数据库的实验(这次使用的是ubuntu)我试过这个:

  • 我创建了一些节点和关系,很少像10(矩阵示例)。
  • 然后我停止了服务neo4j
  • 我将包含graph.db的文件夹数据复制到另一个位置
  • 之后我删除了graph.db文件夹并启动了neo4j
  • 它自动创建了一个新的graph.db文件夹,数据库在没有任何数据的情况下以新的形式运行,这是正常的。
  • 然后我再次停止并粘贴旧的 graph.db 文件夹

我收到错误:

 Starting Neo4j Server...WARNING: not changing user waiting 
 for server to be ready... Failed to start within 120 seconds.

错误在5秒后出现,而不是在120秒后出现。

  • 我尝试粘贴名为数据的文件夹。同样的错误。

我应该如何在neo4j社区中手动备份和恢复?

我在一些帖子中读到你只复制和恢复但这不起作用。

感谢您的帮助

3 个答案:

答案 0 :(得分:31)

在Neo4j运行时进行一致备份的意义上的在线备份仅适用于Neo4j企业版。企业版的备份还具有备份的详细一致性检查,这是您在社区中无法获得的。

社区版中唯一安全的选项是干净地关闭Neo4j并递归复制graph.db文件夹。我通常使用:

cd data
tar -zcf graph.db.tar.gz graph.db/

要恢复您关闭neo4j,请清除现有的graph.db文件夹并从备份中恢复原始的graph.db文件夹:

cd data
rm -rf graph.db
tar -zxf graph.db.tar.gz

答案 1 :(得分:5)

我也遇到了这个问题并编写了以下两个代码:

备份瞬间状态

service neo4j stop && now=$(date +"%m_%d_%Y") && cd /var/lib/neo4j/data/databases/ && tar -cvzf /var/backups/neo4j/$now.gb.tar.gz graph.db && service neo4j start

  • service neo4j stop =停止neo4j服务
  • now=$(date +"%m_%d_%Y") =将当前日期声明为变量
  • cd /var/lib/neo4j/data/databases/ =将目录更改为你的neo4j目录,其中graph.db位于
  • tar -cvzf /var/backups/neo4j/$now.gb.tar.gz graph.db =制作graph.db的压缩副本并将其保存到/var/backups/neo4j/$now.gb.tar.gz
  • service neo4j start =重启neo4j

从备份中恢复neo4j数据库

service neo4j stop && cd /var/lib/neo4j/data/databases/ && rm -r graph.db && tar xf /var/backups/neo4j/10_25_2016.gb.tar.gz -C /var/lib/neo4j/data/databases/ && service neo4j start

  • service neo4j stop =停止neo4j服务
  • cd /var/lib/neo4j/data/databases/ =将目录更改为你的neo4j目录,其中graph.db位于
  • rm -r graph.db =删除当前的graph.db及其所有内容
  • tar xf /var/backups/neo4j/10_25_2016.gb.tar.gz -C /var/lib/neo4j/data/databases/ =将备份解压缩到旧graph.db所在的目录。请务必将文件名10_25_2016.gb.tar.gz调整为您所谓的文件
  • service neo4j start =重启neo4j

<强>信息: 这似乎对我有用,但由于我没有很多关于bash脚本的经验,我怀疑这是最佳方式。但我认为这是可以理解的,也很容易定制:)

干杯

答案 2 :(得分:0)

如果您无法关闭并复制该文件,那么您可以编写一个cron脚本来从Neo4j获取数据并将其存储在其他数据库中,例如mongodb。您也可以编写cron脚本进行恢复。

此方法仅适用于那些没有钱购买企业版且无法关闭服务器的人。