nodetool scrub

Rebuilds SSTables for one or more tables.

Creates a snapshot and then rebuilds SSTables on a node. If possible use nodetool upgradesstables instead of scrub.

Scrub automatically discards broken data and removes any tombstoned rows that have exceeded gc_grace period of the table. If partition key values do not match the column data type, the partition is considered corrupt and the process automatically stops.

Attention: When using LCS, resets all SSTables back to Level 0 and requires re-compaction of all SSTables.


nodetool main_options scrub [(-j <jobs> | --jobs <jobs>)] \
[(-n | --no-validate)][(-ns | --no-snapshot)] \
[(-s | --skip-corrupted)] \
[--] [<keyspace> <tables>...]

Main options

The following options apply to all nodetool commands:
Table 1. Main options
Short Long Description
-h --host Hostname or IP address.
-p --port Port number.
-pwf --password-file Password file path.
-pw --password Password.
-u --username Username.
-- Separates command parameters from a list of options.
  • If a username and password for RMI authentication are set explicitly in the file for the host, then you must specify credentials.
    The location of the file depends on the type of installation:
    Package installations /etc/cassandra/
    Tarball installations install_location/conf/
  • The repair and rebuild commands can affect multiple nodes in the cluster.
  • Most nodetool commands operate on a single node in the cluster if -h is not used to identify one or more other nodes. If the node from which you issue the command is the intended target, you do not need the -h option to identify the target; otherwise, for remote invocation, identify the target node, or nodes, using -h.
nodetool -u username -pw password describering demo_keyspace

Scrub parameters

Use the following parameters with the scrub command:

-j | --jobs jobs
Number of SSTables to simultaneously scrub. Zero (0) uses all available compaction threads.

Default: 2.

-n | --no-validate
Suppresses validation of columns.

Default: Validate all columns.

-ns | --no-snapshot
Suppresses creation of snapshot.

Default: Create a snapshot before rebuilding SSTables.

-s | --skip-corrupted
Forces scrub to skip corrupt partitions and continue. Corrupt partitions have a column value that does not match the column data type. Logs skipped partitions in the system.log.

Default: Stop scrubbing if a corrupted partition is detected.

Note: Skipping corrupted partitions on tables with counter columns results in under-counting.
Rewrite SSTables containing rows with overflowed expiration time with the maximum expiration date of 2038-01-19T03:14:06+00:00 using the original timestamp + 1 (ms).
keyspace_name table_name […]
Identifies the keyspace and targets specific tables using a space separated list.

Default: Include all keyspaces and tables on the node when no arguments are specified.