2016-03-17 17 views
4

我們在我們的盒子上安裝了DataStax Cassandra Community Server 3.0.2,獲得了幾個創建的密鑰空間,並將一些數據從我們的舊數據庫遷移到Cassandra(Aroudnd 10GB數據)。雖然這是遷移發生,但我們在這些表上創建了materialized views。在創建之後的幾分鐘(不確定確切的時間),我們得到了我們的服務(部署在2個數據中心體系結構中的〜2x3個節點上),並且絕對沒有任何日誌信息說明它停止的原因。之後,我們試圖啓動我們的服務,我們得到了以下錯誤在我們的日誌Cassandra異常緩存模式版本X與當前模式版本Y不匹配Y

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服務運行。

+1

我試圖通過cqlsh導入一個22GB的csv文件時遇到了同樣的問題。重新啓動後出現相同的錯誤消息。這方面的進展如何?編輯:我正在使用Cassandra 3.3 – WaeCo

+1

我最終重建了羣集。我無法修復,也沒有在網上找到任何好的資源。對不起,沒有太大的幫助! – Learner

+1

好吧,不完全是一個解決方案,但不是重建整個集羣,您可以刪除KeyCache-d.db和CommitLog-x-xxx.log。這將主要導致數據丟失。所以這只是暫時的修復,希望有人知道真正的解決方案並分享! – ken

回答

3

清除commitlog目錄並重新啓動它爲我做了。

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

遲了,但我希望它可以幫助任何卡住的人。

+0

刪除提交日誌文件也爲我解決了它。我猜測發生了數據庫模式更改,並且由於架構中的更改,提交日誌在重新啓動後無法應用。更改模式似乎會導致各種問題。如果可能,儘量避免。如果必須這樣做,則需要刷新所有節點上的提交日誌。 – Jacob

相關問題