nodetool repair
Repairs one or more tables.
Repairs one or more tables. See Manual repair: Anti-entropy repair for more information.
Synopsis
nodetool [(-h <host> | --host <host>)] [(-p <port> | --port <port>)] [(-pw password | --password password)] [(-pwf passwordFilePath | --password-file passwordFilePath)] [(-u username | --username username)] repair [(-dc specific_dc | --in-dc specific_dc)...] [(-dcpar | --dc-parallel)] [(-et end_token | --end-token end_token)] [(-full | --full)] [(-hosts specific_host | --in-hosts specific_host)...] [(-j job_threads | --job-threads job_threads)] [(-local | --in-local-dc)] [(-pr | --partitioner-range)] [(-seq | --sequential)] [(-st start_token | --start-token start_token)] [(-tr | --trace)] [--] [keyspace tables...]
Description
repair
command repairs one or more nodes in a cluster, and
provides options for restricting repair to a set of nodes. Anti-entropy node repair performs
the following tasks:- Ensures that all data on a replica is consistent.
- Repairs inconsistencies on a node that has been down.
Incremental repair is the default for Cassandra 2.2 and later, and full repair is the default in Cassandra 2.1 and earlier. In Cassandra 2.2 and later, when a full repair is run, SSTables are marked as repaired and anti-compacted. Parallel repair is the default for Cassandra 2.2 and later, and sequential repair is the default in Cassandra 2.1 and earlier.
Using options
- Sequential or Parallel
- Full or incremental
Use the -hosts option to list the good nodes to use for repairing the bad nodes. Use -h to name the bad nodes.
Use the -full option for a full repair if required. By default, an incremental repair eliminates the need for constant Merkle tree construction by persisting already repaired data and calculating only the Merkle trees for SSTables that have not been repaired. The repair process is likely more performant than the other types of repair even as datasets grow, assuming you run repairs frequently. Before doing an incremental repair for the first time, perform migration steps first if necessary for tables created before Cassandra 2.2.
Use the -dcpar option to repair datacenters in parallel. Unlike sequential repair, parallel repair constructs the Merkle tables for all datacenters at the same time. Therefore, no snapshots are required (or generated). Use parallel repair to complete the repair quickly or when you have operational downtime that allows the resources to be completely consumed during the repair.
Performing partitioner range repairs by using the -pr option is generally considered a good choice for doing manual repairs. However, this option cannot be used with incremental repairs (default for Cassandra 2.2 and later).
Example
All nodetool repair arguments are optional.
nodetool repair -seq
nodetool repair -pr -hosts 10.2.2.20 10.2.2.21
nodetool -st a9fa31c7-f3c0-44d1-b8e7-a26228867840c -et f5bb146c-db51-475ca44f-9facf2f1ad6e
-dc
option
followed by the name of the datacenter. Issue the command from a node in the datacenter
you want to repair. Issuing the command from a datacenter other than the named one returns
an error. Do not use -pr
with this option to repair only a local datacenter.nodetool repair -dc DC1Results in output:
[2014-07-24 21:59:55,326] Nothing to repair for keyspace 'system'
[2014-07-24 21:59:55,617] Starting repair command #2, repairing 490 ranges
for keyspace system_traces (seq=true, full=true)
[2014-07-24 22:23:14,299] Repair session 323b9490-137e-11e4-88e3-c972e09793ca
for range (820981369067266915,822627736366088177] finished
[2014-07-24 22:23:14,320] Repair session 38496a61-137e-11e4-88e3-c972e09793ca
for range (2506042417712465541,2515941262699962473] finished
. . .
And
an inspection of the system.log shows repair taking place only on IP addresses in
DC1.. . .
INFO [AntiEntropyStage:1] 2014-07-24 22:23:10,708 RepairSession.java:171
- [repair #16499ef0-1381-11e4-88e3-c972e09793ca] Received merkle tree
for sessions from /192.168.2.101
INFO [RepairJobTask:1] 2014-07-24 22:23:10,740 RepairJob.java:145
- [repair #16499ef0-1381-11e4-88e3-c972e09793ca] requesting merkle trees
for events (to [/192.168.2.103, /192.168.2.101])
. . .