2016-08-22 129 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