卡桑德拉数据丢失

时间:2012-12-22 17:42:22

标签: cassandra

我的cassandra数据库刚丢失了大部分数据。它只是测试数据,但我仍然需要了解发生了什么,并确保它不会发生在真实数据中。

我在Windows Server上运行cassandra 1.1作为服务。数据库由c#应用程序提供数据。脚本终止并重新启动cassandra服务。之后,过去20个小时左右的所有数据都消失了。旧数据仍在那里。

有问题的数据可能根本没有写入光盘。但是,db在所讨论的20h内正确回答了查询,因此数据必须至少在内存中。

配置与默认配置相同,但存储位置等除外。刷新策略为

commitlog_sync: periodic 
commitlog_sync_period_in_ms: 10000

我们非常感谢任何提示,包括在日志文件或配置中尝试以及查找的内容。

修改:再尝试一下后,我现在可以重现以下内容:

  • 插入新数据 - 确定
  • 查询新数据 - 确定
  • 停止并重新启动数据库 - 所有新数据现已消失:((旧数据仍然存在)
  • 日志文件中没有任何内容,只是“日志重播完成,0重播突变”

Edit2:从一个新的空数据库开始,现在一切正常(当然配置相同)。使用我破碎的数据库的备份,我可以再次重现上面的问题。我在cassandra中发现了一个错误吗?显然我的数据库处于一种状态,其中提交日志未写入或未正确重放。

2 个答案:

答案 0 :(得分:3)

“新的突变没有被重播,但旧的突变仍然存在”听起来像https://issues.apache.org/jira/browse/CASSANDRA-4782,其在1.1.6中得到修复。最新的1.1版本是1.1.8;你应该升级到那个。

答案 1 :(得分:0)

我会查看数据目录,并想知道它们是否正确设置。它们是否存在正确?他们可写吗?与你工作的数据库比较。请注意,在您进行节点工具修复之前,其中一个目录不会被写入。

我的猜测是cass纯粹是从内存中工作,因为它无法写入。

它应该为每次更新写一条日志记录。