Mam dokujący pojemnik na bieżąco neo4j na moim serwerze, a ja mam automatyczne kopie zapasowe, aby utworzyć kopię zapasową bazy danych. Próbowałem przetestować przywrócenie bazy danych z kopii zapasowej, ale nie mogę dowiedzieć się, jak przywrócić bazę danych w pojemniku Docker.

Próbuję użyć docker exec -t bin/neo4j-admin restore --from=/path/to/backup --database=graph.db --force

Czytałem z Dokumentów Neo4J, musisz zamknąć Neo4J, aby przywrócić kopię zapasową, ale jestem dość pewien, że wyłączenie Neo4j w pojemniku zamknie mój pojemnik (pojemnik jest uruchomiony za pomocą bin/neo4j console). Czy istnieje sposób na przywrócenie kopii zapasowych bez zamykania Neo4j lub sposób na zamknięcie Neo4J, nie zamykając pojemnika? Czy muszę po prostu uruchomić Neo4j bez dokera bezpośrednio na moim serwerze?

W tej chwili jedynym rozwiązaniem, który działa, jest kopiowanie folderu Graph.db do faktycznego folderu, ale nie sądzę, że to właściwy sposób.

3
luoyang9 15 luty 2017, 18:38

2 odpowiedzi

Najlepsza odpowiedź

Pobiegłem w ten sam problem. W końcu używałem neo4j-admin restore na bieżącym pojemniku Neo4J, używając nowej nazwy bazy danych, np. --database=new.db. Następnie zatrzymał instancję i zmienił dbms.active_database=graph.db do dbms.active_database=new.db w neo4j.conf (to działa tylko wtedy, gdy masz plik konfiguracyjny w zamontowanym objętości. O ile wiem, nie ma dostępnej zmiennej środowiskowej Ustaw aktywną bazę danych). Mimo to nie jest to najwygodniejsze rozwiązanie, więc mam nadzieję, że jest lepszy sposób na to zrobić.

1
Bram 8 marzec 2017, 16:32

Znalazłem łatwiejszy sposób na zmianę domyślnej bazy danych Docker Neo4j Container, możesz po prostu ustawić zmienną środowiskową w Docker Run lub Service Polecenie:

-e NEO4J_dbms_active__database="test.db"
2
Larry C. 5 luty 2018, 19:57