Cassandra 卡在 Initializing IndexInfo 上

Cassandra gets stuck on Initializing IndexInfo

我在 CentOS 机器上使用 Cassandra。前段时间失败后,我通过重新启动它 sudo service cassandra restart 并开始在各处出现“连接被拒绝”错误——如果不运行解决这个问题,我什至运行nodetool status都无法做到。

经过一些挖掘和随后的重新启动,我在 debug.log 中注意到启动序列卡在以下位置:

INFO [main] 2018-04-03 09:40:15,156 ColumnFamilyStore.java:389 - Initializing system.IndexInfo INFO [SSTableBatchOpen:1] 2018-04-03 09:40:15,851 BufferPool.java:226 - Global buffer pool is enabled, when pool is exahusted (max is 512 mb) it will allocate on heap DEBUG [SSTableBatchOpen:1] 2018-04-03 09:40:15,873 SSTableReader.java:479 - Opening <path>/IndexInfo-9f5c6374d48532299a0a5094af9ad1e3/mc-300-big (58 bytes) DEBUG [SSTableBatchOpen:2] 2018-04-03 09:40:15,873 SSTableReader.java:479 - Opening <path>3/system/IndexInfo-9f5c6374d48532299a0a5094af9ad1e3/mc-301-big (59 bytes) DEBUG [SSTableBatchOpen:3] 2018-04-03 09:40:15,873 SSTableReader.java:479 - Opening <path>/IndexInfo-9f5c6374d48532299a0a5094af9ad1e3/mc-299-big (302 bytes)

打开这些文件大约需要一秒钟 - 它已经停留了很长时间(因为,它从未超过这一点)。我怀疑涉及的某些文件一定已损坏(尽管令我惊讶的是 Java 在这里没有捕获某种异常)。

我该怎么办?如果我删除这些文件夹,会导致我丢失数据吗?我可以 运行 确定问题的根源还有哪些其他诊断?作为记录,任何类型的 nodetool 命令都会以 "Connection Refused" 错误退出。

版本号: 卡桑德拉:3.0.9 Java: 1.8.0_162 中央操作系统:6.9

感谢帮助!

事实证明,问题在于涉及的文件已损坏 - 运行 touch 数据文件夹中的所有文件(Data, CompressionInfo, Index 等)并擦除post-crash 提交日志允许 Cassandra 启动。几百个数据行丢失了(可能是因为我删除了提交日志),但至少数据库已经备份了!