我有一个运行在Docker容器中的Neo4J实例。我想定期启动Docker容器,以通过restoring并运行check-consistency报告来确认我的备份可用并正确。此外,我没有使用默认的活动数据库名称graph.db
,而是使用了neo4j
。我想让容器使用活动数据库名称为neo4j
的备份启动,以便我可以对备份进行现场检查(即,也许使用带有docker的bash脚本或使用entrypoint
)
根据文档,在从备份还原之前,应首先停止Neo4J。但是,由于在docker容器中运行Neo4J不会创建PID文件,因此无法成功发出停止命令。如果我已经在运行Docker容器,则会看到以下问题:
$ docker exec inf_neo4j-server_1 neo4j stop
Neo4j not running
$ docker exec inf_neo4j-server_1 neo4j-admin restore --from=/backups/neo4j-data/3.3.4/backups/neo4j/ --database=neo4j --force
command failed: the database is in use -- stop Neo4j and try again
因此,我必须使用唯一的数据库名称(例如neo4j-backup
),该名称当前尚未用于使恢复命令正常工作。
如何使用Docker从备份中还原,并使Neo4J使用备份中的指定活动数据库?我知道我可以通过使用docker compose
文件中的以下环境变量或使用docker run
命令"NEO4J_dbms_active__database=neo4j"
切换活动数据库来停止并删除容器并将其备份。