1

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

我在 Windows Server 上将 cassandra 1.1 作为服务运行。db 接收来自 ac# 应用程序的数据。脚本终止并重新启动了 cassandra 服务。在那之后,过去 20 小时左右的所有数据都消失了。旧数据仍然存在。

有问题的数据可能根本没有写入磁盘。但是,数据库在有问题的 20 小时内正确回答了查询,因此数据必须至少在内存中。

除了存储位置等之外,该配置与默认配置相同。刷新策略是

commitlog_sync: periodic 
commitlog_sync_period_in_ms: 10000

感谢任何提示,包括尝试什么以及在日志文件或配置中查找什么。

编辑:经过更多试验后,我现在可以重现以下内容:

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

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

4

2 回答 2

3

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

于 2012-12-23T18:18:51.820 回答
0

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

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

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

于 2012-12-23T15:01:03.560 回答