Cassandra ドキュメント

バージョン

プレリリース版のドキュメントを表示しています。

sstablescrub

破損した SSTable を修正します。スクラブプロセスは SSTable を書き直し、破損した行をスキップします。これらの行は失われるため、このプロセスの後に修復を実行してください。

このツールを実行する前に Cassandra を停止する必要があります。そうしないと、予期しない結果が発生します。注意: スクリプトは Cassandra が停止していることを検証しません。

使用方法

sstablescrub <オプション> <キースペース> <テーブル>

--debug スタックトレースを表示

-h,--help

このヘルプメッセージを表示

-m,--manifest-check

レベルマニフェストのみをチェックおよび修復し、実際に SSTable をスクラブしない

-n,--no-validate

カラムバリデータを使用してカラムを検証しない

-r,--reinsert-overflowed-ttl

CASSANDRA-14092 の影響を受けた最大有効期限(2038-01-19T03:14:06+00:00)を超えた有効期限を持つ行を書き換えます。行は元のタイムスタンプに1ミリ秒加算されたタイムスタンプで書き換えられ、影響を受けた行のコンパクション中に生成された可能性のある潜在的な削除マーカーを上書き/優先します。

-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

検証なしのスクラブ

誤って表現されている(例:longフィールドに格納されている整数)が破損していないデータを保持するには、--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 メタデータに移動したため、このオプションはもはや重要ではありません。