我的cassandra数据库刚丢失了大部分数据。它只是测试数据,但我仍然需要了解发生了什么,并确保它不会发生在真实数据中。
我在Windows Server上运行cassandra 1.1作为服务。数据库由c#应用程序提供数据。脚本终止并重新启动cassandra服务。之后,过去20个小时左右的所有数据都消失了。旧数据仍在那里。
有问题的数据可能根本没有写入光盘。但是,db在所讨论的20h内正确回答了查询,因此数据必须至少在内存中。
配置与默认配置相同,但存储位置等除外。刷新策略为
commitlog_sync: periodic
commitlog_sync_period_in_ms: 10000
我们非常感谢任何提示,包括在日志文件或配置中尝试以及查找的内容。
修改:再尝试一下后,我现在可以重现以下内容:
Edit2:从一个新的空数据库开始,现在一切正常(当然配置相同)。使用我破碎的数据库的备份,我可以再次重现上面的问题。我在cassandra中发现了一个错误吗?显然我的数据库处于一种状态,其中提交日志未写入或未正确重放。
答案 0 :(得分:3)
“新的突变没有被重播,但旧的突变仍然存在”听起来像https://issues.apache.org/jira/browse/CASSANDRA-4782,其在1.1.6中得到修复。最新的1.1版本是1.1.8;你应该升级到那个。
答案 1 :(得分:0)
我会查看数据目录,并想知道它们是否正确设置。它们是否存在正确?他们可写吗?与你工作的数据库比较。请注意,在您进行节点工具修复之前,其中一个目录不会被写入。
我的猜测是cass纯粹是从内存中工作,因为它无法写入。
它应该为每次更新写一条日志记录。