在Windows上备份Neo4j社区版

7

我目前正在使用Neo4j社区版1.8.2和Windows 8。在Windows平台上备份Neo4j社区版数据库是否可行?

4个回答

8

如Pangea所说,官方备份工具仅适用于企业版。

他建议使用Windows备份工具不是一个好的选择,除非你对Neo4j有其他了解。Neo4j不会立即刷新信息,Lucene也是如此,因此如果你使用类似于Windows Backup这样的工具,则无法获得稳定的备份数据库。你需要使用Neo4j备份工具,或者关闭图形数据库以便所有内容都被刷新/关闭,然后使用Windows进行备份。


2
关于关闭序列以确保所有文件被刷新的观点很好。但是值得注意的是,快照功能几乎是即时的,在脱机进行快照时可以将数据库停机时间最小化。一旦快照被拍摄,即使重新启动Neo4j服务器,它也可以用于备份目的,因为除非实际删除支持vhd(和相关快照)的blob,否则它不受原始vhd的影响。 - David Makogon
没错,刷新步骤很重要,因为如果不使用它,neo4j可能无法恢复。刷新是我正在寻找的词,谢谢。 - Nicholas
1
我编写了一个 Windows 任务,运行一个批处理文件来停止服务,将数据文件夹复制到备份目录,然后重新启动服务。对于小规模部署来说非常简单。 - LameCoder

2
这是我为社区版编写的PowerShell脚本。
#https://dev59.com/-HM_5IYBdhLWcg3w9oMA
function zipFiles()
{
    param(
        [Parameter(Mandatory=$true,Position=0)]$zipfilename
        ,[Parameter(Mandatory=$true,Position=1)]$sourcedir
    )

   Add-Type -Assembly System.IO.Compression.FileSystem
   $compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal
   [System.IO.Compression.ZipFile]::CreateFromDirectory($sourcedir, $zipfilename, $compressionLevel, $false)
}

#https://dev59.com/JHbZa4cB1Zd3GeqPGHUG
function BackupNeo4jCommunity
{
    param(
        [Parameter(Mandatory=$true,Position=0)]$serviceName
        ,[Parameter(Mandatory=$true,Position=1)]$sourceNeoFolder
        ,[Parameter(Mandatory=$true,Position=2)]$zipFilename
    )

    Stop-Service $serviceName

    zipFiles $zipfilename $sourceNeoFolder

    Start-Service $serviceName
}

BackupNeo4jCommunity -serviceName neoWindowsServiceName -sourceNeoFolder "D:\neo4j\myapp\data\graph.db" -zipFilename "D:\Downloads\neo-data.zip"

1

嗨哟!

它们可能有效,但neo4j在其指南中非常明确:

相比之下,不支持复制和粘贴数据库的文件系统[1]

所以!您的neo4j安装路径有一个bin文件夹。在其中,您有一个neo4j.batneo4j-admin.bat。您可以使用它们停止数据库,以受支持的方式转储数据库,并重新启动数据库。

  • 确保neo4j*.bat文件知道您的java位置。例如,使用默认的chocolatey安装方法,您可能会有这样的文件结构'C:\tools\neo4j-community\neo4j-community-VERSION\java\jdkVERSION'。根据需要设置JAVA_HOME环境变量。例如,在PowerShell中,$ENV:JAVA_HOME = 'C:\tools\neo4j-community\neo4j-community-VERSION\java\jdkVERSION'
  • 检查是否成功!C:\tools\neo4j-community\neo4j-community-3.2.3\bin\neo4j-admin.bat help。如果失败,您将收到错误消息,例如“Invoke-Neo4jAdmin:无法找到java...”
  • 成功了?停止服务,备份,然后启动服务。

以下是一个超级简单的示例;您需要验证路径,添加错误处理等等。

$ENV:JAVA_HOME = 'C:\tools\neo4j-community\neo4j-community-VERSION\java\jdkVERSION'
C:\tools\neo4j-community\neo4j-community-VERSION\bin\neo4j.bat stop
C:\tools\neo4j-community\neo4j-community-VERSION\bin\neo4j-admin.bat dump --database graph.db --to=C:\temp\neo4j.dump
C:\tools\neo4j-community\neo4j-community-VERSION\bin\neo4j.bat start

这段代码可能会因为路径中有空格等环境变量的差异而发生改变...
祝好运!
[1] https://neo4j.com/docs/operations-manual/current/tools/dump-load [2] https://neo4j.com/docs/operations-manual/current/installation/windows [3] https://neo4j.com/blog/chocolatey-neo4j-windows

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接