本文介绍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(注意,如果端口更改过,按照自己实际情况填写)
选择允许连接
这里全选
填写标题和描述,点击完成
端口开放完成,进行测试。