节点管理 #
一、节点状态 #
1.1 查看节点状态 #
bash
# 查看集群状态
nodetool status
# 输出示例
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns Host ID Rack
UN 192.168.1.1 100 GB 256 33.3% xxx-xxx-xxx rack1
UN 192.168.1.2 100 GB 256 33.3% yyy-yyy-yyy rack1
UN 192.168.1.3 100 GB 256 33.3% zzz-zzz-zzz rack1
1.2 状态说明 #
text
状态说明:
Status(状态)
├── U (Up):节点在线
└── D (Down):节点离线
State(运行状态)
├── N (Normal):正常运行
├── L (Leaving):正在离开集群
├── J (Joining):正在加入集群
└── M (Moving):正在移动数据
Load(负载)
└── 节点数据量
Owns(拥有)
└── 该节点负责的数据比例
1.3 节点信息 #
bash
# 查看节点详细信息
nodetool info
# 输出示例
ID : xxx-xxx-xxx
Gossip active : true
Thrift active : true
Native Transport active: true
Load : 100 GB
Generation No : 1234567890
Uptime (seconds) : 86400
Heap Memory (MB) : 4096.00 / 8192.00
Off Heap Memory (MB) : 512.00
Data Center : datacenter1
Rack : rack1
Exceptions : 0
Key Cache : entries 10000, size 10 MB, capacity 100 MB, ...
Row Cache : entries 0, size 0, capacity 0 MB, ...
二、nodetool命令 #
2.1 常用命令 #
bash
# 集群状态
nodetool status
nodetool ring
# 节点信息
nodetool info
nodetool describecluster
# 数据操作
nodetool flush
nodetool compact
nodetool cleanup
nodetool repair
# 网络状态
nodetool netstats
nodetool gossipinfo
# 快照
nodetool snapshot
nodetool listsnapshots
nodetool clearsnapshot
2.2 表操作 #
bash
# 查看表统计
nodetool tablestats my_keyspace.my_table
# 查看表信息
nodetool cfstats my_keyspace.my_table
# 刷新表
nodetool flush my_keyspace my_table
# 压缩表
nodetool compact my_keyspace my_table
# 清理表
nodetool cleanup my_keyspace my_table
# 修复表
nodetool repair my_keyspace my_table
2.3 性能相关 #
bash
# 查看压缩状态
nodetool compactionstats
# 查看线程池状态
nodetool tpstats
# 设置压缩吞吐量
nodetool setcompactionthroughput 64
# 设置流式传输吞吐量
nodetool setstreamthroughput 400
三、节点故障处理 #
3.1 故障检测 #
bash
# 检查节点状态
nodetool status
# 检查Gossip信息
nodetool gossipinfo
# 检查日志
tail -f /var/log/cassandra/system.log
3.2 节点恢复 #
bash
# 临时故障恢复
# 1. 重启节点
bin/cassandra
# 2. 检查状态
nodetool status
# 3. 执行修复
nodetool repair
# 长时间故障恢复
# 1. 替换节点
bin/cassandra -Dcassandra.replace_address=<故障节点IP>
# 2. 修复数据
nodetool repair
3.3 故障预防 #
text
故障预防措施:
监控
├── 节点状态监控
├── 性能指标监控
├── 磁盘空间监控
└── 日志监控
告警
├── 节点离线告警
├── 磁盘空间告警
├── 性能下降告警
└── 错误日志告警
预防
├── 定期维护
├── 数据备份
├── 容量规划
└── 文档记录
四、负载均衡 #
4.1 查看负载 #
bash
# 查看各节点负载
nodetool status
# 查看Token分布
nodetool ring
# 查看数据流
nodetool netstats
4.2 负载不均衡处理 #
bash
# 方式1:添加新节点
# 自动重新分配Token范围
# 方式2:移除重加入
nodetool decommission # 移除节点
# 重新加入节点
# 方式3:手动移动Token
nodetool move <new_token>
4.3 数据迁移 #
bash
# 查看数据迁移状态
nodetool netstats
# 查看流式传输
nodetool streaminfo
# 设置流式传输速度
nodetool setstreamthroughput 400 # MB/s
五、节点维护操作 #
5.1 刷新操作 #
bash
# 刷新所有MemTable
nodetool flush
# 刷新特定键空间
nodetool flush my_keyspace
# 刷新特定表
nodetool flush my_keyspace my_table
5.2 压缩操作 #
bash
# 触发主压缩
nodetool compact
# 压缩特定键空间
nodetool compact my_keyspace
# 压缩特定表
nodetool compact my_keyspace my_table
# 查看压缩状态
nodetool compactionstats
5.3 清理操作 #
bash
# 清理所有键空间
nodetool cleanup
# 清理特定键空间
nodetool cleanup my_keyspace
# 清理特定表
nodetool cleanup my_keyspace my_table
5.4 修复操作 #
bash
# 全量修复
nodetool repair
# 修复特定键空间
nodetool repair my_keyspace
# 增量修复
nodetool repair --incremental
# 主范围修复
nodetool repair -pr
六、节点配置调整 #
6.1 动态调整 #
bash
# 设置压缩吞吐量
nodetool setcompactionthroughput 64
# 设置流式传输吞吐量
nodetool setstreamthroughput 400
# 设置并发压缩
nodetool setconcurrentcompactors 4
# 设置日志级别
nodetool setlogginglevel org.apache.cassandra DEBUG
6.2 配置更新 #
bash
# 更新配置文件后重启
# 1. 停止节点
nodetool drain
bin/stop-server
# 2. 更新配置
vi conf/cassandra.yaml
# 3. 启动节点
bin/cassandra
# 4. 验证
nodetool status
七、总结 #
节点管理要点:
- 状态监控:使用nodetool status查看状态
- 故障处理:检测、恢复、预防
- 负载均衡:添加节点、数据迁移
- 维护操作:flush、compact、cleanup、repair
- 配置调整:动态调整和配置更新
- 日常巡检:定期检查节点状态
下一步,让我们学习备份与恢复!
最后更新:2026-03-27