2017-09-18 9 views
3

誰もが同意するように、Cassandraの修復は必要ですが、非常に高価で、障害が発生しやすく、クラスタ内のノードが修復中にダウンするとほとんどの時間がかかりますクラスタ内の他のノードで実行されています。Cassandra:クラスタまたはデータセンターのすべてのノードでプライマリレンジ完全修復

node repair -pr -full -seq 

しかし、疑問を持って、それが十分なデータ・センターのすべてのノードで、この修復を実行するために(私は4つの異なるがありますされています:私は、ローリング方式で次のコマンドを使用して、プライマリ範囲でフルシーケンシャル修復を実行していますデータセンター)、またはクラスタ全体のすべてのノードで実行する必要がありますか?私はこのトピックに関するいくつかの文書を見つけましたが、言語はこの質問に正しく答えません。例3.1 Primary range repair

答えて

3

repair -pr -fullで、クラスタ内のすべてのノードで修復を実行する必要があります。これを参照してくださいblog postなぜ私は数年前に詳細な説明を書いた。

+0

これは正しいです、受け入れられた答えを無視してください –

3

更新の場合:私は2個のDCの代わりにシングルとしてリングを考えて、ここで実際に間違っていた、実際のトークンリングの詳細です:

| DC | Node | Token | 
    |-----|------|-------| 
    | DC1 |node1 | 1 |  
    | DC2 |node2 | 5 | 
    | DC1 |node3 | 10 | 
    | DC2 |node4 | 15 | 
    | DC1 |node5 | 20 | 
    | DC2 |node6 | 25 | 

ノード4の主な範囲はここにあります6-15ではなく、11-15である(これは主要範囲+局所範囲である)。各ノードで-prを実行する必要があります。混乱を招かないようにオリジナルを削除する。

+0

コマンドのどの部分がDCの外部にあるトークン範囲を修復しますか? –

+0

修理にはDCに関係なく常にすべてのレプリカが必要です。 RFが '{DC1:1、DC2:1} 'の場合、各トークンは各DCに1つのレプリカを持ちます。 argのトークンはどのdcのノードが修復に関与しているかを決定します。私たちは視覚化のためにそれらを2つのテーブルに分割しましたが、本当に単一のリストであることを覚えておいてください。 –

+0

私たちはここで同じことを話しているのかどうかはわかりません。上記の修復コマンド(nodetool repair -pr)を使用してすべてのレプリカを修復するには、すべてのノードで実行する必要があります。 注:このオプションを使用する場合は、クラスタのすべてのノードでnodetool repair -prを実行して修復する必要がありますすべてのデータ。そうしないと、一部のデータ範囲が修復されません。 (https://docs.datastax.com/en/cassandra/2.1/cassandra/operations/opsRepairNodesManualRepair.html) –

関連する問題