当前位置:首页>Linux>Linux Cassandra Nodetool 常用命令实战

Linux Cassandra Nodetool 常用命令实战

  • 2026-08-23 02:43:11
Linux Cassandra Nodetool 常用命令实战

Linux Cassandra Nodetool 常用命令实战

一、Nodetool 基础知识与使用注意

1.1 Nodetool 位置与执行方式

默认路径:/opt/cassandra/bin/nodetool

执行方式:

  • 本机:nodetool <command>
  • 远程:nodetool -h <ip> -p <jmx_port> <command>(默认jmx_port 7199)
  • 认证:生产启用JMX认证后,加 -u user -pw password

生产建议:

  • 编写别名或脚本统一管理
  • 结合Ansible批量执行多节点命令

1.2 安全注意

  • JMX端口默认7199,生产防火墙仅限内网
  • 启用认证(cassandra-env.sh中AUTH=true)
  • 敏感命令(如assassinate)慎用

1.3 常见选项

  • -h/--host:目标节点
  • -p/--port:JMX端口
  • --:分隔nodetool选项与命令参数

二、集群状态查看命令

这些命令用于日常巡检集群健康。

2.1 nodetool status(最常用)

nodetool status [keyspace]

输出示例:

Datacenter: DC1===============Status=Up/Down|/ State=Normal/Leaving/Joining/Moving--  Address       Load       Tokens  Owns    Host ID                               RackUN  10.0.0.10     1.2 TB     32      33.3%   xxxx...                               rack1UN  10.0.0.20     1.1 TB     32      33.4%   xxxx...                               rack1DN  10.0.0.30     1.2 TB     32      33.3%   xxxx...                               rack1
  • U/D:Up/Down
  • N/L/J/M:Normal/Leaving/Joining/Moving
  • Owns:数据拥有比例(vnodes下应接近1/N)
  • Load:数据目录大小

生产场景:

  • 日常巡检:所有节点UN,Owns均匀
  • 扩容监控:新节点从J → N
  • 故障判断:DN节点需排查

加keyspace:显示该keyspace数据分布

常见问题:Owns偏差大 → 数据倾斜,检查Partition Key或num_tokens

2.2 nodetool describecluster

nodetool describecluster

输出:集群名、Partitioner、Snitch、Schema版本等

生产用:Schema版本不一致 → 需nodetool upgradesstables

2.3 nodetool ring

nodetool ring [keyspace]

显示Token环详细分布(类似status但更细)

2.4 nodetool gossipinfo

nodetool gossipinfo

显示Gossip状态:节点心跳、版本、DC/Rack

生产排查:Gossip不一致 → 网络分区或phi阈值问题


三、节点与性能监控命令

3.1 nodetool info

nodetool info

输出:节点ID、Token、Load、Uptime、Heap使用、GC统计等

生产场景:检查单节点Heap/GC异常

3.2 nodetool tpstats

nodetool tpstats

显示线程池统计:Active/Pending/Completed/Dropped

关键池:

  • ReadStage、WriteStage
  • CompactionExecutor
  • MutationStage

生产阈值:

  • Pending >100:读写积压
  • Dropped >0:严重瓶颈,消息被丢弃

案例:MutationStage Dropped高 → 写QPS超限,需扩容或调concurrent_writes

3.3 nodetool proxyhistograms

nodetool proxyhistograms

显示读写延迟百分位(P50/P99/P99.9)

生产监控:P99 >50ms → 告警,检查Compaction或磁盘

3.4 nodetool cfstats / tablestats(5.0推荐tablestats)

nodetool tablestats keyspace.table

输出:SSTable数量、空间占用、读写延迟、Bloom Filter命中、墓碑数等

关键指标:

  • SSTables per read 直方图:>10表示Compaction落后
  • Tombstones:高 → 影响读性能
  • Space used (live/total):压缩比率

生产场景:定期检查表健康,墓碑高 → 调整TTL或repair

3.5 nodetool netstats

nodetool netstats

显示streaming进度、Hinted Handoff

扩容必看:Streaming进度百分比


四、维护与修复命令

4.1 nodetool repair

nodetool repair -pr keyspace table   # 推荐增量repair + primary range
  • -pr:仅修本节点负责范围
  • -full:全量repair(慎用)
  • 5.0:支持--incremental

生产实践:每周调度增量repair,避免数据不一致

4.2 nodetool cleanup

nodetool cleanup keyspace table

扩容/缩容后清理多余数据,避免磁盘浪费

4.3 nodetool compact

nodetool compact keyspace table   # 强制Major Compaction

手动触发压缩,慎用(IO风暴)

4.4 nodetool flush

nodetool flush keyspace table

强制Memtable flush到SSTable

场景:重启前drain,或Memtable堆积

4.5 nodetool drain

nodetool drain

flush Memtable + 停止接收新写,重启前必执行


五、其他高级命令

5.1 nodetool getendpoints

nodetool getendpoints keyspace table partition_key

查看某Partition所在节点(调试数据分布)

5.2 nodetool setcompactionthroughput

nodetool setcompactionthroughput 64   # MB/s

动态限速Compaction

5.3 nodetool assassinate

nodetool assassinate <ip>

强制移除故障节点(极端情况)

5.4 nodetool rebuild

跨DC重建数据

5.5 nodetool enablehinteddandoff / disablehinteddandoff

控制Hinted Handoff


六、生产nodetool巡检脚本示例

#!/bin/bashecho"=== Status ==="nodetool statusecho"=== TPStats ==="nodetool tpstats | grep -E "Pending|Dropped"echo"=== Proxy Histograms ==="nodetool proxyhistogramsecho"=== Table Stats (关键表) ==="nodetool tablestats prod.users

结合crontab每日执行,输出到日志。


七、常见问题

  1. status显示DN → 检查system.log,常见GC长暂停或磁盘满
  2. tpstats Dropped高 → 写超载 → 扩容或限流客户端
  3. tablestats SSTables多 → Compaction落后 → 提高concurrent_compactors
  4. repair卡住 → 网络或负载 → 加-seq分序执行

最新文章

随机文章