本文写的是从开源社区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)
迁移操作
停止旧的三个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
创建新的,并停止容器
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
将数据导入进去
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
进入dozerdb图库,创建库名关联上导入数据
create database eventFactor create database reportRST create database industrialChain
切换到对应数据库,可以看到数据导入成功
:use eventFactor
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。