2015-07-21 55 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>;