sstablerepairedset — SSTable 리페어 처리 상태 설정
sstablerepairedset — SSTable 리페어 처리 상태 설정
일부 환경에서는 대용량 데이터에서 리페어(repair)가 아주 오래 걸릴 수 있어요. 이 도구는 주어진 SSTable들의 repairedAt 상태를 설정해서, 원한다면 리페어되지 않은 SSTable에 대해서만 리페어를 실행할 수 있게 해줍니다.
주의: 리페어를 실행한다고 해서(예: nodetool repair) 이 메타데이터 상태가 설정되지는 않아요. 이 메타데이터 상태는 이 도구를 통해서만 설정할 수 있습니다.
관련 문서: CASSANDRA-5351
이 도구 실행 전에 Cassandra를 반드시 중지해야 해요. 그렇지 않으면 예상치 못한 결과가 발생할 수 있으며, 스크립트는 Cassandra가 정지되었는지 검증하지 않습니다.
본문
기본 사용법은 다음과 같습니다.
sstablerepairedset --really-set <options> [-f <sstable-list> |
<sstables>]
지원하는 옵션은 다음과 같습니다.
| 옵션 | 설명 |
|---|---|
| --really-set | 상태를 실제로 설정하고 싶다면 필수 |
| --is-repaired | repairedAt 상태를 마지막 수정 시각으로 설정 |
| --is-unrepaired | repairedAt 상태를 0으로 설정 |
| -f | SSTable 목록이 담긴 파일을 입력으로 사용 |
많은 SSTable을 unrepaired 상태로 설정
프로그래밍 방식으로 처리하는 방법은 여러 가지예요. 보통 키스페이스와 테이블 이름을 변수로 사용하는 방식입니다.
예시:
find /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/* -name "*Data.db" -print0 | xargs -0 -I % sstablerepairedset --really-set --is-unrepaired %
하나부터 여러 SSTable을 repaired 상태로 설정
리페어 후 SSTable을 리페어됨으로 표시하려면 repairedAt 상태를 설정하세요. 역시 키스페이스와 테이블 이름에 변수를 사용하는 것이 좋습니다.
예시:
nodetool repair keyspace1 standard1
find /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/* -name "*Data.db" -print0 | xargs -0 -I % sstablerepairedset --really-set --is-repaired %
리페어 상태를 보여주는 메타데이터 출력
sstablemetadata로 이 명령이 설정하거나 해제한 상태를 확인할 수 있어요.
예시:
sstablerepairedset --really-set --is-repaired
/var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/mc-1-big-Data.db
sstablemetadata
/var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/mc-1-big-Data.db
| grep "Repaired at" Repaired at: 1534443974000
sstablerepairedset --really-set --is-unrepaired
/var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/mc-1-big-Data.db
sstablemetadata
/var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/mc-1-big-Data.db
| grep "Repaired at" Repaired at: 0
스크립트에서 사용하기
2주 전에 리페어를 실행했다는 사실을 안다면, 다음과 같이 할 수 있어요.
sstablerepairset --is-repaired -f <(find /var/lib/cassandra/data/.../ -iname "*Data.db*" -mtime +14)