我们正在运行多个运行 Cassandra 的 Kubernetes 集群。 在滚动重新启动 Cassandra Pod 时,我们通常的过程是登录每个 pod 并提交nodetool drain
然后触发该 Pod 的重新创建。但是通常当 pod 重新启动时,我们会收到这样的错误
ERROR [HintsDispatcher:2] 2017-08-07 11:09:32,489 HintsDispatchExecutor.java:243 - Failed to dispatch hints file 5fdd139d-4465-4825-85ef-f380bddcb67d-1502100535128-1.hints: file is corrupted ({})
这些损坏的文件会阻止Cassandra启动。有没有办法告诉 Cassandra 在停止之前刷新所有缓冲区并停止写入,以确保没有留下损坏的文件?
您可以尝试禁用提示切换,或尝试在排出后截断提示:
nodetool truncatehints
如果您关心一致性,请在该过程后运行修复。
警告:如果您使用的是任何一致性设置或 RF=1,这可能会导致一些数据丢失。