sstableupgrade — SSTable 버전 업그레이드·다운그레이드
sstableupgrade — SSTable 버전 업그레이드·다운그레이드
sstableupgrade는 주어진 테이블(또는 스냅샷)의 SSTable을 현재 Cassandra 버전으로 업그레이드해요. 이 과정은 보통 Cassandra 버전 업그레이드 후 수행합니다. 이 작업은 지정한 테이블의 SSTable을 현재 설치된 Cassandra 버전에 맞게 다시 기록(rewrite)합니다. sstableupgrade 명령은 SSTable을 이전 버전으로 다운그레이드하는 데에도 사용할 수 있어요.
스냅샷 옵션은 지정한 스냅샷만 업그레이드합니다. 현재 실행 중인 Cassandra 메이저 버전보다 오래된 메이저 버전에서 만든 스냅샷을 복원하려 할 때는, 먼저 스냅샷 업그레이드가 필요합니다. 이 작업은 주어진 스냅샷의 파일을 교체하며, 라이브 sstable에 대한 하드링크도 끊어버립니다.
이 도구 실행 전에 Cassandra를 반드시 중지해야 해요. 그렇지 않으면 예상치 못한 결과가 발생할 수 있으며, 스크립트는 Cassandra가 정지되었는지 검증하지 않습니다.
본문
기본 사용법은 다음과 같습니다.
sstableupgrade <options> <keyspace> <table> [snapshot_name]
지원하는 옵션은 다음과 같습니다.
| 옵션 | 설명 |
|---|---|
| --debug | 스택 트레이스 표시 |
| -h,--help | 도움말 메시지 표시 |
| -k,--keep-source | 원본 sstable을 삭제하지 않음 |
테이블을 현재 Cassandra 버전으로 재작성
한 버전의 Cassandra SSTable 세트로 시작해 봅시다.
ls -al /tmp/cassandra/data/keyspace1/standard1-9695b790a63211e8a6fb091830ac5256/
...
-rw-r--r-- 1 user wheel 348 Aug 22 13:45 keyspace1-standard1-ka-1-CRC.db
-rw-r--r-- 1 user wheel 5620000 Aug 22 13:45 keyspace1-standard1-ka-1-Data.db
-rw-r--r-- 1 user wheel 10 Aug 22 13:45 keyspace1-standard1-ka-1-Digest.sha1
-rw-r--r-- 1 user wheel 25016 Aug 22 13:45 keyspace1-standard1-ka-1-Filter.db
-rw-r--r-- 1 user wheel 480000 Aug 22 13:45 keyspace1-standard1-ka-1-Index.db
-rw-r--r-- 1 user wheel 9895 Aug 22 13:45 keyspace1-standard1-ka-1-Statistics.db
-rw-r--r-- 1 user wheel 3562 Aug 22 13:45 keyspace1-standard1-ka-1-Summary.db
-rw-r--r-- 1 user wheel 79 Aug 22 13:45 keyspace1-standard1-ka-1-TOC.txt
Cassandra 버전을 업그레이드한 뒤, sstable을 업그레이드하세요.
sstableupgrade keyspace1 standard1
Found 1 sstables that need upgrading.
Upgrading BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-9695b790a63211e8a6fb091830ac5256/keyspace1-standard1-ka-1-Data.db')
Upgrade of BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-9695b790a63211e8a6fb091830ac5256/keyspace1-standard1-ka-1-Data.db') complete.
ls -al /tmp/cassandra/data/keyspace1/standard1-9695b790a63211e8a6fb091830ac5256/
...
drwxr-xr-x 2 user wheel 64 Aug 22 13:48 backups
-rw-r--r-- 1 user wheel 292 Aug 22 13:48 mc-2-big-CRC.db
-rw-r--r-- 1 user wheel 4599475 Aug 22 13:48 mc-2-big-Data.db
-rw-r--r-- 1 user wheel 10 Aug 22 13:48 mc-2-big-Digest.crc32
-rw-r--r-- 1 user wheel 25256 Aug 22 13:48 mc-2-big-Filter.db
-rw-r--r-- 1 user wheel 330807 Aug 22 13:48 mc-2-big-Index.db
-rw-r--r-- 1 user wheel 10312 Aug 22 13:48 mc-2-big-Statistics.db
-rw-r--r-- 1 user wheel 3506 Aug 22 13:48 mc-2-big-Summary.db
-rw-r--r-- 1 user wheel 80 Aug 22 13:48 mc-2-big-TOC.txt
테이블을 현재 Cassandra 버전으로 재작성하고 구버전 테이블 유지
다시, 한 버전의 SSTable 세트로 시작합니다.
ls -al /tmp/cassandra/data/keyspace1/standard1-db532690a63411e8b4ae091830ac5256/
...
-rw-r--r-- 1 user wheel 348 Aug 22 13:58 keyspace1-standard1-ka-1-CRC.db
-rw-r--r-- 1 user wheel 5620000 Aug 22 13:58 keyspace1-standard1-ka-1-Data.db
-rw-r--r-- 1 user wheel 10 Aug 22 13:58 keyspace1-standard1-ka-1-Digest.sha1
-rw-r--r-- 1 user wheel 25016 Aug 22 13:58 keyspace1-standard1-ka-1-Filter.db
-rw-r--r-- 1 user wheel 480000 Aug 22 13:58 keyspace1-standard1-ka-1-Index.db
-rw-r--r-- 1 user wheel 9895 Aug 22 13:58 keyspace1-standard1-ka-1-Statistics.db
-rw-r--r-- 1 user wheel 3562 Aug 22 13:58 keyspace1-standard1-ka-1-Summary.db
-rw-r--r-- 1 user wheel 79 Aug 22 13:58 keyspace1-standard1-ka-1-TOC.txt
Cassandra 버전을 업그레이드한 뒤, 원본 sstable을 유지하면서 sstable을 업그레이드하세요.
sstableupgrade keyspace1 standard1 -k
Found 1 sstables that need upgrading.
Upgrading BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-db532690a63411e8b4ae091830ac5256/keyspace1-standard1-ka-1-Data.db')
Upgrade of BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-db532690a63411e8b4ae091830ac5256/keyspace1-standard1-ka-1-Data.db') complete.
ls -al /tmp/cassandra/data/keyspace1/standard1-db532690a63411e8b4ae091830ac5256/
...
drwxr-xr-x 2 user wheel 64 Aug 22 14:00 backups
-rw-r--r--@ 1 user wheel 348 Aug 22 13:58 keyspace1-standard1-ka-1-CRC.db
-rw-r--r--@ 1 user wheel 5620000 Aug 22 13:58 keyspace1-standard1-ka-1-Data.db
-rw-r--r--@ 1 user wheel 10 Aug 22 13:58 keyspace1-standard1-ka-1-Digest.sha1
-rw-r--r--@ 1 user wheel 25016 Aug 22 13:58 keyspace1-standard1-ka-1-Filter.db
-rw-r--r--@ 1 user wheel 480000 Aug 22 13:58 keyspace1-standard1-ka-1-Index.db
-rw-r--r--@ 1 user wheel 9895 Aug 22 13:58 keyspace1-standard1-ka-1-Statistics.db
-rw-r--r--@ 1 user wheel 3562 Aug 22 13:58 keyspace1-standard1-ka-1-Summary.db
-rw-r--r--@ 1 user wheel 79 Aug 22 13:58 keyspace1-standard1-ka-1-TOC.txt
-rw-r--r-- 1 user wheel 292 Aug 22 14:01 mc-2-big-CRC.db
-rw-r--r-- 1 user wheel 4596370 Aug 22 14:01 mc-2-big-Data.db
-rw-r--r-- 1 user wheel 10 Aug 22 14:01 mc-2-big-Digest.crc32
-rw-r--r-- 1 user wheel 25256 Aug 22 14:01 mc-2-big-Filter.db
-rw-r--r-- 1 user wheel 330801 Aug 22 14:01 mc-2-big-Index.db
-rw-r--r-- 1 user wheel 10312 Aug 22 14:01 mc-2-big-Statistics.db
-rw-r--r-- 1 user wheel 3506 Aug 22 14:01 mc-2-big-Summary.db
-rw-r--r-- 1 user wheel 80 Aug 22 14:01 mc-2-big-TOC.txt
스냅샷을 현재 Cassandra 버전으로 재작성
스냅샷 이름을 찾아보세요.
nodetool listsnapshots
Snapshot Details:
Snapshot name Keyspace name Column family name True size Size on disk
...
1534962986979 keyspace1 standard1 5.85 MB 5.85 MB
그런 다음 스냅샷을 재작성합니다.
sstableupgrade keyspace1 standard1 1534962986979
Found 1 sstables that need upgrading.
Upgrading BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-5850e9f0a63711e8a5c5091830ac5256/snapshots/1534962986979/keyspace1-standard1-ka-1-Data.db')
Upgrade of BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-5850e9f0a63711e8a5c5091830ac5256/snapshots/1534962986979/keyspace1-standard1-ka-1-Data.db') complete.