基于 Docker 的 Neo4j 部署及数据备份与恢复 |
您所在的位置:网站首页 › 备份docker容器恢复后没有数据 › 基于 Docker 的 Neo4j 部署及数据备份与恢复 |
1、pull 镜像 docker pull neo4j:4.4.16-community2、创建目录 mkdir -p /home/data/neo4j/{data,logs,conf,import,db-backup}3、运行容器 docker run -itd \ --name neo4j \ --restart always \ -p 27474:7474 \ -p 27687:7687 \ -v /home/data/neo4j/data:/data \ -v /home/data/neo4j/logs:/logs \ -v /home/data/neo4j/conf:/var/lib/neo4j/conf \ -v /home/data/neo4j/import:/var/lib/neo4j/import \ -v /etc/localtime:/etc/localtime \ -e NEO4J_server_backup_enabled=true \ -e NEO4J_AUTH=neo4j/zhurs@123 neo4j:4.4.16-community # 注:社区版不支持热备,企业版支持热备和冷备。社区版要热备,只能进行逻辑备份 # NEO4J_ACCEPT_LICENSE_AGREEMENT: 启用热备查看启动日志 docker logs -f neo4j4、下载插件 这一步针对社区版本 apoc 插件下载地址:https://neo4j.com/docs/apoc/current/installation/#docker 选择对应的版本 我的是 4.4.x 版本的,点击后进入下载页面: 将插件下载/上传至该目录下即可 ll /home/data/neo4j/data/plugins5、修改配置文件 追加如下内容 vim /home/data/neo4j/conf/neo4j.conf # 添加相关参数及指定插件目录 dbms.security.procedures.unrestricted=apoc.trigger.,apoc.meta. dbms.security.procedures.whitelist=apoc.coll.,apoc.load.,apoc.* dbms.directories.plugins=/data/plugins server.backup.enabled=true dbms.directories.logs=/logs6、添加 apoc 配置文件 与 neo4j.conf 配置文件同级目录 vim /home/data/neo4j/conf/apoc.conf apoc.export.file.enabled=true apoc.import.file.enabled=true apoc.import.file.use_neo4j_config=true如果你不添加该配置文件,那你就在允许容器时指定环境变量即可,如下。 docker run -itd \ --name neo4j \ --restart always \ -p 27474:7474 \ -p 27687:7687 \ -v /home/data/neo4j/data:/data \ -v /home/data/neo4j/logs:/logs \ -v /home/data/neo4j/conf:/var/lib/neo4j/conf \ -v /home/data/neo4j/import:/var/lib/neo4j/import \ -v /etc/localtime:/etc/localtime \ -e apoc.export.file.enabled=true \ -e apoc.import.file.enabled=true \ -e apoc.import.file.use_neo4j_config=true \ -e NEO4J_server_backup_enabled=true \ -e NEO4J_AUTH=neo4j/zhurs@123 neo4j:4.4.16-community7、重启容器 docker restart neo4j 二、验证浏览器访问:http://192.168.56.132:27474/ 1、连接数据库 注意端口是:27687 2、进入数据库 Web 页面 1、先 docker stop 原来的容器 docker stop neo4j2、开始数据冷备 重新启动一个临时容器进行备份 docker run --interactive --tty --rm \ --volume=/home/data/neo4j/data:/data \ --volume=/home/data/neo4j/data/db-backup:/backups \ --volume=/etc/localtime:/etc/localtime \ neo4j:4.4.16-community \ neo4j-admin dump --database=neo4j --to=/backups/`date +%Y%m%d_%H:%M`.dump3、数据恢复 同样是在 Neo4j 停机状态下进行数据恢复 docker run --interactive --tty --rm \ --volume=/home/data/neo4j/data:/data \ --volume=/home/data/neo4j/data/db-backup:/backups \ neo4j:4.4.16-community \ neo4j-admin load --database=neo4j --from=/backups/xxxx.dump 3.2 在线备份数据备份与恢复无需停机。 注意:这是企业版的 Neo4j,社区版本不支持热备。 1、开始数据热备 docker exec --interactive --tty neo4j-new neo4j-admin backup --database=neo4j --to=/backups/`date +%Y%m%d_%H:%M`.back2、数据恢复 docker exec --interactive --tty neo4j-new neo4j-admin backup --backup-dir=/backups/xxx.back 3.3 社区版备份1、连接 neo4j 数据库并创建相关测试数据(略) 2、登录 neo4j 数据库 cypher-shell -d neo4j # 回车后输入用户名/密码 CALL apoc.export.cypher.all("/data/db-backup/all.cypher", { format: "cypher-shell", useOptimizations: {type: "UNWIND_BATCH", unwindBatchSize: 20} }); # 注意:这种执行备份语句只能再用户数据库中执行,系统数据库(system)是不能执行的(执行报错)3、数据恢复 cat /data/db-backup/all.cypher | cypher-shell -a neo4j://127.0.0.1:6787 -u neo4j -p --format verbose4、配合计划任务 Docker 部署 Neo4j 备份时,如何配合 Host 计划任务,思路:cypher-shell 加 -f 参数,指定要执行的文件(db-backup.txt),该文件中包含要执行的 sql 语句。 指定对应文件执行测试。 cypher-shell -u neo4j -p zhurs@123 -f /data/execute/db-backup.txt配合 Host 计划任务。 00 07 * * * /usr/bin/docker exec -it neo4j cypher-shell -u neo4j -p zhurs@123 -f /data/execute/db-backup.txt 00 08 * * * /usr/bin/mkdir /home/data/neo4j/data/db-backup/`date +%Y%m%d_%H:%M` && /usr/bin/cp -a /home/data/neo4j/data/db-backup/all.cypher /home/data/neo4j/data/db-backup/`date +%Y%m%d_%H:%M` |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |