Neo4j Backup: Store copy and consistency check
One of the lesser known things about the Neo4j online backup tool, which I wrote about last week, is that conceptually there are two parts to it:
-
Copying the store files to a location of your choice
-
Verifying that those store files are consistent.
By default both of these run when you run the 'neo4j-backup' script but sometimes it’s useful to be able to run them separately.
If we want to just run the copying the store files part of the process we can tell the backup tool to skip the consistency check by using the 'verify' flag:
$ pwd
/Users/markneedham/Downloads/neo4j-enterprise-2.0.0
$ ./bin/neo4j-backup -from single://127.0.0.1 -to /tmp/foo -verify false
Performing full backup from 'single://127.0.0.1'
Files copied
................ done
Done
If we ran that without the 'verify' flag we’d see the output of the consistency checker as well:
$ ./bin/neo4j-backup -from single://127.0.0.1 -to /tmp/foo
Performing full backup from 'single://127.0.0.1'
Files copied
................ done
Full consistency check
.................... 10%
.................... 20%
.................... 30%
.................... 40%
.................... 50%
.................... 60%
.................... 70%
.................... 80%
.................... 90%
.................... 100%
Done
If we already have a backup and only want to run the consistency checker we can run the following command:
$ java -cp 'lib/*:system/lib/*' org.neo4j.consistency.ConsistencyCheckTool /tmp/foo
Full consistency check
.................... 10%
.................... 20%
.................... 30%
.................... 40%
.................... 50%
.................... 60%
.................... 70%
.................... 80%
.................... 90%
.................... 100%
The consistency tool itself takes a 'config' flag which gives you some control over what things you want to consistency check.
The various options are defined in https://github.com/neo4j/neo4j/blob/2.0-maint/enterprise/consistency-check/src/main/java/org/neo4j/consistency/ConsistencyCheckSettings.java#L52.
For example, if we want to change the file that the consistency check report is written to we could add the following property to our config file:
$ tail -n 1 conf/neo4j.properties
consistency_check_report_file=/tmp/foo.txt
And then run the consistency tool like so:
$ java -cp 'lib/*:system/lib/*' org.neo4j.consistency.ConsistencyCheckTool -config conf/neo4j.properties /tmp/foo
If there are any inconsistencies they’ll now be written to that file rather than to a file in the store directory.
You can also pass that 'config' flag to the backup tool and it will make use of it when it runs the consistency check. e.g.
$ ./bin/neo4j-backup -from single://127.0.0.1 -to /tmp/foo -config conf/neo4j.properties
Most of the time you don’t need to worry too much about either of these commands but I always forget what the various options are so I thought I’d better write it up while it’s fresh in my mind.
About the author
I'm currently working on short form content at ClickHouse. I publish short 5 minute videos showing how to solve data problems on YouTube @LearnDataWithMark. I previously worked on graph analytics at Neo4j, where I also co-authored the O'Reilly Graph Algorithms Book with Amy Hodler.