Neo4j数据库自动启停与定时备份

本文介绍neo4j数据库定时自动备份的方案和一些问题的解决方式。自动备份基本流程为“关闭-备份-启动”;首先介绍三个准备工作:安装service实现start和stop的操作、备份的基本逻辑、.bat文件操作;然后提供一个完整的备份脚本内容示例,并结合win10任务计划程序实现自动备份。最后介绍上述操作后可能存在的两个问题:开机自启问题和防火墙问题。

使用的Neo4j版本为neo4j-community-4.4.4;电脑操作系统为win10。

1.准备工作一:安装neo4j service

备份数据库时,要保证数据库处于关闭状态;对于处于工作状态需要保持长期开启的数据库,其自动备份就需要一个 “关闭-备份-开启” 的流程。

自动备份首先需要使用start和stop来启停neo4j,暂时没找到针对console启动方式的解决办法。

安装neo4j service方式,在cmd中执行:

neo4j install-service

运行上一步后可使用 start 和 stop 进行数据库启停

开启方式,在cmd运行:

neo4j start

开启成功:

 

 不同于neo4j console的调试运行方式,使用neo4j start启动后可以关闭cmd对话框,neo4j将保持运行。

关闭方式,在cmd运行:

neo4j stop

关闭成功:

2.准备工作二:neo4j备份基本方式

操作以下内容前,确保数据库已经关闭。

备份neo4j数据库,在cmd中输入:

neo4j-admin dump --database=本次备份的数据库名称 --to=备份文件保存的地址\本次备份的数据库文件名.dump

例如:

neo4j-admin dump --database=standardDB --to=E:\neo4j-community-4.4.4\dump\tryBkup01.dump

注意:在我个人的测试中,如果备份目录下已经存在同样名称的备份文件,不会进行替换,无法备份,对话框显示如下内容。

3.准备工作三:用“.bat”脚本进行操作

这里以neo4j stop为例进行介绍。

新建一个.txt文件,取名stopNeo4j表示其用来关闭数据库,在.txt文件中输入命令neo4j stop;

保存文件,修改后缀为.bat

双击.bat文件运行,弹出cmd窗口后显示数据库已关闭,执行完毕后会自动关闭cmd窗口

4.使用.bat脚本执行数据库备份的方法

4.1基本逻辑

(1)在空闲时间关闭正在运行的数据库

(2)执行备份工作

(3)重新开启数据库

(4)使用定时程序+脚本文件实现上述步骤的自动化

4.2自动启停与备份数据库的.bat脚本文件内容示例

文件名:

bakneo4j.bat

文件内容:

set y=%date:~0,4%%date:~5,2%%date:~8,2%%Time:~0,2%%Time:~3,2%%Time:~6,2% neo4j stop & neo4j-admin dump --database=standardDB --to=E:\neo4j-community-4.4.4\dump\bkup_%y%.dump & neo4j start

说明:

(1)使用时修改本地neo4j数据库备份地址和要备份的数据库名称;

(2)set y=%date:~0,4%%date:~5,2%%date:~8,2%%Time:~0,2%%Time:~3,2%%Time:~6,2% 用于获取当前时间,分别是年-月-日-时-分-秒。将其标注在命名后面使每次备份的文件名随时间变化,既不造成备份冲突,又能方便管理人员的处理。

(3)保存后双击运行,会先关闭数据库,再进行备份操作,然后启动数据库。

5.使用Windows自带的“任务计划程序”运行备份脚本文件,实现定时自动备份

搜索“任务计划程序”,点击打开,界面如下:

5.1新建任务

5.2输入名称与说明

5.3选择最高权限

注:运行neo4j相关操作时电脑可能会弹出安全提示框,需要手动点击;这里选择最高权限运行可以解决这个问题。

5.4设置运行时间

  下面的时间是测试时输入的,实际应设置在最合适的空闲时间,频率根据需要进行设置。

5.5选择脚本

选择根据第4节制作的备份脚本

I.附加问题1:开机自动启动

前面执行neo4j install-service后,neo4j一般会开机自启动。建议根据自己情况进行处理。我在禁止开机自启后,遇到了neo4j的错误问题,这块还没有搞懂。

介绍这个内容就是说明一下可能存在的后台默默运行情况,不用时建议关闭数据库,减少对资源的占用。

II.附加问题2:使用start代替console后可能存在的远程访问失败情况解决方案

数据库一般需要接受他人远程访问,使用neo4j start运行后可能权限没有console那么高,他人访问自己的数据库可能被防火墙阻挡。

II.i解决方案一:直接关闭防火墙

建议仅测试时用。

II.ii解决方案二:新建防火墙入站规则,开放数据库端口

打开控制面板,点击系统与安全

点击防火墙

点击高级设置

点击入站规则

点击操作,新建规则

选择端口

设置端口7474,然后同样设置端口7687(注意,如果端口更改过,按照自己实际情况填写)

选择允许连接

这里全选

填写标题和描述,点击完成

端口开放完成,进行测试。