sstableexpiredblockers
在压缩过程中,如果整个 SSTable 仅包含已过期的墓碑,并且可以保证数据不比其他 SSTable 中的数据更新,则可以删除整个 SSTable。如果已过期 SSTable 的最新时间戳比另一个 SSTable 中的最旧数据更新,则可以阻止删除已过期 SSTable。
此工具用于列出所有阻止其他 SSTable 删除的 SSTable(因为它们拥有比已过期 SSTable 中的最新墓碑更旧的数据),以便用户可以找出为什么某些 SSTable 仍然存在于磁盘上。
在执行此工具之前,必须停止 Cassandra,否则会导致意外结果。注意:该脚本不会验证 Cassandra 是否已停止。
输出被阻止的 SSTable
如果表存在 SSTable,但没有表拥有比已过期 SSTable 中的最新墓碑更旧的数据,则脚本将不返回任何内容。
否则,脚本将返回 <sstable> blocks <> 已过期 SSTable 的删除#,后跟被阻止的 SSTable 列表。
示例
sstableexpiredblockers keyspace1 standard1 [BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-0665ae80b2d711e886c66d2c86545d91/mc-2-big-Data.db') (minTS = 5, maxTS = 5, maxLDT = 2147483647)], blocks 1 expired sstables from getting dropped: [BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-0665ae80b2d711e886c66d2c86545d91/mc-3-big-Data.db') (minTS = 1536349775157606, maxTS = 1536349780311159, maxLDT = 1536349780)], [BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-0665ae80b2d711e886c66d2c86545d91/mc-1-big-Data.db') (minTS = 1, maxTS = 10, maxLDT = 2147483647)], blocks 1 expired sstables from getting dropped: [BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-0665ae80b2d711e886c66d2c86545d91/mc-3-big-Data.db') (minTS = 1536349775157606, maxTS = 1536349780311159, maxLDT = 1536349780)],