Neo4j 迁移

neo4j-admin 工具支持在线/离线备份,在线备份需要收费。本章主要介绍离线版

docker-compose

创建两个容器用于测试备份/恢复

由于官方neo4j镜像的neo4j进程为主进程,关闭数据库容器就退出了。
而备份需要关闭数据库,因此需要使用对官方数据库进行如下改装,重新构建一个tag为neo4j:custom的镜像。

  • Dockerfile
FROM neo4j
ENV NEO4J_EDITION=x
RUN echo "nohup /startup/docker-entrypoint.sh neo4j > /var/lib/neo4j/hello.log 2>&1 &" > /var/lib/neo4j/hello.log
CMD tail -f /var/lib/neo4j/hello.log

使用命令docker build -t neo4j:custom .构建镜像。

本地启动两个容器,一个作为迁移数据库,一个作为恢复数据库

version: "3.9"
services:
  neo4j: 
    image: neo4j:custom
    ports:  
    - 7474:7474
    - 7687:7687
    environment:
    - NEO4J_AUTH=neo4j/neo4j2
    volumes:
    - ./data:/data
  neo4j2: 
    image: neo4j:custom
    ports:  
    - 7475:7474
    - 7688:7687
    environment:
    - NEO4J_AUTH=neo4j/neo4j2
    volumes:
    - ./data2:/data

备份

运行进入容器

docker exec -it <backup_container_id> /bin/bash

停止数据库:

neo4j stop

备份数据库为dump文件

neo4j-admin dump --database=neo4j --to=neo4j-20220524.dump

恢复

切入到恢复数据库:

docker exec -it <restore_container_id> /bin/bash

恢复也需要停止数据库

neo4j stop

覆盖原有neo4j数据库:

# neo4j-admin load --from=neo4j-20220524.dump --database=neo4j --force
Selecting JVM - Version:11.0.15+10, Name:OpenJDK 64-Bit Server VM, Vendor:Oracle Corporation
Done: 36 files, 250.9MiB processed.

启动数据库:

nohup /startup/docker-entrypoint.sh neo4j > /var/lib/neo4j/hello.log 2>&1 &

Reference List

  1. neo4j Backup and restore planning
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐