1

Cassandra データベースのほとんどのデータが失われました。これは単なるテスト データでしたが、何が起こっているのかを理解し、実際のデータでそうならないようにする必要があります。

Windows Server で cassandra 1.1 をサービスとして実行しています。データベースには、ac# アプリケーションからのデータが供給されます。スクリプトが終了し、cassandra サービスを再開しました。その後、過去 20 時間ほどのデータはすべて失われました。古いデータが残っていました。

問題のデータがディスクにまったく書き込まれていない可能性があります。ただし、データベースは問題の 20 時間の間にクエリに正しく応答したため、データは少なくともメモリ内にあったはずです。

設定は、保存場所などを除いてデフォルトの設定と同じです。フラッシング戦略は

commitlog_sync: periodic 
commitlog_sync_period_in_ms: 10000

何を試すべきか、ログファイルや構成で何を探すべきかなど、ヒントをいただければ幸いです。

編集:もう少し実験した後、次のことを再現できるようになりました:

  • 新しいデータを挿入 - OK
  • 新しいデータのクエリ - わかりました
  • データベースを停止して再起動します - すべての新しいデータがなくなりました:((古いデータはまだそこにあります)
  • ログファイルには何もありません。「ログの再生が完了しました。再生されたミューテーションはありません」

Edit2:新鮮な空のデータベースから始めて、すべてが正常に動作するようになりました (もちろん同じ構成)。壊れたデータベースのバックアップを使用すると、上記の問題を再度再現できます。Cassandra でバグを発見しましたか? どうやら私のデータベースは、コミット ログが書き込まれていないか、正しく再生されていない状態にあります。

4

2 に答える 2

3

「新しいミューテーションは再生されませんが、古いミューテーションはまだそこにあります」は、1.1.6 で修正されたhttps://issues.apache.org/jira/browse/CASSANDRA-4782のように聞こえます。最新の 1.1 リリースは 1.1.8 です。それにアップグレードする必要があります。

于 2012-12-23T18:18:51.820 に答える
0

データディレクトリを調べて、それらが正しく設定されているかどうか疑問に思います. それらは正しく存在しますか?それらは書き込み可能ですか?あなたが働いているデータベースと比較してください。ノードツールの修復を行うまで、ディレクトリの1つはあまり書き込まれないことに注意してください。

私の推測では、cass は書き込みができないため、純粋にメモリから動作していると思われます。

更新ごとにログ レコードを書き込む必要があります。

于 2012-12-23T15:01:03.560 に答える