首先说明:本当的操作环境是按照文档Neo4j安装及集群搭建搭建的环境下进行操作的。
Neo4j服务的启动和停止
首选确保在部署neo4j时候已经添加的环境变量,即文件/etc/profile
中添加以下内容1
2
3
4#set neo4j environment
NEO4J_HOME=/data/neo4j
PATH=$PATH:$NEO4J_HOME/bin
export NEO4J_HOME PATH
并使之生效1
source /etc/profile
启动测试,并将日志打印在命令行1
neo4j console
启动neo4j1
neo4j start
停止neo4j1
neo4j stop
重启neo4j1
neo4j restart
查看neo4j运行状态1
neo4j status
Neo4j数据库的备份
离线备份和恢复
此备份方式有一个使用前提,neo4j数据库必须出处于停止状态。
使用语法:1
2neo4j-admin dump --database=<database> --to=<destination-path>
neo4j-admin load --from=<archive-path> --database=<database> [--force]
备份示例:
1 | # neo4j stop |
恢复示例:1
2# neo4j-admin load --from=/data/backups/graph.db/2019-08-22.dump --database=graph.db --force
Done: 36 files, 168.1KiB processed.
--force
参数会完全覆盖原有数据库的,使用时请注意。
恢复完成后请启动neo4j服务。
在线备份与恢复
此备份方式需要停止neo4j数据库服务。
需要在配置文件中增加以下内容1
2dbms.backup.enabled=true
dbms.backup.address=10.186.63.112:6362
绑定ip可以0.0.0.0
,建议绑定内网ip或者127.0.0.1
。
然后重启neo4j服务。1
2
3
4
5
6
7
8
9
10
11
12neo4j-admin backup --backup-dir=<backup-path> --name=<graph.db-backup>
[--from=<address>] [--protocol=<any|catchup|common>]
[--fallback-to-full[=<true|false>]]
[--pagecache=<pagecache>]
[--timeout=<timeout>]
[--check-consistency[=<true|false>]]
[--additional-config=<config-file-path>]
[--cc-graph[=<true|false>]]
[--cc-indexes[=<true|false>]]
[--cc-label-scan-store[=<true|false>]]
[--cc-property-owners[=<true|false>]]
[--cc-report-dir=<directory>]
全量备份
设置环境变量控制内存使用情况--pagecache
用以控制页面缓存HEAP_SIZE
用以指定分配给备份的最大堆大小
示例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19# export HEAP_SIZE=2G
# neo4j-admin backup --from=10.186.63.112 --backup-dir=/data/backups/graph.db/ --name=graph.dbbackup --pagecache=4G
2019-08-22 08:47:25.183+0000 INFO [o.n.b.i.BackupOutputMonitor] Start receiving store files
`
`
`
2019-08-22 08:47:25.504+0000 INFO [o.n.b.i.BackupOutputMonitor] Start recovering store
2019-08-22 08:47:26.901+0000 INFO [o.n.b.i.BackupOutputMonitor] Finish recovering store
.................... 10%
.................... 20%
.................... 30%
.................... 40%
.................... 50%
.................... 60%
.................... 70%
.................... 80%
.................... 90%
Checking node and relationship counts
Backup complete.
中间输出内容很长有省略,最后可见备份完成。
备份脚本1
2
3
4
5
6
7
8
9
10
11# cat neo4j_full_backup.sh
time=`date '+%y-%m-%d %H:%M:%S'`
T=$(date +%Y%m%d%H%M%S)
echo $time
echo 'start backup...'
export HEAP_SIZE=2G
neo4j-admin backup --from=10.186.63.112 --backup-dir=/data/neo4j/backup/ --name=graph.db_full_backup_$T --pagecache=4G
echo 'finish'
增量备份
示例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18# export HEAP_SIZE=2G
# neo4j-admin backup --from=10.186.63.112 --backup-dir=/data/backups/graph.db --name=graph.dbbackup.in --fallback-to-full=true --check-consistency=true --pagecache=4G
2019-08-22 08:56:35.251+0000 INFO [o.n.b.i.BackupOutputMonitor] Start receiving store files
`
`
`
2019-08-22 08:56:36.992+0000 INFO [o.n.b.i.BackupOutputMonitor] Finish recovering store
.................... 10%
.................... 20%
.................... 30%
.................... 40%
.................... 50%
.................... 60%
.................... 70%
.................... 80%
.................... 90%
Checking node and relationship counts
Backup complete.
中间过程省略,备份完成。
备份过程中可能出现的错误及描述:
Option | Description |
---|---|
0 | Success. |
1 | Backup failed. |
2 | Backup succeeded but consistency check failed. |
3 | Backup succeeded but consistency check found inconsistencies. |
备份脚本1
2
3
4
5
6
7
8
9
10
11# cat neo4j_incr_backup.sh
time=`date '+%y-%m-%d %H:%M:%S'`
T=$(date +%Y%m%d%H%M%S)
echo $time
echo 'start backup...'
export HEAP_SIZE=2G
neo4j-admin backup --from=10.186.63.112 --backup-dir=/data/neo4j/backup/ --name=graph.db_incr_backup_$T --fallback-to-full=true --check-consistency=true --pagecache=4G
echo 'finish'
以上两个脚本加入定时任务1
2
3# crontab -l
0 0 * * 0 /data/neo4j/scripts/neo4j_full_backup.sh >> /data/neo4j/logs/backup.log
0 0 * * 1-6 /data/neo4j/scripts/neo4j_incr_backup.sh >> /data/neo4j/logs/backup.log
数据恢复
恢复使用的参数
Option | Default | Description |
---|---|---|
–from | Path to backup to restore from. | |
–database | graph.db | Name of database. |
–force | false | If an existing database should be replaced. |
示例:1
2
3
4
5
6
7
8# neo4j stop
Stopping Neo4j.. stopped
# neo4j-admin restore --from=/data/backups/graph.db/ --database=graph.db --force
2019-08-22.dump graph.dbbackup/ graph.dbbackup.in/
# neo4j-admin restore --from=/data/backups/graph.db/graph.dbbackup --database=graph.db --force
# neo4j start
# neo4j status
Neo4j is running at pid 21385
其中--force
参数表示覆盖。