.. _nodetool

Nodetool
--------

Usage
---------

usage: nodetool [(-p <port> | --port <port>)] [(-pp | --print-port)]
        [(-pw <password> | --password <password>)]
        [(-pwf <passwordFilePath> | --password-file <passwordFilePath>)]
        [(-u <username> | --username <username>)] [(-h <host> | --host <host>)]
        <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:`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.

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

