2015-07-21 77 views
1

我正在爲我的Cassandra 2.1.8羣集(2個現有節點,cassandra-01和cassandra-02,每個160 GB + 1個密鑰空間)添加一個節點(cassandra-03), http://docs.datastax.com/en/cassandra/2.1/cassandra/operations/ops_add_node_to_cluster_t.html。在階段#3(重新啓動每個節點之後),我意識到在我現有的節點(cassandra-01和cassandra-02)上,我的密鑰空間消失了,但數據仍在文件系統中。Cassandra密鑰空間消失導致數據丟失

nodetool status給出了預期的輸出(3個節點集羣),除了數據列(我預計在cassandra-01和cassandra-02上有160GB),我只有幾個KB。

我在步驟#4前進,並在cassandra-01上運行nodetool cleanup。它在幾秒鐘內工作,但我的密鑰空間仍然丟失。

我通過cqlsh重新創建了我的密鑰空間,希望cassandra能夠使用坐在文件系統上的數據,但沒有運氣。據我所知,在日誌上沒有什麼奇怪的東西。

如何獲取我的密鑰空間數據?

回答

1

我無法在我的新密鑰空間中使用SSTable文件(使用與原始文件名相同的名稱創建),因此我使用sstableloader工具將數據重新注入到我新創建的密鑰空間中(創建了所有表):

$ sudo mv /var/lib/cassandra/data/mykeyspace /otherlocation/mykeyspace 
$ sstableloader -d <host> -f /etc/cassandra/cassandra.yaml -v /otherlocation/mykeyspace/tablename-<token>;