Cassandra异常缓存架构版本X与当前架构版本Y

时间:2016-03-17 03:07:28

标签: windows datastax datastax-enterprise

我们的盒子上安装了DataStax Cassandra社区服务器3.0.2,创建了几个键空间,我们将一些数据从旧数据库迁移到Cassandra(Aroudnd 10GB数据)。虽然这就是迁移,但我们在这些表上创建了materialized views。在创建之后的几分钟(不确定到多长时间),我们获得了我们的服务(部署在2个数据中心架构中的~2x3节点上)随机停止,绝对没有关于它停止的原因的日志信息。之后我们尝试启动我们的服务,我们的日志中出现以下错误

java.lang.RuntimeException: Cache schema version a2c390a1-f2cd-3d59-8b5c-a0a1d794d0fe does not match current schema version 8d1347d7-7729-3698-8537-4b91ae9ce7dd
    at org.apache.cassandra.cache.AutoSavingCache.loadSaved(AutoSavingCache.java:198) ~[apache-cassandra-3.0.2.jar:3.0.2]
    at org.apache.cassandra.cache.AutoSavingCache$3.call(AutoSavingCache.java:157) [apache-cassandra-3.0.2.jar:3.0.2]
    at org.apache.cassandra.cache.AutoSavingCache$3.call(AutoSavingCache.java:153) [apache-cassandra-3.0.2.jar:3.0.2]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_66]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_66]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_66]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_66] 

我们试图查看可能导致此删除的代码。这给了我们一些关于它的原因的信息 - 显然服务试图将当前模式版本与缓存中存在的模式匹配(我会假设它在服务停止/创建物化视图之前) 我们非常确定除了创建物化视图之外,我们没有对键空间进行任何模式更改。

那么是什么让我想知道过去没有人报告任何类型的问题?所以我们不确定自己出了什么问题。我们在节点上运行了nodetool cleanup,没有任何帮助。我们不想丢失任何数据。我们正在尝试恢复,因此我们删除了$CASSANDRA_HOME\data\saved_caches文件夹并重新启动了服务。启动服务器时,它正在重播提交日志,这需要很长时间。我想这可能是由于我们拥有的数据量或机器完全消失而需要更换?

任何与此问题相关的指针可能都非常有用!先感谢您。

如果它有所帮助,我们在Windows机器上运行DataStax Cassandra Server并将Cassandra作为Windows服务运行。

2 个答案:

答案 0 :(得分:3)

清除commitlog目录并重新启动它为我做了。

rm -rf /path/to/cassandra/data/commitlog

迟到但我希望它可以帮助任何被困的人。

答案 1 :(得分:0)

缓存架构版本...

清除saved_caches目录 commit_log目录。删除commit_logs很危险。如果您的节点意外崩溃并且未刷新内存数据,Commit logs可以节省一天的时间并防止数据丢失。