四时宝库

程序员的知识宝库

Cassandra 运维工具——Nodetool(cassandra启动报错)

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文件

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接