Cassandra:メンテナンス


9

私はCassandraに不慣れですが、SQLベースのリレーショナルデータベースにはある程度の経験があります。

展開後のCassandraのメンテナンス方法に関するベストプラクティス情報を見つけることができませんでした。データベースをVACUUMする必要がありますか?読み取り/書き込みの負荷はストレージの断片化を引き起こすと考えるべきです。

またはより一般的には、Cassandra実稼働デプロイメントを維持するためのベストプラクティスは何ですか?システムの状態を維持するために、定期的に何をしなければなりませんか?運用マニュアルでは、この点については触れていません。

ありがとう。


わかりました。コンパクションは非常に重要であり、自動的に実行されることを理解しました。ただし、Linuxでクラスターを長期間実行するときに心配する他のことはありますか?
Mayur Patel

回答:


14

一般に、適切に設計されたクラスターは、触れずにYEARSの間存続できます。私は何年にもわたって実行されたクラスターを持っています。ただし、ここにいくつかのガイドラインがあります。

監視は非常に重要です。

1)レイテンシを監視します。opscenterまたはお気に入りのメトリックツールを使用して、レイテンシを追跡します。待機時間の増加は、GCの一時停止(読み取りワークロードでは書き込みワークロードよりも一般的)、安定した問題など、今後発生する問題の兆候である可能性があります。

2)安定したカウントを監視します。圧縮をオーバーランすると、SSTableの数が増加します(各sstableは1回だけ書き込まれます-削除は、圧縮によって古いsstableを新しいsstableに結合することによって処理されます)。

3)ノードの状態変化(アップ/ダウンなど)を監視します。ノードがバタつくのを見る場合、それは正常ではないので調べてください。

4)ディスクの使用状況を追跡します-従来、50%未満に抑える必要があります(特にSTCS圧縮を使用する場合)。

定期的に行うべき、またはすべきでない基本的なことがいくつかあります。

1)明示的に実行しないでくださいnodetool compact。あなたはそれをやったと言っています、それは致命的ではありませんが、それは非常に大きなsstableを作成します、そしてそれは次に前進する圧縮に参加する可能性が低くなります。必ずしも実行し続ける必要はありませんが、削除/上書きされたデータを取り除くのに役立つ場合があります。

2)nodetool repairは通常推奨gc_grace_secondsされます(デフォルトでは10日)。これがそれほど重要ではないワークロードがあります-修復が必要な最大の理由は、削除マーカー(tombstones)が期限切れになる前に送信されることを確認することです(削除が有効なgc_grace_seconds場合、削除が発生したときにノードがダウンしている場合、データが回復する可能性があります)修理せずに!)削除を発行せず、十分な整合性レベルでクエリを実行する場合(たとえば、QUORUMでの読み取りと書き込み)、実際に修復せずに生活できます。

3)修復する場合は、増分修復の使用を検討し、一度に小さな範囲を修復します。

4)圧縮戦略は重要です。STCSは書き込みに最適で、LCSは読み取りに最適です。DTCSにはいくつかの癖があります。

5)データモデルが重要-インデックス付けされていないクエリが大きなテーブルにヒットするときにRDBMS / SQL環境で問題が発生するのと同様に、Cassandraは非常に大きな行/パーティションで問題が発生する可能性があります。

6)スナップショットは安価です。とても安い。ほぼ瞬時にハードリンクだけで、すぐにディスクスペースをほとんど消費しません。バージョン、特にメジャーバージョンをアップグレードする前に、スナップショットを使用します。

7)削除には注意してください。#2で示唆したように、deleteはディスク上により多くのデータを作成し、AT LEAST用に解放しませんgc_grace_seconds

他のすべてが失敗した場合:

製品のCassandraが任意のサイズのクラスターを管理するために専用のヘッドを必要とすることを示唆する記事を見たことがあります-それが必ずしも本当であるかどうかはわかりませんが、懸念がある場合は、サードパーティのコンサルタント(TheLastPickle、Pythian )または、安心を提供するサポート契約(Datastax)をご利用ください。


1
ジェフ、遅いよ、眠りにつきましょう!
アーロン

1
男、これは日付に気づかなかった。本当に遅れましたね。
Jeff Jirsa 2016

2

よるとカサンドラの修理ドキュメントnodetool repair次のような状況で実行する必要があります。

  • ベストプラクティスとして、修理は毎週スケジュールする必要があります。注:削除が発生しない場合でも、定期的な修復をスケジュールする必要があります。列をnullに設定すると削除になることに注意してください。
  • ノードの回復中。たとえば、障害発生後にノードをクラスターに戻す場合などです。
  • 頻繁に読み込まれないデータを含むノード。
  • ダウンしているノードのデータを更新します。

読み取り/書き込みの負荷はストレージの断片化を引き起こすと考えるべきです。

Cassandraのデータは、あなたが考えている方法で「断片化」されません。ただし、削除はトゥームストーンの配置をトリガーし、通常のコンパクトプロセスはトゥームストーンを除去します。

圧縮は大したことであり、自動的に実行されることを理解しました

正しい。DataStaxの担当者から、compact手動で実行すると、常に手動で実行する必要があると言われました。その理由は、圧縮は、キースペース内の既存のすべてのSSTABLEを単一のSSTABLEファイルに「圧縮」することによって機能するためです。そのSSTABLEファイルに小さい列ファミリーがあり、圧縮しきい値を超えるまでに時間がかかるため、自動圧縮が再び実行される可能性が非常に低い場合があります。

基本的に、定期的nodetool repairに実行しnodetool compact、実行しないでください。バックアップ戦略(スナップショット、増分バックアップ、またはその両方)を実装してください。


したがって、を実行した場合nodetool compact、クラスタを核にしない限り、私は永遠に運命を破られますか?または、自動圧縮を再度開始する方法はありますか?
2rs2ts 2014

1
@ 2rs2tsまあ、「永遠に」ではありません。手動コンパクションを実行したら...「はい」の場合、定期的に実行し続ける必要があります(毎週の修復の直後に常に実行します)。DataStax担当者でこれを明確に、私は考えているあなたは(あなたが実行して、アップグレードのようなSSTABLEファイルを書き換えイベントがある場合upgradesstablesことからあなたを救うために十分なものリセット「マニュアルの圧縮地獄を。」
アーロン

ありがとう、理にかなっていると思います。残念ながら。
2rs2ts 2014

1
自動圧縮は最終的に、の出力で自然に圧縮するのに十分な大きさのsstableを作成しますnodetool compact。また、sstablesplitを使用して不自然に大きなsstableを取り除くことができるため、を「元に戻す」ことができますnodetool compact
Jeff Jirsa、2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.