本文使用Neo4j的插件apoc来实现数据备份与恢复
1、 创建示例数据
// 创建人物节点
CREATE (a:Person {name: 'Alice', age: 30})
CREATE (b:Person {name: 'Bob', age: 25})
CREATE (c:Person {name: 'Charlie', age: 35})
// 创建关系
CREATE (a)-[:FRIEND_WITH]->(b)
CREATE (b)-[:FRIEND_WITH]->(c)
CREATE (a)-[:FRIEND_WITH]->(c)
// 创建地点节点
CREATE (d:Place {name: 'New York'})
CREATE (e:Place {name: 'Los Angeles'})
CREATE (f:Place {name: 'Chicago'})
// 创建事件节点
CREATE (g:Event {name: 'Concert', date: '2025-05-15'})
CREATE (h:Event {name: 'Conference', date: '2025-06-20'})
// 关联人物和事件
CREATE (a)-[:ATTENDS]->(g)
CREATE (b)-[:ATTENDS]->(h)
CREATE (c)-[:ATTENDS]->(g)
- FRIEND_WITH:表示朋友关系。
- LIVES_IN:表示人物居住地点。
- ATTENDS:表示人物参加的事件。
如果页面无法访问,在容器中执行:
# 链接终端
cypher-shell -u neo4j -p ${password}
# 执行如上语句
# 查看创建的数据
MATCH (n) RETURN n LIMIT 50;
# 如果你想查看所有节点的标签:
CALL db.labels();
2、备份操作
// 备份所有数据为 GraphML 格式
CALL apoc.export.graphml.all('neo4j_backup.graphml', {useTypes:true});
CALL apoc.export.graphml.all
用于将数据库中所有数据导出为neo4j_backup.graphml
。useTypes:true
表示在导出时保留类型信息。
notice:
neo4j默认的备份路径默认从/var/lib/neo4j/import
开始
3、 模拟容器故障:删除容器
docker compose down
4、 恢复操作
// 恢复 GraphML 文件
CALL apoc.import.graphml('neo4j_backup.graphml', {batchSize:1000, readLabels:true})
CALL apoc.import.graphml
用于从指定的 GraphML 文件恢复数据。batchSize:1000
设置每次导入的批量大小为 1000 条。readLabels:true
表示读取并应用标签。
说明:neo4j会从默认的备份路径(/var/lib/neo4j/import
)中找到备份文件