我的应用程序有单节点Cassandra设置。为了回收已删除记录(逻辑删除记录)占用的磁盘空间,我为我的密钥空间触发了 nodetool compact 。不幸的是,这个压缩过程中断了。现在,当我尝试重新启动服务时,它无法识别密钥空间(来自cassandra.yaml中配置的数据目录),当它被中断时正在进行压缩。其他键空间(如system和system_traces)已从同一数据目录成功启动。
以前有人遇到过类似的问题吗?此外,仅从数据文件恢复密钥空间的指针将非常有用(因为缺少快照维护)。
PS:经过进一步分析,发现cassandra数据目录上的 rm 命令已发出,但立即取消。大多数数据似乎都已到位,但 system 密钥空间的 Data.db 文件有可能丢失。有没有办法从这种状态恢复?
答案 0 :(得分:0)
通过删除系统密钥空间文件似乎已损坏您的设置,因此Cassandra可能在启动时不会检查相同内容。
试试这个:
再次下载相同版本的cassandra。
创建密钥空间& cf schemas
将剩下的旧数据移动到新数据目录(cassandra只会加载未损坏的数据) -
sudo mv / data / cassandra_old / data / [keyspace] / [cf] - [md5-old] / * / data / cassandra_new / data / [keyspace] / [cf] - [md5-new] /
如果我正确理解了问题,它应该解决它。