sstableupgrade
Upgrade the sstables in the given table (or snapshot) to the current version of Cassandra. This process is typically done after a Cassandra version upgrade. This operation will rewrite the sstables in the specified table to match the currently installed version of Cassandra. The sstableupgrade command can also be used to downgrade sstables to a previous version.
The snapshot option will only upgrade the specified snapshot. Upgrading snapshots is required before attempting to restore a snapshot taken in a major version older than the major version Cassandra is currently running. This will replace the files in the given snapshot as well as break any hard links to live sstables.
Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.
Usage
sstableupgrade <options> <keyspace> <table> [snapshot_name]
--debug |
display stack traces |
-h,--help |
display this help message |
-k,--keep-source |
do not delete the source sstables |
Rewrite tables to the current Cassandra version
Start with a set of sstables in one version of Cassandra:
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
After upgrading the Cassandra version, upgrade the sstables:
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
Rewrite tables to the current Cassandra version, and keep tables in old version
Again, starting with a set of sstables in one version:
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
After upgrading the Cassandra version, upgrade the sstables, retaining the original sstables:
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
Rewrite a snapshot to the current Cassandra version
Find the snapshot name:
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
Then rewrite the snapshot:
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.