sstablerepairedset — SSTable 리페어 처리 상태 설정

sstablerepairedset — SSTable 리페어 처리 상태 설정

일부 환경에서는 대용량 데이터에서 리페어(repair)가 아주 오래 걸릴 수 있어요. 이 도구는 주어진 SSTable들의 repairedAt 상태를 설정해서, 원한다면 리페어되지 않은 SSTable에 대해서만 리페어를 실행할 수 있게 해줍니다.

주의: 리페어를 실행한다고 해서(예: nodetool repair) 이 메타데이터 상태가 설정되지는 않아요. 이 메타데이터 상태는 이 도구를 통해서만 설정할 수 있습니다.

관련 문서: CASSANDRA-5351

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

출처: sstablerepairedset — SSTable 리페어 처리 상태 설정

본문

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

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)

더 알아보기 (Learn more)