sstablescrub
修復損毀的 sstable。清除程序會重新撰寫 sstable,略過任何損毀的行。因為這些行會遺失,請在這個程序後進行修復。
在執行此工具之前,必須先停止 Cassandra,否則會產生意外的結果。注意:腳本不會驗證 Cassandra 是否已停止。
用法
sstablescrub <選項> <鍵空間> <表格>
--debug | 顯示堆疊追蹤 |
---|---|
-h,--help |
顯示此說明訊息 |
-m,--manifest-check |
只檢查和修復層級清單,而不會實際清除 sstable |
-n,--no-validate |
不要使用欄位驗證器驗證欄位 |
-r,--reinsert-overflowed-ttl |
使用 2038-01-19T03:14:06+00:00 的最大支援到期日,重新撰寫受 CASSANDRA-14092 影響且到期日已溢出的列。這些列會使用原始時間戳加上一毫秒來重新撰寫,以覆寫/取代在受影響列壓縮期間可能產生的任何墓碑。 |
-s,--skip-corrupted |
略過計數器表格中的損毀列 |
-v,--verbose |
詳細輸出 |
基本清除
沒有選項的清除會先執行快照,然後將所有未損毀的檔案寫入新的 sstable。
範例
sstablescrub keyspace1 standard1 Pre-scrub sstables snapshotted into snapshot pre-scrub-1534424070883 Scrubbing BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-6365332094dd11e88f324f9c503e4753/mc-5-big-Data.db') (17.142MiB) Scrub of BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-6365332094dd11e88f324f9c503e4753/mc-5-big-Data.db') complete: 73367 rows in new sstable and 0 empty (tombstoned) rows dropped Checking leveled manifest
沒有驗證的清除
使用 --no-validate 選項保留可能被誤解的資料(例如,儲存在長欄位中的整數),但資料不會損毀。這些資料通常不會對客戶端造成任何錯誤。
範例
sstablescrub --no-validate keyspace1 standard1 Pre-scrub sstables snapshotted into snapshot pre-scrub-1536243158517 Scrubbing BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-bc9cf530b1da11e886c66d2c86545d91/mc-2-big-Data.db') (4.482MiB) Scrub of BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-bc9cf530b1da11e886c66d2c86545d91/mc-2-big-Data.db') complete; looks like all 0 rows were tombstoned
略過損毀的計數器表格
如果計數器表格損毀,導致 sstablescrub 無法完成,您可以使用 --skip-corrupted 選項略過對這些計數器表格的清除。在 2.0+ 版本中不需要此解決方法。
範例
sstablescrub --skip-corrupted keyspace1 counter1