一、备份之前需要确定是否关闭防火墙,不关闭防火墙会报错,显示没有权限,很容易误导人:

所以当需要备份的时候,第一时间关闭所有的防火墙

getenforce
setenforce 0

        1、通过查看当前容器映射目录是否映射到容器外部文件

docker inspect 容器id

 如果 neo4j 数据文件在 docker 容器内,则将 docker 容器内的 neo4j 的 data 文件夹复

制到本地,如果已经映射到本地则此步忽略:
docker cp neo4j:/var/lib/neo4j/data /home/neo4j/data

        2、备份数据

        备份前需要停掉容器,社区版不支持运行操作容器,以下命令不会对原有镜像造成影响,请放心运行:

docker run --interactive --tty --rm \
 --publish=7474:7474 --publish=7687:7687 \
 --volume=/home/neo4j/data:/data \
 --volume=/home/neo4j/backups:/backups \
 neo4j:3.5.28 \
 neo4j-admin dump --database=graph.db --to=/data/20240322.dump 

运行结果:

请注意1:,此处/data/20240322.dump 这个文件是相对于容器内部的,导出路径已经映射外部文件夹:/home/neo4j/data,所以导出的数据请在/home/neo4j/data文件下查找


请注意2:此处database在3.5.28下默认是graph.db,4.x以上的版本默认应该为neo4j,如果不确定可以打开data映射文件下的database文件下查看。

cd /home/neo4j/data/database

查看当前数据库名:

        3、还原数据库

        (1)、判断是否启动容器

        if: 新环境有neo4j容器

   将备份出来的20240322.dump复制到容器的data目录下(地址为容器data映射的本地文件下。本文在:/home/neo4j/data):

        else :新环境没有neo4j容器,先运行创建容器命令映射data,此处/home/neo4j/data必须和以下的data地址相同,因为相当于先启动容器,映射data,然后通过命令将数据恢复到data中。

docker run -it -d --name neo4j \
 --publish=7474:7474 --publish=7687:7687 \
 --volume=/home/neo4j/data:/data \
 --volume=/home/neo4j/logs:/logs \
 neo4j:3.5.28

        (2)、还原数据库

docker run --interactive --tty --rm \
 --publish=7474:7474 --publish=7687:7687 \
 --volume=/home/neo4j/data:/data \
 neo4j:3.5.28 \
 neo4j-admin load --from=/data/20240322.dump --database=graph.db --force

运行结果:

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐