neo4j部署
创建neo4j数据挂载目录
1 2 3 4 5
| $ useradd neo4j
$ mkdir /data/neo4j/{data,logs,import,plugins,conf} -p
|
创建neo4j配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| cat > /data/neo4j/conf/neo4j.conf <<EOF dbms.directories.import=import dbms.connector.bolt.enabled=true dbms.connector.http.enabled=true dbms.connector.https.enabled=true dbms.jvm.additional=-XX:+UseG1GC dbms.jvm.additional=-XX:-OmitStackTraceInFastThrow dbms.jvm.additional=-XX:+AlwaysPreTouch dbms.jvm.additional=-XX:+UnlockExperimentalVMOptions dbms.jvm.additional=-XX:+TrustFinalNonStaticFields dbms.jvm.additional=-XX:+DisableExplicitGC dbms.jvm.additional=-Djdk.tls.ephemeralDHKeySize=2048 dbms.jvm.additional=-Djdk.tls.rejectClientInitiatedRenegotiation=true dbms.windows_service_name=neo4j dbms.jvm.additional=-Dunsupported.dbms.udc.source=docker dbms.connector.bolt.listen_address=0.0.0.0:7687 dbms.connector.https.listen_address=0.0.0.0:7473 dbms.connectors.default_listen_address=0.0.0.0 dbms.memory.pagecache.size=512M dbms.connector.http.listen_address=0.0.0.0:7474 wrapper.java.additional=-Dneo4j.ext.udc.source=docker dbms.tx_log.rotation.retention_policy=100M size dbms.directories.logs=/logs HOME=/var/lib/neo4j EDITION=community
# 配置db系统的时区 dbms.jvm.additional=-Duser.timezone=GMT+08 dbms.db.timezone=SYSTEM db.temporal.timezone=Asia/Shanghai EOF
|
修改neo4j数据持久化目录的权限
1 2
| $ chown -R neo4j:neo4j /data/neo4j/*
|
通过dokcer启动neo4j服务
1 2 3 4 5 6 7 8 9 10 11 12
| docker run -d --name neo4j \ --restart=always \ -v /etc/localtime:/etc/localtime \ -p 7474:7474 -p 7687:7687 \ -v /data/neo4j/data:/var/lib/neo4j/data \ -v /data/neo4j/conf:/var/lib/neo4j/conf \ -v /data/neo4j/logs:/logs \ -v /data/neo4j/import:/var/lib/neo4j/import \ -v /data/neo4j/plugins:/var/lib/neo4j/plugins \ -e NEO4J_AUTH=neo4j/dev-neo4j \ neo4j:3.5.26
|
修改neo4j默认数据库,不自定义数据库名称可以不用修改。
1 2 3 4 5 6 7
| $ vim /data/neo4j/conf/neo4j.conf
dbms.active_database=culture_test.db
docker restart neo4j
|
浏览器访问http://ip:7474
即可访问到web页面,账号密码前面设置了变量为neo4j/dev-neo4j
,如果未设置默认为neo4j/neo4j
neo4j迁移
注意:数据迁移时neo4j的版本要一致,否则会出现错误。
neo4j-docker迁移参考文档
neo4j 官方文档有说明,使用 neo4j-admin restore / dump 导出和恢复数据库的时候需要停掉数据,否则会报数据库正在使用的错误:
1
| command failed: the database is in use — stop Neo4j and try again
|
但问题是docker容器中是没办法停止neo4j进程的,现在进入容器shudown的话,neo4j容器会停掉(docker-run)或者重启数据库(docker-compose),所以这里采用的迂回的方法:
首先停掉neo4j的容器
启动一个带有TTY新的容器,如果使用了数据持久化,需要使用-v参数挂载原有的data目录
1 2 3 4 5 6 7
| $ docker run --rm --user root -it --name neo4j-import \ -v /data/neo4j/data:/var/lib/neo4j/data \ -v /data/neo4j/conf:/var/lib/neo4j/conf \ -v /data/neo4j/import:/var/lib/neo4j/import \ -v /data/neo4j/plugins:/var/lib/neo4j/plugins \ neo4j:3.5.26 bash
|
在这里执行导入导出的命令
docker下导出原有数据库
1 2 3 4 5
| $ /var/lib/neo4j/bin/neo4j-admin dump --database=graph.db --to=/var/lib/neo4j/import/neo4j-graph.db
$ /var/lib/neo4j/bin/neo4j-admin dump --database=culture_test.db --to=/var/lib/neo4j/import/neo4j-culture_test.db
|
docker下导入数据
1 2 3 4 5 6
| $ /var/lib/neo4j/bin/neo4j-admin load --from=/var/lib/neo4j/import/neo4j-graph.db --database=graph.db --force
$ /var/lib/neo4j/bin/neo4j-admin load --from=/var/lib/neo4j/import/neo4j-culture_test.db --database=culture_test.db --force
$ exit
|
重新启动原有的neo4j容器即可看到迁移后的数据