アンチエントロピー・リペアを実行する状況
ノードでアンチエントロピー・リペアの実行が必要な状況。
アンチエントロピー・リペアを実行すべき状況は、クラスターの特性によって異なります。ここでは、一般的なガイドラインを示します。それぞれ特定のケースに合わせて行ってください。
注: リペアのしくみを理解するには、このページに記載されている情報を十分理解する必要があります。「アンチエントロピー・リペア」を参照してください。
リペアが必要な状況
以下のような状況の場合に、リペアを実行します。
- ノードの健全性を定期的に保守するとき。注: まったく削除が行われない場合でも、定期的なリペアを予定してください。カラムをNullに設定すると削除になります。
- 障害が発生した後で、ノードをクラスターに戻している間に、ノードを復旧するとき。
- めったに読み取られない(つまり、読み取りリペアが発生しない)データを含むノード上のデータを更新するとき。
- ダウンしているノードのデータを更新するとき。
- 欠落データや破損したSSTableを復旧させるとき。インクリメンタル以外のリペアを実行する必要があります。
ノード・リペアを定期的に実行するためのガイドライン
- フル・リペアを毎週または毎月実行します。一般的に、毎月で十分ですが、保証対象の場合は、頻繁に実行してください。重要: フル・リペアは、削除が一切発生しない場合でも、データの整合性を確保するために役立ちます。
- リペアの範囲によって妨げられていない限り、パラレルおよびパーティショナー範囲のオプションを使用してください。
- インクリメンタル・リペアを移行してから、フル・リペアを実行してアンチコンパクションを排除します。アンチコンパクションは、SSTableを2つのSSTable(一方がリペア済みデータを含み、もう一方が未リペア・データを含む)に分割するプロセスです。アンチコンパクションは、コンパクション・ストラテジに影響を及ぼします。
- gc_grace_seconds設定で指定した時間に達する前に、すべてのノードがリペアされるよう十分な頻度でリペアを実行する。この要件が満たされる場合、クラスターの削除されたデータは適切に処理されます。
- クラスターの障害を最小限に抑えるため、利用の少ない時間帯に一度に1ノードずつ、定期的なノード・リペアを予定します。
- データの削除や上書きがめったに行われない場合は、gc_grace_secondsの設定で時間の値を大きくしてください。このようなテーブルでは、設定を変更することでディスク領域への影響を最小限に抑え、リペア操作の頻度を減らすことができます。
- リペアを実行する前に、nodetoolコンパクション・スロットル・オプション(setcompactionthroughputおよびsetcompactionthreshold)を構成すると、頻繁なディスク使用が軽減されます。
ダウンしたノードでリペアを実行するためのガイドライン
- パーティショナー範囲、
-pr
を使用しない。 - インクリメンタル・リペア、
-inc
を使用しない。