2017-08-07 96 views
2

我们正在运行多个运行Cassandra的Kubernetes群集。 我们通常的做法是在进行Cassandra pod的滚动重新启动时登录每个并提交nodetool drain,然后触发该pod的重新创建。但经常当豆荚重新启动时,我们得到如下错误:为什么我的Cassandra提示文件不断被破坏

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刷新所有缓冲区,并在停止之前停止写入,以确保没有损坏的文件被遗留?

+0

包括C *版本请 –

回答

2

你可以尝试禁用暗示切换,或尝试后沥干截断提示:

nodetool truncatehints

如果你关心的一致性,处理后进行修复。

警告:如果您正在使用任何一致性设置或RF = 1,这可能会导致一些数据丢失。

+0

有可能出现这种情况,这可能会导致不一致或在某些最坏的情况下数据丢失, –

+1

您对错误是正确的。关于数据丢失首先取决于一致性设置以及群集的处理方式。如果在rf> = 3的法定运行中运行,并且在排空节点的情况下执行滚动重新启动,则数据丢失几乎是不可能的。其次,在运行集群数据丢失时,由于禁用了hinted handoff,只有在使用“ANY”一致性时才可能发生数据丢失推荐与Cassandra合作的方式。 – nevsv

+0

你的权利,它不应该,但不知道他们的版本/用例是最坏的情况下可能的。删除诸如提示和提交日志之类的东西应该通过个别用例进行彻底的思考。我想听到他们使用的版本,但升级修复(https://issues.apache.org/jira/browse/CASSANDRA-12728)_may_会更安全。 –

相关问题