2016-08-22 87 views
2

这是我的第二次commitlog损坏,服务器拒绝启动。令我担心的是即使没有更新数据库,我也会遇到这些错误问题。Cassandra commitlog如何被损坏?

我的配置说commitlog每10秒钟同步一次,所以如果文件在这10秒内发生崩溃,怎么会损坏?

这是一个卡桑德拉的错误?还是通过设计,即糟糕的设计?

我在Windows 10 Datastax安装程序上使用3.4。

在标准输出日志,最后一部分是

INFO 06:17:39 Replaying C:\Program Files\DataStax-DDC\data\commitlog\CommitLog-6-1471353812251.log, C:\Program Files\DataStax-DDC\data\commitlog\CommitLog-6-1471353812252.log, C:\Program Files\DataStax-DDC\data\commitlog\CommitLog-6-1471411951134.log, C:\Program Files\DataStax-DDC\data\commitlog\CommitLog-6-1471454506802.log, C:\Program Files\DataStax-DDC\data\commitlog\CommitLog-6-1471532812678.log 
ERROR 06:17:39 Exiting due to error while processing commit log during initialization. 
org.apache.cassandra.db.commitlog.CommitLogReplayer$CommitLogReplayException: Could not read commit log descriptor in file C:\Program Files\DataStax-DDC\data\commitlog\CommitLog-6-1471353812252.log 
    at org.apache.cassandra.db.commitlog.CommitLogReplayer.handleReplayError(CommitLogReplayer.java:611) [apache-cassandra-3.4.0.jar:3.4.0] 
    at org.apache.cassandra.db.commitlog.CommitLogReplayer.recover(CommitLogReplayer.java:373) [apache-cassandra-3.4.0.jar:3.4.0] 
    at org.apache.cassandra.db.commitlog.CommitLogReplayer.recover(CommitLogReplayer.java:236) [apache-cassandra-3.4.0.jar:3.4.0] 
    at org.apache.cassandra.db.commitlog.CommitLog.recover(CommitLog.java:192) [apache-cassandra-3.4.0.jar:3.4.0] 
    at org.apache.cassandra.db.commitlog.CommitLog.recover(CommitLog.java:172) [apache-cassandra-3.4.0.jar:3.4.0] 
    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:283) [apache-cassandra-3.4.0.jar:3.4.0] 
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:551) [apache-cassandra-3.4.0.jar:3.4.0] 
    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:680) [apache-cassandra-3.4.0.jar:3.4.0] 
+0

嗨,你能够调试这个问题。我们正面临同样的错误。我知道它的一个老问题。但是你能修复它吗? –

+0

不,我在卡桑德拉杰拉没有得到任何答案。我认为他们希望我使用简单的cassandra版本,而不是datastax。我计划在接近部署时这样做。 – mattias

+1

最有可能的是,这是同样的问题,因为这个https://issues.apache.org/jira/browse/CASSANDRA-11995,这是固定在卡桑德拉3.11 – mattias

回答

0

我已经看到了类似的错误。发生这种情况时,卡桑德拉进程得到开发可能是由于OOM。运行“dmesg”并检查它是否因OOM而死亡。在这种情况下,它有可能写入的提交日志已损坏或其0kb文件(检查上述文件的错误大小),并且当Cassandra重新启动时它会引发上述错误并重播该文件。

+0

我有0kb提交日志,我无法删除它。我如何解决这个问题 –

+0

正如我所提到的,当你的Cassandra被OS OOM杀手杀死时会发生这种情况。运行“dmesg”并检查它是否因OOM而死亡。要长期解决它,你应该确保调整堆内存设置。这表明你的过程是OOM。有时候,删除和重新启动这些文件将会有所帮助,但并非总是如此,因为它会再次重新创建这些0kb文件 – Hemalatha