Here’s the table of contents:
修改集群配置
# Enable online backups to be taken from this database.
dbms.backup.enabled=true
# By default the backup service will only listen on localhost.
# To enable remote backups you will have to bind to an external
# network interface (e.g. 0.0.0.0 for all interfaces).
# The protocol running varies depending on deployment. In a Causal Clustering environment this is the
# same protocol that runs on causal_clustering.transaction_listen_address.
dbms.backup.address=0.0.0.0:6362
causal_clustering.transaction_listen_address=:6000
远程全量热备命令
每周从集群拉取全量数据备份
#!/usr/bin/env bash ################### backup shell ################### delay 1s/1m/1h/1d DELAY=7d echo backup shell execute delay is:${DELAY} ################### execute clean log while [ 1 ]; do DATE=$(date "+%Y-%m-%d") echo backup date:${DATE} echo backup time:$(date "+%Y-%m-%d %H:%M:%S") ./bin/neo4j-admin backup --protocol=catchup --from=10.20.13.200:6000 --backup-dir=./data/backup/ --name=graph.db-backup sleep ${DELAY} done ################### background execution this backup shell # START_BACKUP_SERVER: # nohup ./ongdb-backup.sh > ongdb-backup.file 2>&1 & # STOP_BACKUP_SERVER: # kill -9 `ps -ef|grep ongdb-backup.sh|grep -v grep|awk '{print $2}'`
远程增量热备命令
neo4j-home> export HEAP_SIZE=2G
neo4j-home> bin/neo4j-admin backup --from=10.20.13.200:6000 --backup-dir=./data/backup/ --name=graph.db-backup --fallback-to-full=true --check-consistency=true --pagecache=4G
Destination is not empty, doing incremental backup...
Backup complete.
每天从集群拉取增量数据备份
#!/usr/bin/env bash ################### backup shell ################### delay 1s/1m/1h/1d DELAY=1d echo backup shell execute delay is:${DELAY} ################### execute clean log while [ 1 ]; do DATE=$(date "+%Y-%m-%d") echo backup date:${DATE} echo backup time:$(date "+%Y-%m-%d %H:%M:%S") ./bin/neo4j-admin backup --protocol=catchup --from=10.20.13.200:6000 --backup-dir=./data/backup/ --name=graph.db-backup --fallback-to-full=true --check-consistency=true --pagecache=4G sleep ${DELAY} done ################### background execution this backup shell # START_BACKUP_SERVER: # nohup ./ongdb-backup-incremental.sh > ongdb-backup.file 2>&1 & # STOP_BACKUP_SERVER: # kill -9 `ps -ef|grep ongdb-backup-incremental.sh|grep -v grep|awk '{print $2}'`
数据恢复脚本
bin/neo4j-admin restore --from=/mnt/backup/graph.db-backup-2020-10-28 --database=graph.db --force=false
ongdb@ip-10-20-0-157:~/ongdb-enterprise-3.5.17$ bin/neo4j-admin restore
Missing argument 'from'
usage: neo4j-admin restore --from=<backup-directory> [--database=<name>]
[--force[=<true|false>]]
environment variables:
NEO4J_CONF Path to directory which contains neo4j.conf.
NEO4J_DEBUG Set to anything to enable debug output.
NEO4J_HOME Neo4j home directory.
HEAP_SIZE Set JVM maximum heap size during command execution.
Takes a number and a unit, for example 512m.
Restore a backed up database.
options:
--from=<backup-directory> Path to backup to restore from.
--database=<name> Name of database. [default:graph.db]
--force=<true|false> If an existing database should be replaced.
[default:false]
单节点备份恢复操作指南
1、修改支持备份的配置
dbms.backup.enabled=true
dbms.backup.address=0.0.0.0:6362 # 重要:同一台服务器不同图数据库节点使用不同端口
2、启动单节点增量备份
# --fallback-to-full=true 的作用是:如果不能做增量备份(比如没有历史备份可用),则自动转为全量备份。
# 只要你指定的 --name=graph.db-20250704 在 --backup-dir 目录下不存在,就会做全量备份。
# 以后你用同样的命令、同样的 --name,工具会自动做增量备份(前提是上次备份完整且未被删除)。
export NEO4J_HOME=/home/ubuntu/ongdb/data-backup-test/dev-ongdb-v1.x-standalone # 设置命令执行的根目录【提前复制一个图数据库的bin目录用于执行数据备份命令】
./dev-ongdb-v1.x-standalone/bin/neo4j-admin backup \
--from=10.20.0.157:6666 \
--backup-dir=./backup/ \
--name=graph.db-20250704 \
--fallback-to-full=true \
--check-consistency=true \
--pagecache=4G
# 运行结束后会输出如下日志
2025-07-04 10:30:18.782+0000 INFO [o.n.b.i.BackupOutputMonitor] Finish receiving store files
2025-07-04 10:30:18.965+0000 INFO [o.n.b.i.BackupOutputMonitor] Start recovering store
2025-07-04 10:30:28.448+0000 INFO [o.n.b.i.BackupOutputMonitor] Finish recovering store
Full Consistency Check
.................... 10%
.................... 20%
.................... 30%
.................... 40%
.................... 50%
.................... 60%
.................... 70%
.................... 80%
.................... 90%
...............Checking node and relationship counts
.................... 10%
.................... 20%
.................... 30%
.................... 40%
.................... 50%
.................... 60%
.................... 70%
.................... 80%
.................... 90%
.................... 100%
Backup complete.
3、启动单节点备份恢复
export NEO4J_HOME=/home/ubuntu/ongdb/data-backup-test/dev-ongdb-v1.x-standalone # 设置命令执行的根目录【提前复制一个图数据库的bin目录用于执行数据备份命令】
# 恢复前确保数据库已关闭
# force=true 自动清空目标目录再恢复
# --database=graph.db 恢复后的DB文件会自动放置到`dev-ongdb-v1.x-standalone/data/databases/`目录下
./dev-ongdb-v1.x-standalone/bin/neo4j-admin restore \
--from=/home/ubuntu/ongdb/data-backup-test/backup/graph.db-20250704 \
--database=graph.db \
--force=true
# 运行结束后没有任何日志输出,直接查看对应的`databases`目录即可
# 启动图数据库节点时,务必保证该配置`dbms.active_database=graph.db`与恢复的数据DB文件名一致
参考文档
https://neo4j.com/docs/operations-manual/3.5/backup/
https://neo4j.com/docs/operations-manual/3.5/backup/performing/#backup-performing-commands
PREVIOUS后台执行CQL脚本
NEXT图数据构建脚本后台远程执行