アンチエントロピー・リペアを実行する状況

ノードでアンチエントロピー・リペアの実行が必要な状況。

アンチエントロピー・リペアを実行すべき状況は、Cassandraクラスターの特性によって異なります。ここでは、一般的なガイドラインを示します。それぞれ特定のケースに合わせて行ってください。

リペアが必要な状況 

以下のような状況の場合に、リペアを実行します。

  • ノードの健全性を定期的に保守するとき。
    注: まったく削除が行われない場合でも、定期的なリペアを予定してください。カラムをNullに設定すると削除になります。
  • 障害が発生した後で、ノードをクラスターに戻している間に、ノードを復旧するとき。
  • めったに読み取られない(つまり、読み取りリペアが発生しない)データを含むノード上のデータを更新するとき。
  • ダウンしているノードのデータを更新する時。
  • 欠落データや破損したSSTablesを復旧させるとき。インクリメンタル以外のリペアを行う必要があります。

ノード・リペアを定期的に実行するためのガイドラインには、以下が含まれます。

  • インクリメンタル・リペアを毎日実行し、フル・リペアを毎週または毎月実行します。一般的に、毎月で十分ですが、保証対象の場合は、頻繁に実行してください。
    重要: フル・リペアは、削除が一切発生しない場合でも、データの整合性を確保するために役立ちます。
  • リペアの範囲によって妨げられていない限り、パラレルおよびパーティショナー範囲のオプションを使用してください。
  • フル・リペアを実行してアンチコンパクションを排除します。アンチコンパクションは、SSTableを2つのSSTable(一方がリペア済みデータを含み、もう一方が未リペア・データを含む)に分割するプロセスです。これには、コンパクション・ストラテジの影響が含まれます。
    注: レベル化コンパクションを使用する場合は、インクリメンタル・リペアに移行することを推奨します。
  • gc_grace_seconds設定で指定した時間に達する前に、すべてのノードがリペアされるよう十分な頻度でリペアを実行する。この要件が満たされる場合、クラスターの削除されたデータは適切に処理されます。
  • クラスターの障害を最小限に抑えるため、定期的なノード・リペアを予定する。
    • 可能な場合は、使用量が少ない時間帯にリペア操作を予定する。
    • 可能な場合は、一度に1つのノードのリペア操作を予定する。
  • データの削除や上書きがめったに行われない場合は、gc_grace_secondsの設定で時間の値を大きくしてください。このようなテーブルでは、設定を変更することで以下の結果が得られます。
    • ディスク領域への影響を最小限に抑える。
    • リペア操作の頻度を減らすことができる。
  • リペアを実行する前に、nodetoolコンパクション・スロットル・オプション(setcompactionthroughputおよびsetcompactionthreshold)を構成すると、頻繁なディスク使用が軽減されます。

ダウンしたノードでリペアを実行するためのガイドライン:

  • パーティショナー範囲、-prを使用しない。