快照将根据Cassandra中的ttl expired或ttl expired表保留数据

kqlmhetl  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(447)

我在这里有一个场景,我插入了ttl值为5天的数据,所以在插入的行的ttl值过期后5天应该删除它。我每天定期拍摄我的cassandra节点的快照,所以我的问题如下below:-
1) 快照是否会包含过期的插入数据,并在需要时对还原有用?或者在ttl过期后自动删除所有插入的行?
2) 压缩是否发生在快照文件夹中的sstables上?
提前谢谢!

sqyvllje

sqyvllje1#

ttl保证在过期日期之后,读取过期数据不会返回任何结果。在磁盘上有文件的情况下,实现这一点的方法是,旧数据保留在磁盘上,在一些旧的sstable中,当scylla读取它时,它会注意到这些数据已经过了过期日期,并且不会返回它。直到后来,当“锡拉”决定压缩包含过期数据的sstable时,它才真正从磁盘中删除这些旧数据(有时还需要用删除标记、墓碑来替换这些数据—这些细节与您的问题无关)。
所以你的问题的答案是:
答案取决于您所说的“对恢复有用”是什么意思。快照包含现有sstables的逐字副本,过期前的旧快照(或者,如上所述,过期后的一段时间)也确实包含过期的数据。此快照可以“还原”到实时数据库,但即使过期的数据仍然存在,从中读取也不会返回它-因为这是过期日期的要求。。。
不可以。快照存储实时数据库中存在的sstables的逐字副本。压缩只发生在实时数据库上—快照中的sstables在保存后不会被触及。
如果我正确地理解了您的目标,那么您正在寻找一种方法来“复活”已经过期的数据,方法是从过期之前包含此数据的旧快照中读取数据。据我所知,锡拉和Cassandra都没有提供这样做的官方机制。实现这一点的一种方法是将旧快照恢复到新集群,并将其时钟设置为过期日期之前的日期。然后,当读取旧数据时,它将不会被视为过期。

相关问题