当sizeTieredCompact策略中收集了大量tombstone时,如何从Cassandra释放磁盘空间



我正在运行cqlsh版本5.0.1,有一个6节点集群,最近我在一个表中进行了一次主要的数据清理,该表使用sizeTieredCompany策略来释放一些磁盘空间,但这并没有发生,我面临的问题是,已经创建了很多tombstone,我的sstables大小不均匀,因此它们没有被压缩。我还尝试使用nodetool compact-用户定义选项手动压缩sstables,但我的nodetool版本是3.0.15,不支持它,有没有其他方法可以压缩sstables,因为我不想在完整的表上运行压缩,因为这可能非常不可预测,下面我附上了我的sstables和cfstats。

-rw-r--r-- 1 cassandra cassandra 523G Jun 17  2021 mc-153814-big-Data.db
-rw-r--r-- 1 cassandra cassandra 178G Sep  8 11:19 mc-223618-big-Data.db
-rw-r--r-- 1 cassandra cassandra 370M Oct 20 00:05 mc-259673-big-Data.db
-rw-r--r-- 1 cassandra cassandra 181G Dec  7 00:58 mc-308912-big-Data.db
-rw-r--r-- 1 cassandra cassandra  47G Dec 23 23:29 mc-331310-big-Data.db
-rw-r--r-- 1 cassandra cassandra  13G Dec 27 21:46 mc-335805-big-Data.db
-rw-r--r-- 1 cassandra cassandra  13G Dec 31 18:30 mc-340584-big-Data.db
-rw-r--r-- 1 cassandra cassandra 3.3G Jan  1 19:12 mc-341882-big-Data.db
-rw-r--r-- 1 cassandra cassandra 3.2G Jan  2 21:18 mc-343095-big-Data.db
-rw-r--r-- 1 cassandra cassandra 828M Jan  3 04:25 mc-343352-big-Data.db
-rw-r--r-- 1 cassandra cassandra  58M Jan  3 04:54 mc-343377-big-Data.db
-rw-r--r-- 1 cassandra cassandra  55M Jan  3 05:21 mc-343394-big-Data.db
-rw-r--r-- 1 cassandra cassandra  18M Jan  3 05:29 mc-343399-big-Data.db
-rw-r--r-- 1 cassandra cassandra 4.7M Jan  3 05:30 mc-343400-big-Data.db
-rw-r--r-- 1 cassandra cassandra 5.7M Jan  3 05:33 mc-343401-big-Data.db
-rw-r--r-- 1 cassandra cassandra 230G Dec 24  2020 mc-36042-big-Data.db
-rw-r--r-- 1 cassandra cassandra 380G Jan  4  2021 mc-49122-big-Data.db
-rw-r--r-- 1 cassandra cassandra 8.1G Jan  6  2021 mc-53514-big-Data.db
-rw-r--r-- 1 cassandra cassandra  82G Jan 10  2021 mc-55238-big-Data.db
-rw-r--r-- 1 cassandra cassandra 5.7G Jan 15  2021 mc-56742-big-Data.db

cfstats

Keyspace: events
    Read Count: 26115727
    Read Latency: 7.895873181627301 ms.
    Write Count: 510188706
    Write Latency: 0.17134826153129307 ms.
    Pending Flushes: 0
        Table: event_track
        SSTable count: 20
        Space used (live): 1.65 TB
        Space used (total): 1.65 TB
        Space used by snapshots (total): 0 bytes
        Off heap memory used (total): 2.09 GB
        SSTable Compression Ratio: 0.13917185434273555
        Number of partitions (estimate): 252702273
        Memtable cell count: 19390
        Memtable data size: 32.35 MB
        Memtable off heap memory used: 0 bytes
        Memtable switch count: 24677
        Local read count: 26115728
        Local read latency: 7.580 ms
        Local write count: 510188708
        Local write latency: 0.151 ms
        Pending flushes: 0
        Bloom filter false positives: 333
        Bloom filter false ratio: 0.00000
        Bloom filter space used: 397.03 MB
        Bloom filter off heap memory used: 397.03 MB
        Index summary off heap memory used: 144.78 MB
        Compression metadata off heap memory used: 1.56 GB
        Compacted partition minimum bytes: 51 bytes
        Compacted partition maximum bytes: 307.45 MB
        Compacted partition mean bytes: 44.67 KB
        Average live cells per slice (last five minutes): 11.18867924528302
        Maximum live cells per slice (last five minutes): 372
        Average tombstones per slice (last five minutes): 10.617424242424242
        Maximum tombstones per slice (last five minutes): 1109

请建议一些我可以释放一些磁盘空间的方法,因为数据每天都在增长,无法增加磁盘空间。

您仍然可以执行用户定义的压缩,尽管对于您的版本应该通过JMX来执行。完整的说明可以在《最后的泡菜》的这篇伟大的博客文章中找到,简短的版本是:

  • 获取一些JMX工具,例如jmxterm
  • 运行bean org.apache.cassandra.db:type=CompactionManagerforceUserDefinedCompaction函数,将文件名作为参数传递(如有必要,请使用完整路径(:
run -b org.apache.cassandra.db:type=CompactionManager forceUserDefinedCompaction mc-341882-big-Data.db,mc-343401-big-Data.db

最新更新