レプリケーション係数2のラックを認識しない配置戦略を使用する3台のマシンのCassandraクラスターがあります。
列ファミリーは次のように定義されます。
create column family UserGeneralStats with comparator = UTF8Type and default_validation_class = CounterColumnType;
残念ながら、本番環境で数日間使用した後、カウンターの値に一貫性がありませんでした。
レプリカ1のクエリ:
[default@StatsKeyspace] list UserGeneralStats['5261666978': '5261666978'];
Using default limit of 100
-------------------
RowKey: 5261666978
=> (counter=bandwidth, value=96545030198)
=> (counter=downloads, value=1013)
=> (counter=previews, value=10304)
レプリカ2のクエリ:
[default@StatsKeyspace] list UserGeneralStats['5261666978': '5261666978'];
Using default limit of 100
-------------------
RowKey: 5261666978
=> (counter=bandwidth, value=9140386229)
=> (counter=downloads, value=339)
=> (counter=previews, value=1321)
標準の読み取り修復メカニズムでは値が修復されないようであるため、nodetool修復を使用してアンチエントロピー修復を強制しようとしました。カウンター値には影響しませんでした。
データ検査では、カウンターの低い値が正しい値であることが示されたため、Cassandra(またはJavaからCassandraを呼び出すためにAPIとして使用したHector)のいずれかがいくつかの増分を再試行したと思われます。
データを修復し、状況が再発しないようにする方法はありますか?