sstableutil — SSTable 파일 목록 조회·정리

sstableutil — SSTable 파일 목록 조회·정리

sstableutil은 주어진 테이블에 대한 SSTable 파일들을 나열해 주는 도구예요. 어떤 SSTable이 테이블과 연관되어 있는지 파악하고, 완료되지 않은 작업(트랜잭션)의 잔여 파일을 정리할 때 사용합니다.

관련 문서: CASSANDRA-7066

이 도구 실행 전에 Cassandra를 반드시 중지해야 해요. 그렇지 않으면 예상치 못한 결과가 발생할 수 있으며, 스크립트는 Cassandra가 정지되었는지 검증하지 않습니다.

출처: sstableutil — SSTable 파일 목록 조회·정리

본문

기본 사용법은 다음과 같습니다.

sstableutil <options> <keyspace> <table>

지원하는 옵션은 다음과 같습니다.

옵션 설명
-c, --cleanup 미해결 트랜잭션 정리
-d, --debug 스택 트레이스 표시
-h, --help 도움말 메시지 표시
-o, --oplog 작업 로그 포함
-t, --type <arg> all(모든 파일 나열, 최종 또는 임시), tmp(임시 파일만), final(최종 파일만)
-v, --verbose 상세 출력

모든 SSTable 나열

기본 명령은 주어진 키스페이스/테이블과 연관된 SSTable을 나열합니다.

예시:

sstableutil keyspace eventlog
Listing files...
/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-CRC.db
/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Data.db
/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Digest.crc32
/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Filter.db
/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Index.db
/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Statistics.db
/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Summary.db
/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-TOC.txt
/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-CRC.db
/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Data.db
/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Digest.crc32
/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Filter.db
/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Index.db
/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Statistics.db
/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Summary.db
/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-TOC.txt

임시 SSTable만 나열

-t 옵션 뒤에 tmp를 붙이면 위 형식으로 모든 임시 SSTable을 나열해요. 임시 SSTable은 Cassandra 3.0 이전 버전에서 사용되던 방식입니다.

최종 SSTable만 나열

-t 옵션 뒤에 final을 붙이면 위 형식으로 모든 최종 SSTable을 나열합니다. 최근 Cassandra 버전에서는 -t 옵션을 쓰지 않은 것과 같은 출력이에요.

트랜잭션 로그 포함

-o 옵션을 사용하면 위 형식 목록에 트랜잭션 로그를 포함해요.

SSTable 정리

-c 옵션을 사용하면 불완전한 쓰기나 컴팩션으로 남은 트랜잭션들을 제거합니다.

3.0 업그레이드 노트에 따르면:

새로운 트랜잭션 로그 파일이 기존의 compactions_in_progress 시스템 테이블, 임시 파일 마커(tmp와 tmplink), 그리고 sstable 조상(ancestor)을 대체하기 위해 도입되었어요. 따라서 컴팩션 메타데이터는 더 이상 조상을 포함하지 않습니다. 트랜잭션 로그 파일은 컴팩션과 그 외 작업(플러시, 스트리밍 등)에 관여하는 sstable 디스크립터를 나열해요. sstableutil 도구를 사용하면 아직 완료되지 않은 작업에 관여 중인 sstable 파일(이전에는 임시로 표시되었던 것들)을 나열할 수 있습니다. 트랜잭션 로그 파일은 한 줄에 sstable 하나씩, 접두어 add: 또는 remove:와 함께 기록됩니다. 또한 트랜잭션이 커밋될 때만 파일 끝에 삽입되는 특별한 줄 commit도 포함됩니다. 시작 시점에 우리는 이 파일들을 사용해 프로세스가 종료될 때 진행 중이던 부분적 트랜잭션을 정리해요. commit 줄이 발견되면 새 sstable(add 접두어가 붙은 것들)을 유지하고 오래된 sstable(remove 접두어가 붙은 것들)을 삭제하며, commit 줄이 없다면 그 반대로 동작합니다. 이 로그 파일을 잃거나 삭제하면 오래된 sstable과 새 sstable이 모두 라이브 파일로 유지되어 sstable이 중복될 수 있어요. 이 파일들은 증분 체크섬으로 보호되므로 수동으로 편집하면 안 됩니다. 전체 백업을 복원하거나 sstable 파일을 옮길 때는 먼저 남은 트랜잭션과 그 임시 파일들을 정리해야 합니다.

더 알아보기 (Learn more)