本文写的是从开源社区neo4j:5.25.1迁移到graphstack/dozerdb:5.26.3.0,其中dozerdb:5.26.3.0是基于开源社区插件增强版,支持多db,官方网页是dozerdb

迁移方案

当前部署环境下,我一共部署了3个neo4j的实例,需要迁移并合并到dozerdb上,因为dozerdb支持创建多个database。而neo4j迁移升级一般有三个方案

  • 直接升级到dozerdb:5.26.3.0并把neo4j:5.25.1的data挂载过来
  • 参考Backup and Restore,可惜需要企业版本
  • 通过neo4j-admin dump&load数据
  • 通过apoc插件

迁移难点

  • 由于neo4j是用docker部署,开源提供的导出导入必须基于数据库下线才能操作,而neo4j-admin在docker stop后不方便操作
  • 小版本升级,且是插件增强版,不清楚是否有坑
    后面发现neo4j官方文档有针对docker部署的情况的指导,打开neo4j,找到对应版本号的文档,我的是5.x,选择的是5.26的文档参考,如果是4.x的版本,需要切换到对应的版本号所对应的文档。
    Dump and load a Neo4j database (offline)

迁移操作

  1. 停止旧的三个neo4j实例,并将data数据导出,并修改成新的database name

    docker run --interactive --tty --rm \
    --volume=./neo4js-record:/data \
    --volume=./backups:/backups \
    neo4j/neo4j-admin:5.25.1-community-debian \
    neo4j-admin database dump neo4j --to-path=/backups
  2. 创建新的,并停止容器
    docker compose up -d
    docker compose down
    下面是dozerdb的docker-compose.yaml的示例

    version: '3.5'
    services:
      server:
     image: graphstack/dozerdb:5.26.3.0
     restart: always
     environment:
       NEO4J_AUTH: neo4j/password
       NEO4J_PLUGINS: '["apoc"]'
       NEO4J_apoc_export_file_enabled: true
       NEO4J_apoc_import_file_enabled: true
       NEO4J_apoc_import_file_use__neo4j__config: true
       NEO4J_dbms_security_procedures_unrestricted: '*'
     ports:
       - "7474:7474"
       - "7687:7687"
     volumes:
       - ./gdb/data:/data
       - ./gdb/logs:/logs
       - ./gdb/metrics:/metrics
       - ./gdb/import:/var/lib/neo4j/import
       - ./gdb/plugins:/plugins
       - ./gdb/metrics:/metrics
     networks:
       - app-network
    networks:
      app-network:
     driver: bridge
  3. 将数据导入进去

    docker run --interactive --tty --rm \
     --volume=./gdb/data:/data \
     --volume=./backups:/backups \
     neo4j/neo4j-admin:5.26.2-community-debian \
    neo4j-admin database load eventFactor --from-path=/backups
    
    docker run --interactive --tty --rm \
     --volume=./gdb/data:/data \
     --volume=./backups:/backups \
     neo4j/neo4j-admin:5.26.2-community-debian \
    neo4j-admin database load reportRST --from-path=/backups
    
    docker run --interactive --tty --rm \
     --volume=./gdb/data:/data \
     --volume=./backups:/backups \
     neo4j/neo4j-admin:5.26.2-community-debian \
    neo4j-admin database load industrialChain --from-path=/backups
  4. 进入dozerdb图库,创建库名关联上导入数据

    create database eventFactor
    create database reportRST
    create database industrialChain
  5. 切换到对应数据库,可以看到数据导入成功

    :use eventFactor

m20082008m
5 声望2 粉丝