Nodetool
Nodetool是一个查看集群信息的命令,在cassandra安装目录的bin目录中,可以查看集群统计信息、节点信息、数据环信息、增删节点、刷新Memtable数据到SSTable、合并SSTable等。
nodetool version
查看当前机器cassandra版本
[root@cassandra-01 ~]# nodetool version
ReleaseVersion: 3.10
nodetool status
显示当前机器节点信息(UN正常,DN宕机,UJ同步数据),机器节点ID,数据中心、机架信息
[root@cassandra-01 ~]# nodetool status
nodetool upgradesstables
当进行cassandra版本升级时,需要运行这个命令更新SSTable文件到最新的版本
upgradesstables只升级旧版本的SSTable
upgradesstables -a 升级所有的SSTable(包括新版本和旧版本)
upgradesstables keyspace升级指定keyspace中所有旧版SSTable
upgradesstables keyspace table升级指定keyspace中指定table的SSTable
nodetool stopdaemon
关闭Cassandra服务
nodetool snapshot
用于创建keyspace或table的快照信息,即数据备份,可用于数据的恢复
使用-t name指定快照名字,否则使用时间戳
多个键空间分别快照nodetool snapshot ks1 ks2 ks3
指定列族nodetool snapshot -cf student ks1
创建不同键空间列族的快照 nodetool snapshot -kt ks1.t1,ks2.t2
nodetool clearsnapshot
当创建了新的快照后,旧的快照并不会自动删除,clearsnapshot用于删除所有快照信息,所以为了避免误删,操作前,先把需要的快照移动到其他位置。
使用-t snaphostname指定要删除快照的名字
使用 -- keyspace指定键空间
数据恢复
把快照文件复制到对应表的目录下(安装目录/data/keyspace/tablename-UUID)
运行nodetool refresh -- keyspace table加载新的SSTables到集群中
nodetool refresh --keyspace tablename
加载新的SSTables文件到集群中,不需要重启机器节点
nodetool decommision
关闭当前节点,并把数据复制到环中紧邻的下一个节点
nodetool describecluster
输出集群信息
nodetool describering
后面需要跟keyspace的名字,显示圆环的节点信息
nodetool drain
会把memtable中的数据刷新到sstable,并且当前节点会终止与其他节点的联系。
执行完这条命令需要重启这个节点。一般在Cassandra版本升级的时候才使用这个命令。如果单纯想把memtable中的数据刷新到sstable,可以使用nodetool flush命令。
nodetool flush
会把memtable中的数据刷新到sstable,不需要重启节点。
nodetool getendpoints
查看key分布在哪一个节点上,需要三个参数:keyspace,table,keyname。
nodetool getsstables
查看key分布在哪一个SSTable上,需要三个参数:keyspace,table,keyname。
nodetool netstatus
获取节点的网络连接信息,可以指定参数-h查看具体机器节点信息。如果当前机器无法连接,它会显示connection refused。
nodetool rebuild
当有新的数据中心加入,运行这个命令复制数据到数据中心。
nodetool repair
在删除数据的时候,cassandra并非真实的删除,而是重新插入一条的数据,记录了删除的记录的信息和时间,叫做tombstone墓碑。使用nodetool repair,可以删除tombstone数据。频繁修改的数据节点可以使用这个命令节省空间,提高读速度。
nodetool tpstats
列出cassandra维护的线程池的信息,可以直接看到每个阶段有多少操作,以及他们的状态是活动中、等待还是完成。
nodetool cfstats
查看表的一些信息,包括读的次数,写的次数,sstable的数量,memtable信息,压缩信息,bloomfilter信息。
nodetool cleanup
清理不需要的keyspace,当信息数据节点或减少数据节点的时候,数据会在节点间重新分发,可以运行这个命令,清除不再分布在这个节点上的keyspace,唯一目的就是为了节省磁盘空间。
后面不带参数代表清理所有不需要的keyspace。
如果后面紧跟keyspace的名字,则清理对应的keyspace中的冗余。
nodetool compact
合并sstable文件。
省略表,压缩keyspace下面的所有表。
省略keyspace,压缩所有keyspace下的所有表。
nodetool compactionstats
显示当前正在压缩的任务进度。
没有任务时显示pending tasks:0
Cassandra-stress
用于压力测试,可以模拟写入和读取
./tools/bin/cassandra-stress help option # 查看帮助
-node指定连接的节点,多个节点用逗号隔开
-port指定端口,如果修改过端口,那就必须指定
./tools/bin/cassandra-stress write n=1000000 # 插入一百万数据
./tools/bin/cassandra-stress read n=200000 #读取20万行数据
./tools/bin/cassandra-stress read duration=3m #读取三分钟,一直读取
sstableloader
用于加载sstable数据:
载入大量外部数据至一集群
将已经存在的SSTable载入到另外一个节点数不同或者复制策略不同的集群;
从快照恢复数据。
直接输入sstableloader会弹出帮助信息
sstablescrub
清洗指定表的SSTable,试图删除损坏的部分,保留完好的部分。因为是在节点关闭的状况下可以运行,所以它可以修改nodetool scrub不能修复的问题。
一般出现问题的时候先运行nodetool scrub进行清理修复
如果第一步没解决问题,使用sstablescrub:
关闭节点
运行sstablescrub命令 sstablescrub ks1 student --debug
Sstablesplit
切割sstable成小文件
运行前必须关闭cassandra服务
Sstablesplit -s 40 /usr/local/cassandra/darta/Keyspace1/Standard1/*
Cassandra提供的三种压缩策略:
SizeTieredCompactionStrategy 写密集型,它会把多个(一般是4个)小的sstable合并成一个大的sstable文件,可以节省磁盘空间,删除冗余空间,提高读的速度。在使用这种策略时,可以考虑采用sstablesplit对文件进行切割。
LeveledCompactionStrategy读密集型
DataTieredCompactionStrategy 按照时间段压缩
Sstablekeys
用于查看sstable中有哪些key,后面需要跟的是具体的sstable的Data.db文件
Sstable2json
以json的形式显示SSTable文件中的内容后面需要跟的是具体的sstable的Data.db文件