【问题标题】:Inconsistent counter values between replicas in CassandraCassandra 中副本之间的计数器值不一致
【发布时间】:2011-10-22 06:24:02
【问题描述】:

我有一个 3 台机器 Cassandra 集群,它使用机架不感知放置策略,复制因子为 2。

列族定义如下:

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 repair 进行反熵修复。它对计数器值没有任何影响。

数据检查显示计数器的较低值是正确的,因此我怀疑 Cassandra(或我用作 API 从 Java 调用 Cassandra 的 Hector)重试了一些增量。

任何想法如何修复数据并可能防止这种情况再次发生?

【问题讨论】:

    标签: java nosql cassandra hector


    【解决方案1】:

    如果 RR 和 repair 都没有修复它,那可能是一个 bug。

    请升级到 0.8.3(今天发布)并确认它仍然存在于该版本中,然后您可以通过 https://issues.apache.org/jira/browse/CASSANDRA 提交票证。

    【讨论】:

      猜你喜欢
      • 2022-08-22
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 2022-09-19
      • 1970-01-01
      • 1970-01-01
      • 2017-03-30
      • 1970-01-01
      相关资源
      最近更新 更多