重新启动Cassandra节点时,花费大量时间来重放commitlog以实现一致性。在我们的应用程序中,更重要的是使节点恢复运行并快速运行,而不是实现一致性。因此,我们在所有手动创建的键空间上设置了“durable_writes = false”以禁用commitlog。 (我们没有触及系统键空间)。然而,当我们重新启动一个音符时,它仍然会在重播提交日志时使用大约一个小时。
我的提交日志中还剩下什么?
我可以以任何方式调查提交日志的内容吗?
如何关闭提交日志(如果不是durable_writes = false)?
答案 0 :(得分:2)
耐久性写入是按键空间设置的,因此如果仍然启用了任何键空间,则在启动时仍会在提交日志中发生突变以进行重放。您可能想要走describe schema
的输出。
有些表(即系统)要保持持久性,但它不应该对启动产生影响。启动时,它会记录其读取的键空间/表格,以便您可以检查哪些键盘空间/表格重放。
一个小时是很长的一段时间,并且有一定的气味,这里可能还有其他东西,可能值得进一步调查。一些想法是检查日志并确保它是花费时间的commitlog重放(不是重建索引摘要或其他东西)。还要检查是否存在C *没有删除权限的旧提交日志或者可能存在的问题。
答案 1 :(得分:0)
在关闭节点之前执行'nodetool drain'。这会将所有提交日志写入sstables。