时间点恢复和提交日志-Cassandra

时间点恢复和提交日志-Cassandra,cassandra,Cassandra,我从cassandra开始,我需要为它设置时间点恢复。我已激活提交日志,但备份文件夹中只显示存档的提交日志,当前的提交日志将实时更新。因此,如果节点崩溃,当我从存档的commitlog还原时,如何才能获得未在存档日志中的最后一个日志 当我使用nodetool flush时,增量备份会被更新,但commitlog不会被归档当写入到Cassandra节点时,它首先进入提交日志(磁盘),然后进入memtable(内存) 根据某些条件(大小…),memtables会定期刷新到磁盘,并成为SSTables

我从cassandra开始,我需要为它设置时间点恢复。我已激活提交日志,但备份文件夹中只显示存档的提交日志,当前的提交日志将实时更新。因此,如果节点崩溃,当我从存档的commitlog还原时,如何才能获得未在存档日志中的最后一个日志


当我使用nodetool flush时,增量备份会被更新,但commitlog不会被归档

当写入到Cassandra节点时,它首先进入提交日志(磁盘),然后进入memtable(内存)

根据某些条件(大小…),memtables会定期刷新到磁盘,并成为SSTables

提交日志用于在节点崩溃时重播内存中未刷新到磁盘的数据。因此,当内存中的数据刷新到磁盘时,相应的提交日志将被清除

因此,如果使用nodetool刷新,memtables中的数据将刷新到磁盘到sstable,不再需要提交日志

如果节点崩溃,您不必执行任何恢复,当它重新启动时,它将重播提交日志中包含的变化:如果没有将任何数据刷新到磁盘,提交日志将不会为空

恢复和备份更多地通过快照、nodetool snapshot和commit log进行处理,从保存点进行恢复并不常见,更合适的用法是在节点崩溃且数据未写入磁盘时使用

如果要执行以下操作,还可以激活存档提交日志:

您可以在此处找到有关Cassandra备份的更多详细信息:

如果您想查看Cassandra中的写入路径,它将使您更好地了解数据的写入方式:


谢谢你的帮助。但是,如果我理解正确,当Cassandra在服务器崩溃后重新启动时,它将重播未存档的提交,因为它们位于“commitlog”文件夹中。但是,如果我重新启动服务器时,所有内容都是空的,我将无法访问当前的commitlog,对吗?因此,在崩溃+清理的情况下,我找不到最后的操作?我在答案中添加了更多细节,如果您还有任何问题,请告诉我。如果您重新启动服务器,并且提交目录为空,则表示所有数据都已刷新,否则您将遇到另一个问题。感谢您提供的详细信息,我认为我的另一个问题是:如果我的VM重新启动并清除,我将丢失此提交日志,所以我需要备份当前提交日志和归档的提交日志?如果只有VM崩溃,你不会丢失它,如果VM崩溃,你丢失提交日志目录,那么是的,你会丢失它。但这种情况很少发生,而且您只会丢失未刷新到磁盘的写入。