.. _nodetool

Nodetool
--------

Usage
---------

usage: nodetool [(-u <username> | --username <username>)]
        [(-pw <password> | --password <password>)]
        [(-pwf <passwordFilePath> | --password-file <passwordFilePath>)]
        [(-h <host> | --host <host>)] [(-p <port> | --port <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:`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:`disableautocompaction` -         Disable autocompaction for the given keyspace and table

    :doc:`disablebackup` -                 Disable incremental backup

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

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

    :doc:`disablehandoff` -                Disable storing hinted handoffs

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

    :doc:`disablethrift` -                 Disable thrift server

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

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

    :doc:`enablebackup` -                  Enable incremental backup

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

    :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:`enablethrift` -                  Reenable thrift server

    :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:`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:`getconcurrentcompactors` -       Get the number of concurrent compactors 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:`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:`help` -                          Display help information

    :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.

    :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:`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:`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:`replaybatchlog` -                Kick off batchlog replay and wait for finish

    :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:`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:`setconcurrentcompactors` -       Set number of concurrent compactors 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 class. If both class and level are empty/null, it will reset to the initial configuration

    :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:`snapshot` -                      Take a snapshot of specified keyspaces or a snapshot of the specified table

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

    :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:`statusthrift` -                  Status of thrift server

    :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 for a given column family

    :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.

