sstableexpiredblockers — 만료 SSTable을 막는 차단 SSTable 목록
sstableexpiredblockers — 만료 SSTable을 막는 차단 SSTable 목록
컴팩션 과정에서, SSTable이 만료된 툼스톤(expired tombstone)만 포함하고 있고 그 데이터가 다른 SSTable의 데이터보다 오래된 것이 보장된다면, 해당 SSTable 전체를 삭제(drop)할 수 있어요. 그런데 만료된 SSTable의 최신 타임스탬프가 다른 SSTable의 가장 오래된 데이터보다 더 새로운 경우, 만료된 SSTable은 삭제되지 못하고 차단될 수 있습니다.
이 도구는 다른 SSTable이 삭제되는 것을 막고 있는(즉, 만료된 SSTable의 최신 툼스톤보다 더 오래된 데이터를 갖고 있는) 모든 SSTable을 나열해서, 특정 SSTable이 왜 여전히 디스크에 남아 있는지 파악할 수 있게 해줘요.
관련 문서: CASSANDRA-10015
이 도구 실행 전에 Cassandra를 반드시 중지해야 해요. 그렇지 않으면 예상치 못한 결과가 발생할 수 있으며, 스크립트는 Cassandra가 정지되었는지 검증하지 않습니다.
본문
기본 사용법은 다음과 같습니다.
sstableexpiredblockers <keyspace> <table>
차단된 SSTable 출력
테이블에 SSTable이 존재하지만, 만료 SSTable의 최신 툼스톤보다 더 오래된 데이터를 가진 테이블이 없다면 스크립트는 아무것도 반환하지 않아요.
그렇지 않으면 스크립트는 <sstable> blocks <> expired sstables from getting dropped 메시지 다음에 차단된 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)],