nodetool repair
1つ以上のテーブルをリペアします。
repair
コマンドは、クラスター内の1つまたは複数のノードをリペアします。また、リペアを特定のノード集合に限定するオプションがあります。「ノードのリペア」を参照してください。特にデータを頻繁に削除する環境では、アンチエントロピー・ノード・リペアを定期的に実行することが重要です。
重要: リペアを実行する前に、関連するすべてのレプリカが起動しており、アクセス可能であることを確認してください。リペア中にダウンしているレプリカが見つかると、エラーが発生してプロセスが停止します。すべてのレプリカをオンラインに復帰させてから、リペアを再実行してください。
リペア方法の制御:
- リペアを実行しているノードの数:
- パラレルでは、同じレプリカ・データを持つすべてのノード上でリペアを同時に実行します。(DataStax Enterprise 5.0以降のデフォルト動作)
- シーケンシャル(-seq、--sequential)では、1つのノードずつ順番にリペアを実行します。(DataStax Enterprise .4.8以降のデフォルト動作)
- データ・センター・パラレル(-dcpar、--dc-parallel)は、すべてのデータ・センターでシーケンシャル・リペアを同時に実行することにより、シーケンシャルとパラレルを併用しています。各データ・センター内の単一ノードでは、リペアが完了するまで、1つずつリペアが実行されます。
- リペア済みデータの量:
- フル・リペア(デフォルト)は、コマンドが実行されているノードに格納されているデータのレプリカをすべて比較し、各レプリカを最新のバージョンに更新します。データをリペア済み、または未リペアとしてマークしません。DataStax Enterprise 5.1.3以降ではデフォルトです。インクリメンタル・リペアに切り替えるには、「インクリメンタル・リペアへの移行」を参照してください。
- パーティショナー範囲を使用したフル・リペア(-pr、--partitioner-range)は、コマンドが実行されているノードに格納されているデータのプライマリ・レプリカのみをリペアします。定期的なメンテナンスに推奨されます。
- インクリメンタル・リペア(-inc)は、リペア済みSSTableと未リペアSSTableにデータを分割し、未リペアのデータのみをリペアします。リペア済みまたは未リペアとしてデータをマークします。DSE 5.1.0-5.1.2ではデフォルト動作です。注: CASSANDRA-9143に対処するために、DataStaxは、DSE 5.1.3(またはそれ以降)にアップグレードして、フル・リペアに切り替えることを推奨しています。「フル・リペアへの移行」を参照してください。
注: DSEは、
nodetool repair
のデフォルト動作を次のように変更しました。 - DSE 5.1.3以降では、デフォルトでフル・リペアを実行します。DSE 5.1.3を実行しているノードでインクリメンタル・リペアを実行するには、次のように指定します。
nodetool repair -inc
- DSE 5.1.0-5.1.2では、インクリメンタル・リペアを実行します。DSE 5.1.0-5.1.2を実行しているノードでフル・リペアを実行するには、次のように指定します。
nodetool repair -full
ヒント: ノード・リペア・ツールを使用する前に、ノード・リペアの仕組みを理解しておく必要があります。
構文
nodetool [options] repair [(-dc specific_dc | --in-dc specific_dc)...] [(-dcpar | --dc-parallel)] [(-et end_token | --end-token end_token)] [(-full | --full)] [(-hosts specific_host | --in-hosts specific_host)...] [-inc] [(-j job_threads | --job-threads job_threads)] [(-local | --in-local-dc)] [(-pr | --partitioner-range)] [(-pl | --pull)] [(-seq | --sequential)] [(-st start_token | --start-token start_token)] [(-tr | --trace)] [--] [keyspace tables...]
tarボールおよびInstaller-No Servicesのパス:
installation_location/resources/cassandra/bin
接続オプション
接続オプションで、すべてのnodetoolコマンドの接続方法と認証方法を指定します。
短い形式 | 長い形式 | 説明 |
---|---|---|
-p |
--port |
ポート番号。 |
-pwf |
--password-file |
パスワード・ファイルのパス。 |
-pw |
--password |
パスワード。 |
-u |
--username |
ユーザー名。 |
-- | コマンドのパラメーターとオプションのリストを区切ります。 |
注:
- RMI認証用のユーザー名とパスワードがホストのcassandra-env.shファイルに明示的に設定されている場合は、認証情報を指定する必要があります。
- リペアおよびリビルド・コマンドは、クラスター内の複数のノードに影響することがあります。
- ほとんどのnodetoolコマンドは、-hを使用して1つ以上の他のノードを指定していなければ、クラスター内の1つのノード上で実行されます。コマンド発行元のノードがコマンドの実行対象である場合、-hオプションを使用して実行対象を指定する必要はありません。それ以外の場合は、リモート呼び出しの場合、-hオプションを使用して1つまたは複数の実行対象ノードを指定します。
例:
nodetool -u username -pw password describering demo_keyspace
cassandra-env.shファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストールInstaller-Servicesインストール |
/etc/dse/cassandra/cassandra-env.sh |
tarボール・インストールInstaller-No Servicesインストール |
installation_location/resources/cassandra/conf/cassandra-env.sh |
リペア・オプション
リペア固有のオプション。以下のオプションの一部の設定に関するガイダンスが「手動リペア: アンチエントロピー・リペア」に記載されています。
- -dc dc_name、--in-dc dc_name
- 名前の付いたデータ・センター(dc_name)内のノードをリペアします。データ・センター名は大文字と小文字が区別されます。
- -dcpar、--dc-parallel
- データ・センターのパラレル・リペアを実行します。 は、すべてのデータ・センターでシーケンシャル・リペアを同時に実行することにより、シーケンシャルとパラレルを併用しています。各データ・センター内の単一ノードでは、リペアが完了するまで、1つずつリペアが実行されます。
- -et end_token、--end-token end_token
- トークンUUID。最初のトークン(-stを参照)から始まり、このトークン(end_token)で終わるノードの範囲をリペアします。近隣のノードを指定するには、-hostsを使用します。
- -full、--full
- コマンドが実行されているノードに格納されているデータのレプリカをすべて比較し、各レプリカを最新のバージョンに更新する、フル・リペアを実行します。データをリペア済み、または未リペアとしてマークしません。DataStax Enterprise 5.1.3以降ではデフォルトです。インクリメンタル・リペアに切り替えるには、「インクリメンタル・リペアへの移行」を参照してください。注: オプションはDSE 5.1.0-5.1.2でのみ使用可能で、デフォルトではインクリメンタル・リペアが実行されます。DataStaxでは、DSE 5.1.3以降へのアップグレードを推奨しています。
- -hosts specific_host、--in-hosts specific_host
- リペア固有のホスト。
- -inc
- (この方法は推奨されません。)インクリメンタル・リペアを実行します。既にリペアされたデータは保持され、リペアされていないSSTableのMerkleツリーだけが計算されます。リペアを頻繁に(毎日)実行する必要があります。はじめてインクリメンタル・リペアを実行する前に、まず移行手順を実行してください。ノードの復元を目的として、またはダウンしたノードをオンラインに戻した後で、インクリメンタル・リペアを実行しないでください。注: このパラメーターは、DSE 5.1.3以降でのみ使用できます。DataStaxは、フル・リペアに移行することを推奨しています。「リペア・ストラテジの変更」を参照してください。
- -j job_threads、--job-threads job_threads
- リペア・ジョブを実行するスレッドの数(job_threads)。通常、並行してリペアするテーブルの数。この設定を増やすと、ノードのリペアにかかる負荷が増加します。(デフォルト:1、最大:4)
- -local、--in-local-dc
- 同じデータ・センター内のノードのみをリペアするために使用します。
- -pr、--partitioner-range
- ノードのプライマリ・パーティション範囲のみをリペアします。各範囲RF時間の再リペアを避けるために、DataStaxでは、定期保守(
nodetool repair -pr
)またはOpsCenter Repair Service(OpsCenterリペア・サービス)の使用中にこのオプションを使用することを推奨します。注: インクリメンタル・リペアでは、各ステップでリペアされたデータをリペア済みとマークし、同じデータを複数回リペアしないため、インクリメンタル・リペアでは推奨しません。 -pl、--pull
- データがリモートノードからこのノードにストリーミングされる一方向リペアを実行します。
- -seq、--sequential
- 1つのノードずつ順番にリペアを実行する、シーケンシャル・リペアを実行します。(DataStax Enterprise .4.8以降のデフォルト動作)
- -st start_token、--start-token start_token
- リペア範囲が開始するトークン(start_token)を指定します。
- -tr、--trace
- リペアをトレースします。トレースはsystem_traces.eventsに記録されます。
- keyspace_name table_list
- キースペースの名前とスペース区切りのテーブル・リスト。
- --
- オプションと間違えられる可能性のある引数とオプションを区切ります。
例
すべてのnodetool repair引数はオプションです。
現在のノード上のすべてのキースペースのシーケンシャル・リペアを実行するには:
nodetool repair -seq
10.2.2.20または10.2.2.21適格パーティションを使用した、現在のノード上の不良パーティションのパーティショナー範囲リペアを実行するには:
nodetool repair -pr -hosts 10.2.2.20 10.2.2.21
リング上の2つのノード間のすべてのノードのstart-point-to-end-pointリペアの場合:
nodetool repair -st -9223372036854775808 -et -3074457345618258603
リペアをローカル・データ・センターに限定するには、
-dc
オプションの後にデータ・センターの名前を指定します。コマンドは、リペアするデータ・センター内のノードから発行します。指定したデータ・センター以外のデータ・センターからコマンドを発行すると、エラーが返されます。ローカルのデータ・センターのみをリペアするために、このオプションとともに-pr
を使用しないでください。nodetool repair -dc DC1出力内の結果:
[2014-07-24 21:59:55,326] Nothing to repair for keyspace 'system'
[2014-07-24 21:59:55,617] Starting repair command #2, repairing 490 ranges
for keyspace system_traces (seq=true, full=true)
[2014-07-24 22:23:14,299] Repair session 323b9490-137e-11e4-88e3-c972e09793ca
for range (820981369067266915,822627736366088177] finished
[2014-07-24 22:23:14,320] Repair session 38496a61-137e-11e4-88e3-c972e09793ca
for range (2506042417712465541,2515941262699962473] finished
. . .
system.logを確認すると、リペアがDC1内のIPアドレスでのみ行われていることがわかります。. . .
INFO [AntiEntropyStage:1] 2014-07-24 22:23:10,708 RepairSession.java:171
- [repair #16499ef0-1381-11e4-88e3-c972e09793ca] Received merkle tree
for sessions from /192.168.2.101
INFO [RepairJobTask:1] 2014-07-24 22:23:10,740 RepairJob.java:145
- [repair #16499ef0-1381-11e4-88e3-c972e09793ca] requesting merkle trees
for events (to [/192.168.2.103, /192.168.2.101])
. . .