Docker中Cassandra容器启动失败:CommitLogReadException错误求助
Docker中Cassandra启动失败:CommitLog读取错误修复方案
错误信息
JVMStabilityInspector.java:196 - Exiting due to error while processing commit log during initialization. org.apache.cassandra.db.commitlog.CommitLogReadHandler$CommitLogReadException: \ Could not read commit log descriptor in file /opt/cassandra/data/commitlog/CommitLog-7-1676434400779.log
方案可行性说明
损坏的CommitLog文件会直接阻断Cassandra初始化流程,删除该文件是有效的修复手段:
- 代价是丢失该日志中尚未持久化到SSTable的临时数据
- 若为单节点实例,这部分数据无法恢复;若为集群,后续可通过
nodetool repair同步其他节点的完整数据
Docker操作步骤
场景1:使用Docker数据卷存储Cassandra数据
- 创建临时容器挂载目标数据卷,进入交互终端:
docker run -it --rm -v <你的Cassandra数据卷名称>:/opt/cassandra/data alpine sh
- 在临时容器内删除损坏的日志文件:
rm /opt/cassandra/data/commitlog/CommitLog-7-1676434400779.log
- 退出临时容器,重新启动Cassandra容器即可。
场景2:使用宿主机绑定挂载目录
直接在宿主机找到对应挂载路径(即启动容器时-v /本地目录:/opt/cassandra/data中的/本地目录),执行删除命令:
rm /本地目录/commitlog/CommitLog-7-1676434400779.log
之后重启Cassandra容器。
启动后验证
容器启动成功后,执行以下命令检查节点状态:
docker exec <Cassandra容器名/ID> nodetool status
内容的提问来源于stack exchange,提问作者happy
相关产品推荐
相关产品推荐

