Восстановление из резервной копии с Neo4J, запущенным в Docker-контейнере с той же активной базой данных - PullRequest
0 голосов
/ 27 августа 2018

У меня экземпляр Neo4J, запущенный в Docker-контейнере. Я хочу периодически раскручивать контейнер Docker, чтобы подтвердить, что мои резервные копии пригодны для использования и исправлены путем восстановления и запуска отчета проверка согласованности . Кроме того, я не использую имя активной базы данных по умолчанию graph.db, но вместо этого я использую neo4j. Я хотел бы, чтобы контейнер запускался с использованием резервной копии с именем активной базы данных neo4j, чтобы можно было выполнить выборочную проверку резервной копии (т. Е., Возможно, с помощью сценария bash с Docker или с помощью entrypoint).

Согласно документации, сначала следует остановить Neo4J перед восстановлением из резервной копии. Однако, поскольку запуск 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".

...