すべてのノードでnodetool repairを実行する必要がありますか?


12

あなたが実行する必要がありますnodetool repair、クラスタ内のすべてのノードに、または1つのだけのノードで実行する必要がありますし、そこからカサンドラは、残りの世話をするのだろうか?

回答:


9

ドキュメントを見ると、このリファレンスを見つけるのに苦労していますが、短い答えはnodetool repair、クラスタ内の各ノードで実行する必要がある「はい」です。私が見つけることができる最も近いものは、一度にクラスター内の複数のノードで修復を実行しないことを示唆するノードの修復に関するドキュメントです。

フラグを使用して修復を実行することもできます-pr。これにより、現在のノードが担当する最初のトークン範囲に修復操作が制限されます。これにより、残りのノードで実行する場合の作業の重複が削減されます。


したがって、-prすべてのノードで実行すると、キースペース全体がカバーされますか?
2rs2ts 14年

1
@ 2rs2tsはい、-prすべてのノードで実行すると、キースペース全体がカバーされます。
アーロン14年

1
わかりました...では、すべてのノードで実行することになっていますが、-prフラグを使用すると時間を節約できます。
2rs2ts 14年

1
他の回答にいくつかのソースを追加しました。このソースはかなり明確です:「定期的な修復頻度のハード要件はgc_grace_secondsの値です。この期間内にノードで少なくとも1回修復操作を実行します。」 修復ノード
カールG

5

動作は、構成、使用しているCassandraのバージョン、および修復コマンドの実行方法によって異なります。

nodetool repairクラスター内の単一ノードで実行する場合、そのノードが担当するすべてのデータ(トークン範囲)と、そのデータを担当する他のノードを修復します。

したがって、たとえば、nodetool repair特定のクラスター内の単一ノードでコマンドを実行する場合:

  • レプリケーション係数が3の3ノードクラスタを実行している場合、すべてのノードがすべてのデータを所有するため、すべてのノードに対して修復が実行されます。
  • レプリケーションファクター2で6ノードクラスターを実行している場合、データは6つのノードのうち2つでのみ修復されます。残りの4つのノードのうち、さらに2つのノードで修復を開始する必要があります。

とはいえ-hosts-dcフラグとフラグを使用して修復を実行するホストとデータセンターを定義することは可能です。また、あなたは使用している場合-pr、あなたが実行する必要があります(ノードのみが担当する最初のトークン範囲選択されます)フラグnodetool repair -prすべてのクラスタ内のノードを。

留意すべきもう1つのフラグは、-incCassandra 2.1に含まれていたフラグです。このオプションは、新しいデータ(以前に修復されていないデータ)のみを修復します。特にデータを頻繁に削除する場合は、これに依存するときは注意してください。(詳細はこちら

他に留意すべきことは、Cassandraで行われるデフォルトの修復方法は異なる可能性があることです。Cassandra 2.1の時点nodetool repairでは、デフォルトで完全な順次修復を実行するだけです。あなたのバージョンが何をするのかを調べたいでしょう。

トピックの詳細については:

https://www.datastax.com/dev/blog/repair-in-cassandra


2
ここでの唯一の良い答え
ruruskyi

2

いいえ、個々のノードで実行する必要はありません。nodetool repair一連のノードで実行されます。これについては、ドキュメントに明記されています

修復を実行するノードまたはデータの一部を制限できます。たとえば-pr、パーティショナーの範囲、ノードが担当する範囲のオプションを提供できますが、これはクラスター全体で実行する必要があります。ただし、を選択-localした場合、ノードのローカルデータセンターのノードが修復されます。


4
nodetool repair単一のノードで実行するだけでは、すべての構成のすべてのノードで複製されたすべてのデータを修復するには不十分です。nodetool repair単一のノードで実行すると、そのノードで複製されたデータのみが修復されます。(-prオプションを追加すると、このノードが最初のレプリカであるデータに修復が制限されます。)ただし、クラスター内にこのノードで複製されないデータがある場合は、nodetool repair追加のノードで実行する必要があります。
カールG

2
「-prオプションが指定されていない場合、Cassandraはノードの責任の範囲内にあるすべてのレプリカ範囲を修復します。」nodetool修復ドキュメント (すなわち、このノードが複製を担当されていないためではないリペアデータを行います。)「ルーチン補修頻度のハード要件はgc_grace_secondsの値である。上の後少なくとも修理作業を実行し、それぞれ、この期間内のノード。」 ノードの修復
カールG
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.