web-dev-qa-db-ja.com

Cassandraノード-再構築v.s.修復

違いは何ですか:

a)nodetool rebuild

b)nodetool repair [-pr]

言い換えれば、それぞれのコマンドは正確に何をしますか?

18
Stevan Markovic

nodetool再構築:ブートストラッププロセス(クラスターに新しいノードを追加する場合)に似ていますが、データセンター用です。ここでのプロセスは、主に、すでにライブのノードから新しいノードへのストリーミングです(新しいノードは空です)。したがって、非常に高速なノードのキー範囲を定義した後、残りはコピー操作と見なすことができます。

nodetool repair -pr:はコピー操作ではなく、修復中のノードは空ではなく、すでにデータが含まれていますが、レプリケーション係数が1より大きい場合、そのデータを残りのレプリカのデータと比較する必要があります。違いは修正されます。このプロセスには多くのストリーミングが含まれますが、データストリーミングではありません。修復されるノードは、両方のノードが持つ情報が同じであるかどうかを確認するために、マークルツリー(基本的にはハッシュツリー)を要求します。違いがあるデータのセクションのフルストリーム(したがって、すべてのレプリカが同じデータを持ちます)。検証前にデータ全体をストリーミングするよりも高速な場合、このハッシュをストリーミングします。これは、あちこちの違いを除いて、ほとんどのデータが両方のノードで同じであるという仮定の下で機能します。このプロセスでは、データベースから削除するときに作成されたトゥームストーンも削除され、新しい「チェックポイント」のように定義されます。その後、データの削除時に新しいトゥームストーンが作成されますが、古いトゥームストーンは使用されなくなります。

それが役に立てば幸い!

23