Cassandra DSE群集节点磁盘已满

Cassandra DSE群集节点磁盘已满,cassandra,datastax-enterprise,opscenter,Cassandra,Datastax Enterprise,Opscenter,我有一个6节点的集群,每个节点的大小为1000 GB。但是一个节点的大小随机达到了1000 GB。在分析中,我发现只有一个键空间被填满&只有一个键空间大小的表从200 GB增加到800 GB(在24小时内),这意味着只有人在这个表上执行操作。我想知道在这个节点上执行了哪些操作导致了这个大小的增加? 是否有任何日志可以查看以查看执行了哪些操作?我想我应该如何做,就是使用“nodetool tablehistograms”来证明表具有较大的分区。然后,我将转到表目录,在一些数据文件上运行“sstab

我有一个6节点的集群,每个节点的大小为1000 GB。但是一个节点的大小随机达到了1000 GB。在分析中,我发现只有一个键空间被填满&只有一个键空间大小的表从200 GB增加到800 GB(在24小时内),这意味着只有人在这个表上执行操作。我想知道在这个节点上执行了哪些操作导致了这个大小的增加?
是否有任何日志可以查看以查看执行了哪些操作?

我想我应该如何做,就是使用“nodetool tablehistograms”来证明表具有较大的分区。然后,我将转到表目录,在一些数据文件上运行“sstablemetadata”,查找显示一些较大分区大小的文件

一旦找到具有更大分区的sstables,您可以使用的一个技巧是:

sstabledump <sstable> | grep  -n "\"key\" :"
如您所见,挂起和完成之间的差距远远大于处理和挂起(65k行vs.s.8M行)。这告诉我,与挂起分区相比,处理分区相对较小。唯一的谜团是完整的一个有多大,因为没有“结束”线。要获取总行数,请运行:

sstabledump aa-483-bti-Data.db | wc -l
16316029
总行数为16M。因此,完工的线路从8米到16米,或大约8米的线路。因此,完成的分区也很大,大约与挂起的分区一样大

查看sstablemetadata以查看其是否与输出匹配,我发现它确实匹配:

sstablemetadata aa-483-bti-Data.db
Partition Size:
   Size (bytes)         | Count  (%)  Histogram
   943127 (921.0 kB)    |     1 ( 33) OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
   129557750 (123.6 MB) |     1 ( 33) OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
   155469300 (148.3 MB) |     1 ( 33) OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
我看到两个相对较大的分区和一个较小的分区。宾果


也许其中一些可以帮助您了解大分区的底部。

使用DataStax Enterprise,您应该能够启用该功能。事实上,通过配置
CassandraAuditWriter
的记录器类,所有活动都会写入
dse\u audit
键空间中的
audit\u log

数据由以下主键组织:((日期、节点、日分区)、事件时间);并且包含诸如
用户名
表名
键空间
操作
等列

查看上面的配置和查询选项

至于(开源)ApacheCassandra,我们使用插件实现这一功能。通过添加到项目的JAR中,并对
cassandra.yaml
文件进行一些调整,您可以查看
audit.log
s中的记录,如:

15:42:41.655 - client:'10.0.110.1'|user:'flynn'|status:'ATTEMPT'|operation:'DELETE FROM ecks.ectbl WHERE partk = ?'

谢谢Jim,但是我如何在这里获取查询,因为我想知道用户是否使用什么数据执行插入或删除?除非运行缓慢或启用跟踪,否则无法获取实际执行的查询。不幸的是,这种能力并不存在。sstabledump将显示记录是插入还是删除的。如果您找到上面的大分区,您可以在两行之间转储以查看发生了什么。如果你看不到删除,那么要么是插入,要么是更新——无论如何,这都是插入。至少你知道哪个分区有问题。也许你可以联系应用人员,了解受影响分区的情况。
15:42:41.655 - client:'10.0.110.1'|user:'flynn'|status:'ATTEMPT'|operation:'DELETE FROM ecks.ectbl WHERE partk = ?'