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])
. . .