【问题标题】:data lost in cassandra 1.1.2cassandra 1.1.2 中丢失的数据
【发布时间】:2015-04-08 23:36:58
【问题描述】:

我正在编写一个 Java 程序,使用 Hector 与 cassandra 交互。我发现在运行批处理导入数据后,我可以使用我的 Java 客户端和 cassandra-cli 程序读取新写入的行。但是重启服务器后,数据就消失了。

其他一些有趣的信息...我最初在我的家用机器(Windows)上构建了一个大型数据库,使用旧版本的 cassandra (0.8),然后将数据传输到我当前的生产机器。我发现服务器重启后旧数据仍然存在。我还发现较小的数据库似乎更新得很好,在服务器重启后我没有看到任何数据丢失。

我已尝试升级到最新版本的 cassandra (1.1.2),并移回 Java 6_33 来运行服务器(从 7_4 开始)。没有任何效果。请帮忙!

【问题讨论】:

  • 导入数据后重启前尝试“nodetool flush”查看数据是否存在。这不是解决方案,而是找出问题原因的方法
  • 你有没有设置过 ttl 列?
  • 你的生产集群有多少个节点,你的射频是多少,你读/写的一致性级别是多少?
  • @rs_atl: 单节点,所以我猜射频和一致性级别应该不重要吧?无论如何,我没有改变这些默认值。
  • @Jasonw:我猜 ttl = 生存时间?我什至不知道这个功能,所以我很有信心我没有使用它。

标签: java cassandra hector


【解决方案1】:

这可能是由于从 0.8 迁移到更新版本的 cassandra 时未能运行“nodetool upgradesstables”命令造成的。请注意 cassandra 下载中的 NEWS.txt 文件,该文件提供了有关升级过程的提示。

编辑:确认,这就是问题所在。感谢那些帮助过的人!

【讨论】:

    【解决方案2】:

    在 cassandra 版本 1.1.0 到 1.1.4 中未正确刷新提交日志 这是一个未解决的问题。请参考以下jira票。

    Commitlog not replayed after restart

    【讨论】:

      猜你喜欢
      • 2019-02-07
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      • 2016-05-26
      • 1970-01-01
      • 2015-09-10
      • 2015-05-14
      相关资源
      最近更新 更多