NoSQL

    xiaoxiao2022-06-23  21

    本文根据 **学院的视频整理而成

    Cassandra 在 安装目录的 bin 目录 和 tool/bin 目录下提供了几个工具

    主要有以下几个:

    nodetool  工具包,参数众多

    cassandra-stress  用于Cassandra的压力测试

    sstableloader 加载 sstable 到集群中

    sstablescrub 删除集群中的冗余数据

    sstablesplit 将大的sstable 分割成小的文件

    sstablekeys 列出sstable中包含的关键字

    sstable2json 以Json形式显示sstable中的内容

    下面依次介绍上面几个工具的使用:

    nodetool :

    nodetool是一个查看集群信息的命令,在Cassandra安装目录下的bin目录中, 可以查看集群统计信息、节点信息、数据环信息、增删节点、刷新Memtable 数据到SSTable、合并SSTable等。 常用的命令有将近80个,这里介绍常用的几个命令。

    nodetool version 显示当前Cassandra的版本信息

    nodetool status 常用 显示当前机器节点信息(UN正常,DN宕机)、数据中心、机架信息

    nodetool upgradesstables 

    当进行Cassandra版本升级时,需要运行这个命令更新SSTable

    upgradesstables 只升级旧版本的SSTable

    upgradesstables -a 升级所有SSTable

    upgradesstables keyspace 升级指定keyspace中所有旧版SSTable

    upgradesstables keyspace table 升级指定keyspace中指定table的SSTable

    nodetool stopdaemon 关闭Cassandra服务

    nodetool removenode (移除DN节点)

    nodetool <options> removenode -- <status> | <force> | <ID>

    options are: ( -h | --host ) <host name> | <ip address> ( -p | --port ) <port number> ( -pw | --password ) <password > ( -u | --username ) <user name> ( -pwf <passwordFilePath | --password-file <passwordFilePath> ) -- separates an option and argument that could be mistaken for a option. status provides status information. force forces completion of the pending removal. ID is the host ID, in UUID format.

    Description : This command removes a node, shows the status of a removal operation,  or forces the completion of a pending removal. When the node is down   and nodetool decommission cannot be used, use nodetool removenode.   Run this command only on nodes that are down. If the cluster does   not use vnodes, before running the nodetool removenode command, adjust the tokens.

    Example:

    更详细细节请参考官网:

    https://docs.datastax.com/en/cassandra/2.1/cassandra/tools/toolsRemoveNode.html

    nodetool decommission

    关闭当前节点,并把数据复制到环中紧邻的下一个节点。

    nodetool snapshot

    用于创建keyspace或table的快照信息,即数据备份,可用于数据的恢复

    nodetool clearsnapshot

    当创建了新的快照后,旧的快照并不会自动删除,clearsnapshot用于 删除所有快照信息,所以为了避免误删,操作前,先把需要的快照移动 到其他位置。

    使用 -t snapshotname 指定要删除快照的名字

    使用 -- keyspace 指定键空间

    数据恢复

    把快照文件复制到对应表的目录下(安装目录/data/keyspace/tablename-UUID) 运行nodetool refresh -- keyspace table加载新的SSTables

    nodetool refresh -- keyspace  tablename

    加载新的SSTables文件到集群中,不需要重启机器节点。

    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 netstats 获取节点的网络连接信息,可以指定参数 -h 查看具体节点信息

    nodetool rebuild 当有新的数据中心加入,运行这个命令复制数据到数据中心

    nodetool repair 在删除数据的时候,Casssandra并非真实的删除, 而是重新插入一条的数据,记录了删除的记录的信息和时间, 叫做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

    显示当前正在压缩的任务进度。

    ===========

    工具 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 

    运行前必须关闭cassandra服务

    sstablesplit -s 40 /var/lib/cassandra/data/Keyspace1/Standard1/*

    SizeTieredCompactionStrategy写密集型

    LeveledCompactionStrategy 读密集型

    DateTieredCompactionStrategy按照时间段压缩

    ===========

    运维工具 — sstablekeys 

    ===============

    运维工具 — sstable2json  

    以JSON的形式显示SSTable文件中的内容

    转载请注明原文地址: https://ju.6miu.com/read-1123508.html

    最新回复(0)