nodetool repair

関連するすべてのレプリカが起動し、アクセス可能になったときに、クラスター内の1つ以上のテーブルをリペアします。

関連するすべてのレプリカが起動し、アクセス可能になったときに、クラスター内の1つ以上のノードのテーブルをリペアします。

重要: NodeSyncが有効になっているテーブルは、すべてまたは一部のキースペースについて、リペア操作がスキップされます。個別のテーブルについては、NodeSyncが有効になっている場合、repairコマンドが拒否されます。

ノードのリペア」を参照してください。このコマンドを使用する前に、ノード・リペアの仕組みを理解しておく必要があります。

重要: リペア中にダウンしているレプリカが見つかると、エラーが発生してリペア・プロセスが停止します。すべてのレプリカをオンラインに復帰させてから、リペアを再実行してください。

OpsCenterでは、手動リペアを実行するためにNodes UIでリペア・オプションを提供します。

構文

nodetool [connection_options] repair 
[-dcpar | -seq] 
[-full | -inc]
[-hosts ip_address [ip_address ...]]
[-local | -dc datacenter_name[,datacenter_name,...]] 
[-pl] [-pr] [-prv] 
[-pull -hosts local_ip_address [remote_ip_address]
[-j job_threads]
[-st start_token -et end_token] 
[-tr] [--] 
[keyspace_name table_name [table_name ...]]
1. 凡例
構文規則 説明
大文字 リテラル・キーワード。
小文字 リテラル以外。
Italics 変数値。有効なオプションまたはユーザー定義値と置き換えます。
[ ] 任意。角かっこ( [] )で任意のコマンド引数を囲みます。角かっこは入力しないでください。
( ) グループ。丸かっこ(( ))は、選択肢を含むグループを示します。丸かっこは入力しないでください。
| または。縦棒(|)で代替要素を区切ります。要素のいずれかを入力してください。縦棒は入力しないでください。
... 繰り返し可能。省略記号(...)は、構文要素を必要な回数だけ繰り返すことができることを示します。
'Literal string' 単一引用符( ' )でCQL文内のリテラル文字を囲みます。大文字を維持するには、単一引用符を使用します。
{ key:value } マップ・コレクション。中かっこ( { } )でマップ・コレクションまたはキーと値のペアを囲みます。コロンでキーと値を区切ります。
<datatype1,datatype2> セット、リスト、マップ、またはタプル。山かっこ(< >)で、セット、リスト、マップまたはタプル内のデータ型を囲みます。データ型をカンマで区切ります。
cql_statement; CQL文の終了。セミコロン( ; )ですべてのCQL文を終了します。
[ -- ] コマンドライン・オプションとコマンド引数は、2つのハイフン(--)で区切ります。この構文は、引数がコマンドライン・オプションと間違われる可能性がある場合に役立ちます。
' <schema> ...</schema> ' 検索CQLのみ:単一引用符( ' )でXMLスキーマ宣言全体を囲みます。
@xml_entity='xml_entity_type' 検索CQLのみ:スキーマ・ファイルおよびsolrconfigファイル内のXML要素を上書きする実体とリテラル値を示します。

短い形式と長い形式のパラメーターはカンマで区切られています。

接続オプション

-h, --host hostname
リモート・ノードのホスト名またはIPアドレス。省略した場合、デフォルトはローカル・マシンです。
-p, --port jmx_port
JMXポート番号。
-pw, --password jmxpassword
セキュアなJMXで認証するためのJMXパスワード。パスワードを入力しないと、入力するように求められます。
-pwf, --password-file jmx_password_filepath
JMX認証用の資格情報を格納するファイルへのファイルパス。
-u, --username jmx_username
セキュアなJMXで認証するためのユーザー名。

コマンド引数

--
オプションと間違えられる可能性のある引数とオプションを区切ります。
-dc datacenter_name, --in-dc datacenter_name
リペアを制限するデータ・センターのカンマ区切りのリスト。データ・センターの名前は、大文字と小文字が区別されます。ローカル・オプションより多くのノードをリペアする際に、ネットワーク・トラフィックを減らします。このオプションが指定されていない場合は、レプリカがある全ノードのクラスター全体でリペアが実行されます。
-dcpar, --dc-parallel
同じレプリカ・データがある全ノードで同時にリペアを実行します。データ・センター全体をリペアする場合にお勧めします。各データ・センターで単一のノードがリペアを実行し、リペアが完了するまで次々に実行されます。このオプションは、すべてのデータ・センターでシーケンシャル・リペアを同時に実行することによって、シーケンシャル・リペアとパラレル・リペアを組み合わせます。データ・センター・ノードにすべての範囲のデータが含まれている場合のみ、-localオプションと共に使用します。
-et, --end-token end_token
範囲内の最後のトークン。開始トークン(-st)が必要です。
-force, --force
エンドポイントをフィルター処理から除外します。
-full, --full
フル・リペアを発行します。
-hosts, --in-hosts host_name
リペア固有のホスト。
-inc, --inc
インクリメンタル・リペアを発行します。
-j, --job-threads num_threads
リペア・ジョブを実行するスレッドの数。これは通常、同時にリペアするテーブル数を示します。デフォルト:1。最大:4。
警告: ジョブ・スレッドを大きくすると、リペア中のノードに対する負荷が増大します。
keyspace_name
キースペースの名前。
-local, --in-local-dc
同じデータ・センター内のノードのみをリペアします。
-pl, --pull
同じトークンの範囲にレプリカを持つ別のノードから一方向のリペアを直接実行します。このオプションを使用すると、データ・センター全体のリペアが必要な場合のパフォーマンスの影響が最小化されます。
-pr, --partitioner-range
パーティショナーから返された最初の範囲だけをリペアします。
-prv, --preview
ストリーミングするデータの範囲と量を決定しますが、リペアは実行しません。
-seq, --sequential
シーケンシャル・リペアを実行します。
-st, --start-token start_token
範囲内の最初のトークン。終了トークン(-et)が必要です。
table_name
スペースで区切られた1つ以上のテーブル名。
-tr, --trace
リペアをトレースします。トレースはsystem_traces.eventsに記録されます。
-vd, --validate
リペアされたデータがノード間で同期されていることを確認します。
注: 同期されていないリペア済みデータは、フル・リペアを実行する必要があることを示します。

すべてのnodetool repairコマンド・オプションはオプションです。オプションのコマンドの引数が指定されない場合、デフォルトは次のようになります。
  • すべてのキースペースとすべてのテーブルでフル・リペアを実行します。
  • 同じレプリカ・データを持つすべてのノード上で、同時にパラレルでリペアを実行します。
  • ジョブ・スレッドの数は1です。
  • トレースしない。検証しない。

すべてのキースペースのシーケンシャル・リペア

nodetool repair -seq

パーティショナー範囲のリペア

nodetool repair -pr 

リング上の2つのノード間のすべてのノードのstart-point-to-end-pointリペア

nodetool repair -st -9223372036854775808 -et -3074457345618258603

ローカル・データ・センターにリペアを限定

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