.. _nodetool

Nodetool
--------

Usage
---------

usage: nodetool [(-u <username> | --username <username>)]
        [(-h <host> | --host <host>)] [(-p <port> | --port <port>)]
        [(-pw <password> | --password <password>)]
        [(-pwf <passwordFilePath> | --password-file <passwordFilePath>)]
        [(-pp | --print-port)] <command> [<args>]

The most commonly used nodetool commands are:

    :doc:`assassinate` -                   Forcefully remove a dead node without re-replicating any data.  Use as a last resort if you cannot removenode

    :doc:`bootstrap` -                     Monitor/manage node's bootstrap process

    :doc:`cleanup` -                       Triggers the immediate cleanup of keys no longer belonging to a node. By default, clean all keyspaces

    :doc:`clearsnapshot` -                 Remove the snapshot with the given name from the given keyspaces. If no snapshotName is specified we will remove all snapshots

    :doc:`clientstats` -                   Print information about connected clients

    :doc:`compact` -                       Force a (major) compaction on one or more tables or user-defined compaction on given SSTables

    :doc:`compactionhistory` -             Print history of compaction

    :doc:`compactionstats` -               Print statistics on compactions

    :doc:`decommission` -                  Decommission the *node I am connecting to*

    :doc:`describecluster` -               Print the name, snitch, partitioner and schema version of a cluster

    :doc:`describering` -                  Shows the token ranges info of a given keyspace

    :doc:`disableauditlog` -               Disable the audit log

    :doc:`disableautocompaction` -         Disable autocompaction for the given keyspace and table

    :doc:`disablebackup` -                 Disable incremental backup

    :doc:`disablebinary` -                 Disable native transport (binary protocol)

    :doc:`disablefullquerylog` -           Disable the full query log

    :doc:`disablegossip` -                 Disable gossip (effectively marking the node down)

    :doc:`disablehandoff` -                Disable storing hinted handoffs

    :doc:`disablehintsfordc` -             Disable hints for a data center

    :doc:`disableoldprotocolversions` -    Disable old protocol versions

    :doc:`drain` -                         Drain the node (stop accepting writes and flush all tables)

    :doc:`enableauditlog` -                Enable the audit log

    :doc:`enableautocompaction` -          Enable autocompaction for the given keyspace and table

    :doc:`enablebackup` -                  Enable incremental backup

    :doc:`enablebinary` -                  Reenable native transport (binary protocol)

    :doc:`enablefullquerylog` -            Enable full query logging, defaults for the options are configured in cassandra.yaml

    :doc:`enablegossip` -                  Reenable gossip

    :doc:`enablehandoff` -                 Reenable future hints storing on the current node

    :doc:`enablehintsfordc` -              Enable hints for a data center that was previsouly disabled

    :doc:`enableoldprotocolversions` -     Enable old protocol versions

    :doc:`failuredetector` -               Shows the failure detector information for the cluster

    :doc:`flush` -                         Flush one or more tables

    :doc:`garbagecollect` -                Remove deleted data from one or more tables

    :doc:`gcstats` -                       Print GC Statistics

    :doc:`getbatchlogreplaythrottle` -     Print batchlog replay throttle in KB/s. This is reduced proportionally to the number of nodes in the cluster.

    :doc:`getcompactionthreshold` -        Print min and max compaction thresholds for a given table

    :doc:`getcompactionthroughput` -       Print the MB/s throughput cap for compaction in the system

    :doc:`getconcurrency` -                Get maximum concurrency for processing stages

    :doc:`getconcurrentcompactors` -       Get the number of concurrent compactors in the system.

    :doc:`getconcurrentviewbuilders` -     Get the number of concurrent view builders in the system

    :doc:`getendpoints` -                  Print the end points that owns the key

    :doc:`getinterdcstreamthroughput` -    Print the Mb/s throughput cap for inter-datacenter streaming in the system

    :doc:`getlogginglevels` -              Get the runtime logging levels

    :doc:`getmaxhintwindow` -              Print the max hint window in ms

    :doc:`getreplicas` -                   Print replicas for a given key

    :doc:`getseeds` -                      Get the currently in use seed node IP list excluding the node IP

    :doc:`getsstables` -                   Print the sstable filenames that own the key

    :doc:`getstreamthroughput` -           Print the Mb/s throughput cap for streaming in the system

    :doc:`gettimeout` -                    Print the timeout of the given type in ms

    :doc:`gettraceprobability` -           Print the current trace probability value

    :doc:`gossipinfo` -                    Shows the gossip information for the cluster

    :doc:`handoffwindow` -                 Print current hinted handoff window

    :doc:`help` -                          Display help information

    :doc:`import` -                        Import new SSTables to the system

    :doc:`info` -                          Print node information (uptime, load, ...)

    :doc:`invalidatecountercache` -        Invalidate the counter cache

    :doc:`invalidatekeycache` -            Invalidate the key cache

    :doc:`invalidaterowcache` -            Invalidate the row cache

    :doc:`join` -                          Join the ring

    :doc:`listsnapshots` -                 Lists all the snapshots along with the size on disk and true size. True size is the total size of all SSTables which are not backed up to disk. Size on disk is total size of the snapshot on disk. Total TrueDiskSpaceUsed does not make any SSTable deduplication.

    :doc:`move` -                          Move node on the token ring to a new token

    :doc:`netstats` -                      Print network information on provided host (connecting node by default)

    :doc:`pausehandoff` -                  Pause hints delivery process

    :doc:`profileload` -                   Low footprint profiling of activity for a period of time

    :doc:`proxyhistograms` -               Print statistic histograms for network operations

    :doc:`rangekeysample` -                Shows the sampled keys held across all keyspaces

    :doc:`rebuild` -                       Rebuild data by streaming from other nodes (similarly to bootstrap)

    :doc:`rebuild_index` -                 A full rebuild of native secondary indexes for a given table

    :doc:`refresh` -                       Load newly placed SSTables to the system without restart

    :doc:`refreshsizeestimates` -          Refresh system.size_estimates

    :doc:`reloadlocalschema` -             Reload local node schema from system tables

    :doc:`reloadseeds` -                   Reload the seed node list from the seed node provider

    :doc:`reloadssl` -                     Signals Cassandra to reload SSL certificates

    :doc:`reloadtriggers` -                Reload trigger classes

    :doc:`relocatesstables` -              Relocates sstables to the correct disk

    :doc:`removenode` -                    Show status of current node removal, force completion of pending removal or remove provided ID

    :doc:`repair` -                        Repair one or more tables

    :doc:`repair_admin` -              
    :doc:`list` -  and fail incremental repair sessions

    :doc:`replaybatchlog` -                Kick off batchlog replay and wait for finish

    :doc:`resetfullquerylog` -             Stop the full query log and clean files in the configured full query log directory from cassandra.yaml as well as JMX

    :doc:`resetlocalschema` -              Reset node's local schema and resync

    :doc:`resumehandoff` -                 Resume hints delivery process

    :doc:`ring` -                          Print information about the token ring

    :doc:`scrub` -                         Scrub (rebuild sstables for) one or more tables

    :doc:`setbatchlogreplaythrottle` -     Set batchlog replay throttle in KB per second, or 0 to disable throttling. This will be reduced proportionally to the number of nodes in the cluster.

    :doc:`setcachecapacity` -              Set global key, row, and counter cache capacities (in MB units)

    :doc:`setcachekeystosave` -            Set number of keys saved by each cache for faster post-restart warmup. 0 to disable

    :doc:`setcompactionthreshold` -        Set min and max compaction thresholds for a given table

    :doc:`setcompactionthroughput` -       Set the MB/s throughput cap for compaction in the system, or 0 to disable throttling

    :doc:`setconcurrency` -                Set maximum concurrency for processing stage

    :doc:`setconcurrentcompactors` -       Set number of concurrent compactors in the system.

    :doc:`setconcurrentviewbuilders` -     Set the number of concurrent view builders in the system

    :doc:`sethintedhandoffthrottlekb` -    Set hinted handoff throttle in kb per second, per delivery thread.

    :doc:`setinterdcstreamthroughput` -    Set the Mb/s throughput cap for inter-datacenter streaming in the system, or 0 to disable throttling

    :doc:`setlogginglevel` -               Set the log level threshold for a given component or class. Will reset to the initial configuration if called with no parameters.

    :doc:`setmaxhintwindow` -              Set the specified max hint window in ms

    :doc:`setstreamthroughput` -           Set the Mb/s throughput cap for streaming in the system, or 0 to disable throttling

    :doc:`settimeout` -                    Set the specified timeout in ms, or 0 to disable timeout

    :doc:`settraceprobability` -           Sets the probability for tracing any given request to value. 0 disables, 1 enables for all requests, 0 is the default

    :doc:`sjk` -                           Run commands of 'Swiss Java Knife'. Run 'nodetool sjk --help' for more information.

    :doc:`snapshot` -                      Take a snapshot of specified keyspaces or a snapshot of the specified table

    :doc:`status` -                        Print cluster information (state, load, IDs, ...)

    :doc:`statusautocompaction` -      
    :doc:`status` -  of autocompaction of the given keyspace and table

    :doc:`statusbackup` -                  Status of incremental backup

    :doc:`statusbinary` -                  Status of native transport (binary protocol)

    :doc:`statusgossip` -                  Status of gossip

    :doc:`statushandoff` -                 Status of storing future hints on the current node

    :doc:`stop` -                          Stop compaction

    :doc:`stopdaemon` -                    Stop cassandra daemon

    :doc:`tablehistograms` -               Print statistic histograms for a given table

    :doc:`tablestats` -                    Print statistics on tables

    :doc:`toppartitions` -                 Sample and print the most active partitions

    :doc:`tpstats` -                       Print usage statistics of thread pools

    :doc:`truncatehints` -                 Truncate all hints on the local node, or truncate hints for the endpoint(s) specified.

    :doc:`upgradesstables` -               Rewrite sstables (for the requested tables) that are not on the current version (thus upgrading them to said current version)

    :doc:`verify` -                        Verify (check data checksum for) one or more tables

    :doc:`version` -                       Print cassandra version

    :doc:`viewbuildstatus` -               Show progress of a materialized view build

See 'nodetool help <command>' for more information on a specific command.

