Cassandra Commitlog存档将始终丢失最新的Commitlog?

Cassandra Commitlog存档将始终丢失最新的Commitlog?,cassandra,cassandra-2.0,Cassandra,Cassandra 2.0,大家 我正在运行cassandra2.2.8,并已将commitlog archive配置为自动运行 commitlog_archiving.properties: archive_command=/bin/cp %path /data1/backup/%name 但我注意到它总是复制已旋转的文件,而不是当前正在工作的commitlog。例如,我有一个commitlog文件commitlog-5-1533697321883.log正在工作,当它旋转到另一个文件commitlog-5-15336

大家

我正在运行cassandra2.2.8,并已将commitlog archive配置为自动运行

commitlog_archiving.properties:

archive_command=/bin/cp %path /data1/backup/%name
但我注意到它总是复制已旋转的文件,而不是当前正在工作的commitlog。例如,我有一个commitlog文件commitlog-5-1533697321883.log正在工作,当它旋转到另一个文件commitlog-5-1533697321884.log后,commitlog-5-1533697321883.log文件将被归档,现在所有会话都将转到commitlog-5-1533697321884.log文件,但它根本没有备份,将在灾难恢复中丢失


我的问题是,这是设计的行为吗?我能做些什么来改善这种情况?或者cassandra 3是否有任何改进?

是的,这是设计行为-当前提交日志设计不完整-这就是为什么您可以访问存档的提交日志。(好吧,这对大多数数据库都是一样的)


如果您的数据是关键的,您可能需要考虑一致性级别的调整。

也是一个问题,当前的提交日志可以用来恢复数据吗?我想每分钟备份一次当前的提交日志,因为我注意到提交日志有时会在20分钟后轮换,这意味着我将在灾难中丢失20分钟的事务。如果对打开的文件执行此操作,我不确定它是否完整。。。提交日志是根据memtable被刷新的事实进行旋转的,因此您可以对此进行调整。但在您的情况下,我建议改为调整写入一致性级别,并修复来自其他节点的数据