2017-03-26 27 views
1

我的应用程序有一个单节点Cassandra安装程序。要回收已删除记录(逻辑删除记录)占用的磁盘空间,我为我的密钥空间触发了一个nodetool compact。不幸的是,这个压实过程被打断了。现在,当我尝试重新启动该服务时,它无法识别中断时正在进行压缩的键空间(来自cassandra.yaml中配置的数据目录)。其他密钥空间如system和system_traces是从同一个数据目录成功启动的。Cassandra:无法从数据目录中读取keyspace

有没有人遇到过类似的问题?而且,仅从数据文件中恢复密钥空间的指针会非常有帮助(缺少维护快照)。

PS:进一步分析发现,cassandra数据目录上的rm命令已发出,但立即取消。大部分数据似乎已经就位,但是有可能丢失了键空间的文件。有没有办法从这个状态中恢复?

回答

0

好像你已经通过删除系统密钥空间文件来破坏你的设置,因此Cassandra可能在启动时没有检查相同的内容。再次卡桑德拉

  1. 下载版本相同:

    试试这个。

  2. 创建密钥空间& CF模式

  3. 移动任何旧数据是留给新的数据目录(卡桑德拉只会加载未损坏数据) -

须藤MV /数据/ cassandra_old/data/[keyspace]/[cf] - [md5-old]/*/data/cassandra_new/data/[keyspace]/[cf] - [md5-new]/

它应该解决它,正确理解问题。

+0

非常感谢。有效! –