5

我尝试在我的 Ubuntu 13.04 上安装 Cassandra 2.0,但是当我尝试启动它时出现此错误:

java.lang.UnsupportedOperationException: Commitlog segment is too old to open; upgrade to 1.2.5+ first
    at org.apache.cassandra.db.commitlog.CommitLogDescriptor.fromFileName(CommitLogDescriptor.java:65)
    at org.apache.cassandra.db.commitlog.CommitLogSegment$CommitLogSegmentFileComparator.compare(CommitLogSegment.java:391)
    at org.apache.cassandra.db.commitlog.CommitLogSegment$CommitLogSegmentFileComparator.compare(CommitLogSegment.java:386)
    at java.util.TimSort.countRunAndMakeAscending(TimSort.java:324)
    at java.util.TimSort.sort(TimSort.java:189)
    at java.util.TimSort.sort(TimSort.java:173)
    at java.util.Arrays.sort(Arrays.java:659)
    at org.apache.cassandra.db.commitlog.CommitLog.recover(CommitLog.java:124)
    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:300)
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:443)
at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:486)

有谁能够帮我?

4

2 回答 2

4

我将稍微扩展一下@aurand 所说的内容,这里是如何将 Cassandra 从 0.x 或 1.1.x 升级到 2.x

首先升级到1.2.9 apt-get install cassandra=1.2.9

然后运行nodetool upgradesstables(你必须否则会发生一些意想不到的事情),按照这个过程nodetool compactionstats(甚至更好watch -n 2 nodetool compactionstats)它可能需要几天,具体取决于你的数据。

最后升级到最新版本apt-get install cassandranodetool upgradesstables再次运行。然后你就完成了。

注意:nodetool upgradesstables您可以使用nodetool scrub不是,但似乎建议您使用upgradesstables

于 2013-09-19T16:55:15.080 回答
2

我在 Ubuntu 14.04 上遇到了完全相同的问题,我能够通过完全删除 /var/lib/cassandra 来解决它,正如 user2278196 在他原始问题的评论中所建议的那样。

请注意:我是在一个相当干净的系统上执行此操作的,所以我完全确定我不会丢失任何信息。

我认为您无法在具有实际数据的机器上执行此操作而不会丢失数据。当心!

于 2014-07-20T14:28:36.287 回答