8.1 Backup/restore node instance
This guide explains how to back up and restore a SatoshiChain node instance in detail. It discusses the base folders and what they contain, as well as which files are required for a successful backup
SatoshiChain leverages LevelDB as its storage engine. When starting a SatoshiChain node, the following sub-folders are created in the specified working directory:
- blockchain - Stores the blockchain data
- trie - Stores the Merkle tries (world state data)
- keystore - Stores private keys for the client. This includes the libp2p private key and the sealing/validator private key
- consensus - Stores any consensus information that the client might need while working. For now, it stores the node's private validator key
It is critical for these folders to be preserved in order for the SatoshiChain instance to run smoothly.
This section guides you through creating archive data of the blockchain in a running node and restoring it in another instance.
backupcommand fetches blocks from a running node by gRPC and generates an archive file. If
--toare not given in the command, this command will fetch blocks from genesis to latest.
$ satoshi-chain backup --grpc-address 127.0.0.1:9632 --out backup.dat [--from 0x0] [--to 0x100]
A server imports blocks from an archive at the start when starting with
--restoreflag. Please make sure that there is a key for new node.
$ satoshi-chain server --restore archive.dat
This section guides you through backup the data including state data and key and restoring into the new instance.
Since the SatoshiChain uses LevelDB for data storage, the node needs to be stopped for the duration of the backup, as LevelDB doesn't allow for concurrent access to its database files.
Additionally, the SatoshiChain also does data flushing on close.
The first step involves stopping the running client (either through a service manager or some other mechanism that sends a SIGINT signal to the process), so it can trigger 2 events while gracefully shutting down:
- Running data flush to disk
- Release of the DB files lock by LevelDB
Now that the client is not running, the data directory can be backed up to another medium. Keep in mind that the files with a
.keyextension contain the private key data that can be used to impersonate the current node, and they should never be shared with a third/unknown party.
Please back up and restore the generated
genesisfile manually, so the restored node is fully operational.
If any instance of the SatoshiChain is running, it needs to be stopped in order for step 2 to be successful.
Once the client is not running, the data directory which was previously backed up can be copied over to the desired folder. Additionally, restore the previously copied
In order for the SatoshiChain to use the restored data directory, at launch, the user needs to specify the path to the data directory.