我们在我们的盒子上安装了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服务运行。
清除commitlog目录并重新启动它为我做了。
rm -rf /path/to/cassandra/data/commitlog
迟到但我希望它可以帮助任何被困的人。
缓存架构版本......
清除saved_caches
目录而不是commit_log
目录。删除commit_logs很危险。如果您的节点意外崩溃且您的可记忆数据未刷新,Commit logs可以节省时间并防止数据丢失。