卡珊德拉停了下来。 当我使用" service cassandra start"重新启动Cassandra时或者" service cassandra restart",我收到以下错误(来自" /var/log/cassandra/system.log"):
ERROR [main] 2014-11-14 02:08:52,379 CommitLogReplayer.java (line 304) Unexpected error deserializing mutation; saved to /tmp/mutation3145492124947244713dat and ignored. This may be caused by replaying a mutation against a table with the same name but incompatible schema. Exception follows:
org.apache.cassandra.serializers.MarshalException: Expected 8 or 0 byte long for date (7)
at org.apache.cassandra.serializers.TimestampSerializer.validate(TimestampSerializer.java:118)
at org.apache.cassandra.db.marshal.AbstractType.validate(AbstractType.java:171)
at org.apache.cassandra.db.marshal.AbstractType.validateCollectionMember(AbstractType.java:289)
at org.apache.cassandra.db.marshal.AbstractCompositeType.validate(AbstractCompositeType.java:282)
at org.apache.cassandra.db.commitlog.CommitLogReplayer.recover(CommitLogReplayer.java:274)
at org.apache.cassandra.db.commitlog.CommitLogReplayer.recover(CommitLogReplayer.java:95)
at org.apache.cassandra.db.commitlog.CommitLog.recover(CommitLog.java:151)
at org.apache.cassandra.db.commitlog.CommitLog.recover(CommitLog.java:131)
at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:336)
at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:496)
at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:585)
现在我无法启动cassandra。 cqlsh也不可用。
答案 0 :(得分:5)
我也遇到过这个问题。我想分享一下我如何解决问题。
更改调试模式
默认调试模式是INFO,输出太小而无法跟踪错误。您应该将调试模式从INFO更改为DEBUG。这由log4j-server.properties文件中的以下行确定:
log4j.rootLogger = INFO,标准输出,R
重新运行cassandra
从输出中,我发现重放提交日志文件时出现错误。我认为日志文件中有问题。但是日志文件是二进制文件,我不知道如何阅读它。所以我尝试删除导致错误的日志文件,然后重新启动cassandra。它有效!
也许根本问题与我的不同,但您可以尝试以这种方式找到它。希望这可以提供帮助。