Cassandra:无法从数据目录读取键空间

Cassandra: Unable to read keyspace from data directory

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

有没有人遇到过类似的问题?此外,仅从数据文件恢复密钥space 的指针将有很大帮助(因为缺乏快照维护)。

PS:进一步分析发现,对cassandra数据目录发出了rm命令,但立即取消。大部分数据好像都到位了,不过有可能Data.db文件systemkeyspace 丢失了。有没有办法从这种状态中恢复?

似乎您通过删除系统密钥空间文件破坏了您的设置,因此 Cassandra 可能不会在启动时检查相同的内容。

试试这个:

  1. 再次下载相同版本的cassandra。

  2. 创建您的键空间和 cf 模式

  3. 将剩下的所有旧数据移动到新数据目录(cassandra 只会加载未损坏的数据)-

sudo mv /data/cassandra_old/data/[keyspace]/[cf]-[md5-old]/* /data/cassandra_new/data/[keyspace]/[cf]-[md5-new]/

如果我理解正确应该可以解决问题