Training Backup Recovery Mac - tomgeudens/practical-neo4j GitHub Wiki
Context: Information for the Backup & Recovery training.
Prerequisite: The document will assume you have done a Setup Neo4j Enterprise on Mac (4.3) and have an instance running in a terminal.
Version: this document is current for version 4.3.5
Setting the stage
If you have at least one modestly sized database running on your instance, you can use that for the remainder of this training. The instructions will assume this is the neo4j database, adapt accordingly if it is not.
If you don't have any data loaded yet, we're going to load the example movies set. Fire up a regular webbrowser (a recent Chrome, Firefox, Microsoft Edge or Opera GX are all fine, Microsoft IE and Safari may give issues) and browse to your running instance. Log on to the default database (username is neo4j, password is trinity).
:use neo4j
:play movies
And run the create script on the second page of that guide. Additionally, create the following constraints and index.
CREATE CONSTRAINT uc_Movie_title ON (m:Movie) ASSERT m.title IS UNIQUE;
CREATE CONSTRAINT uc_Person_name ON (p:Person) ASSERT p.name IS UNIQUE;
CREATE INDEX index_Movie_tagline FOR (m:Movie) ON (m.tagline);
With the data loaded, open a second terminal window. Position yourself once more in the neo4j folder.
First check that you are in the right spot
ls -l
... install
... neo4j-enterprise-4.3.5
... scripts
... zulu11.50.19-ca-jre11.0.12-macosx_x64
Create some additional folders
mkdir dump
mkdir backup
And verify
ls -l
... backup
... dump
... install
... neo4j-enterprise-4.3.5
... scripts
... zulu11.50.19-ca-jre11.0.12-macosx_x64
Last but not least, set the enviroment
. ./scripts/environment.sh
Note that there are two dots (with a blank in between) there. All that follows will assume you have done this and are positioned right here. So if you have to do it over, position again, verify and set the enviroment again.
Dump
Stop the database
neo4j-enterprise-4.3.5/bin/cypher-shell -u neo4j -p trinity -d system "STOP DATABASE neo4j;"
Check that it worked
neo4j-enterprise-4.3.5/bin/cypher-shell -u neo4j -p trinity -d system "SHOW DATABASES;"
Take the dump
neo4j-enterprise-4.3.5/bin/neo4j-admin dump --database=neo4j --to=dump/neo4j.dump
Verify that it worked
ls -l dump/neo4j.dump
Start the database
neo4j-enterprise-4.3.5/bin/cypher-shell -u neo4j -p trinity -d system "START DATABASE neo4j;"
Check that it worked
neo4j-enterprise-4.3.5/bin/cypher-shell -u neo4j -p trinity -d system "SHOW DATABASES;"
Load
Load the dump
neo4j-enterprise-4.3.5/bin/neo4j-admin load --database=loaded --from=dump/neo4j.dump
Create the database
neo4j-enterprise-4.3.5/bin/cypher-shell -u neo4j -p trinity -d system "CREATE DATABASE loaded;"
Verify
neo4j-enterprise-4.3.5/bin/cypher-shell -u neo4j -p trinity -d loaded "MATCH () RETURN COUNT(*);"
Backup
Take a backup
neo4j-enterprise-4.3.5/bin/neo4j-admin backup --database=neo4j --backup-dir=backup
Verify
ls -l backup/neo4j
Make a change on the database
neo4j-enterprise-4.3.5/bin/cypher-shell -u neo4j -p trinity -d neo4j "CREATE (:Person {name: 'Tom Geudens'});"
Backup again (it's the same command)
neo4j-enterprise-4.3.5/bin/neo4j-admin backup --database=neo4j --backup-dir=backup
Restore
Prepare the restore
neo4j-enterprise-4.3.5/bin/neo4j-admin prepare-restore --target=backup/neo4j
Do the restore
neo4j-enterprise-4.3.5/bin/neo4j-admin restore --database=restored --from=backup/neo4j
Create the database
neo4j-enterprise-4.3.5/bin/cypher-shell -u neo4j -p trinity -d system "CREATE DATABASE restored;"
Verify
neo4j-enterprise-4.3.5/bin/cypher-shell -u neo4j -p trinity -d restored "MATCH (p:Person {name: 'Tom Geudens'}) RETURN p;"
Copy
Stop the database
neo4j-enterprise-4.3.5/bin/cypher-shell -u neo4j -p trinity -d system "STOP DATABASE neo4j;"
Verify
neo4j-enterprise-4.3.5/bin/cypher-shell -u neo4j -p trinity -d system "SHOW DATABASES;"
Take the copy
neo4j-enterprise-4.3.5/bin/neo4j-admin copy --from-database=neo4j --to-database=copied
Make sure you cut-and-paste the schema syntax into a text editor of some sort.
Create the database
neo4j-enterprise-4.3.5/bin/cypher-shell -u neo4j -p trinity -d system "CREATE DATABASE copied;"
Enter an interactive Cypher Shell and paste the schema syntax
neo4j-enterprise-4.3.5/bin/cypher-shell -u neo4j -p trinity -d copied
# paste the schema syntax
:quit
Verify the count
neo4j-enterprise-4.3.5/bin/cypher-shell -u neo4j -p trinity -d copied "MATCH () RETURN COUNT(*);"
Verify the constraints
neo4j-enterprise-4.3.5/bin/cypher-shell -u neo4j -p trinity -d copied "CALL db.constraints();"
Start the database
neo4j-enterprise-4.3.5/bin/cypher-shell -u neo4j -p trinity -d system "START DATABASE neo4j;"
Verify
neo4j-enterprise-4.3.5/bin/cypher-shell -u neo4j -p trinity -d system "SHOW DATABASES;"
Remote
Create a directory
mkdir backup/remote
Your teacher will provide you with the IP to use for the below command.
neo4j-enterprise-4.3.5/bin/neo4j-admin backup --from=<theprovidedip>:6362 --backup-dir=backup/remote --database=remoted