When consistencycheck is not running, I delete a data directory and it will be automatically rebuilt. When run it, after I delete the directory, it just reports that storage has been checked Storage_Unavailable.
When run consistencycheck, I use vim to edit the *. sqllite file and delete most of the contents, and the file is not fixed.
So, what can consistencycheck do? Does it just throw a false when it detects an error? Will it have some actions to repair?
If we run multiple consistencycheck’s, does it support parallelism by default? We see in the source code that the value of distributed is true by default. Can it be set manually as a parameter?
Can anyone help me? Thank you!
I’ll try to explain what consistency check does:
- Consistency check works by iterating through the whole database, shard by shard, and comparing all replicas for a shard’s data. If there is a mismatch, it reports an error in the log.
- Consistency check doesn’t try to repair the data, because it doesn’t know which copy of the inconsistent data is the correct one.
- Consistency check for now only supports a single instance. You can’t use multiple instances to speed up the checks. There was some discussion about making it parallelized, but no concrete plan yet.
- You can run consistency check as an external process, like
fdbserver -r consistencycheck -C cluster_file
, which is documented here