Cassandra 文件

版本

您正在檢視預發行版本的說明文件。

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

處理溢位日期

使用選項 --reinsert-overflowed-ttl 允許重寫具有超過最大值(導致溢位)的最大 TTL 的列。

範例

sstablescrub --reinsert-overflowed-ttl keyspace1 counter1

明細檢查

從 Cassandra 版本 2.0 開始,此選項不再相關,因為層級資料已從獨立明細移至 sstable 元資料中。