Cassandra 卡桑德拉墓碑在实际记录TTL后一个月未被删除
遇到DSE 4.7的问题 即使在压缩、清理、重建和修复之后,墓碑也不会被删除。记录有15天的ttl sstablemetadata输出表明有90%的墓碑 有什么想法吗 sstablemetadata输出Cassandra 卡桑德拉墓碑在实际记录TTL后一个月未被删除,cassandra,datastax,datastax-enterprise,cassandra-2.1,tombstone,Cassandra,Datastax,Datastax Enterprise,Cassandra 2.1,Tombstone,遇到DSE 4.7的问题 即使在压缩、清理、重建和修复之后,墓碑也不会被删除。记录有15天的ttl sstablemetadata输出表明有90%的墓碑 有什么想法吗 sstablemetadata输出 SSTable: ./abcd-abcd-ka-478675 Partitioner: org.apache.cassandra.dht.Murmur3Partitioner Bloom Filter FP chance: 0.010000 Minimum timestamp: 15275212
SSTable: ./abcd-abcd-ka-478675
Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
Bloom Filter FP chance: 0.010000
Minimum timestamp: 1527521280829593
Maximum timestamp: 1527596173976435
SSTable max local deletion time: 1528892173
Compression ratio: 0.36967428395684393
Estimated droppable tombstones: 0.9073013816277629
SSTable Level: 0
Repaired at: 0
ReplayPosition(segmentId=1520529283052, position=4626679)
Estimated tombstone drop times:%n
1528817679: 18318196
1528818619: 20753822
1528819513: 24176310
.
.
.
Count Row Size Cell Count
1 0 0
2 0 1752560
3 0 0
4 0 6355421
5 0 0
6 0 687302
7 0 0
8 0 529613
10 0 444801
12 0 410107
14 0 456011
17 0 1347893
20 0 184960
24 0 152814
.
.
.
770 1347893 137
924 184960 109
1109 220403 68
1331 121620 86
1597 2044030 102
1916 185601 195
2299 184816 158273
2759 868754 0
3311 62795 0
3973 1668 0
4768 2143 0
5722 1812541 0
6866 828 0
.
.
.
Ancestors: [476190, 474027, 475201, 478160]
Estimated cardinality: 20059264
正常压缩后删除墓碑。但是,有时您仍然会在tombstone中发现过时的数据(即使在prod中)。原因可能是该集群中的所有节点中有一个节点已关闭,并且来自tombstone的数据没有因为该节点而被删除。有时在主键中插入空值会导致逻辑删除数据。在请求的时间量过期后,Cassandra会用逻辑删除标记TTL数据。墓碑的存在时间为gc_grace_秒。使用墓碑标记数据后,数据将在正常压缩过程中自动删除。
您可以尝试运行主要的压缩来驱逐墓碑。什么是gc_grace_period?您使用的是什么比较策略?压缩策略是DateTieredCompactionStrategy,gc_grace_period是864000(10天),超过gc grace period 20天。我面临着几乎相同的问题:在某些节点上工作的是“nodetool compact”,在一些节点上没有。主要的压缩在大多数节点上起作用,但这仍然不能解释为什么在gc宽限期之后墓碑没有被删除。