Cassandra快照与压缩是否互斥?压缩后快照是否有效可恢复?
Cassandra压缩后快照是否仍有效?
结论很明确:之前创建的快照完全有效,依然可以用于数据恢复操作。
原因要从硬链接的特性和Cassandra的压缩行为两方面拆解:
硬链接的本质:Cassandra快照是对现有SSTable文件创建硬链接,而非复制文件本身。硬链接是指向磁盘上文件inode的指针,只要还有至少一个硬链接存在,底层的文件数据就不会被删除。你提供的示例里,快照创建后原数据表目录和快照目录里的SSTable文件链接数都是2,说明两个目录的文件指向同一个inode。
压缩时的文件处理:全量压缩完成后,Cassandra会生成新的合并后的SSTable(示例里的nb-16系列),然后删除旧的SSTable——但这里的“删除”只是移除数据表目录下的硬链接,快照目录里的硬链接依然保留。旧SSTable的底层数据因为快照里的硬链接存在,不会被系统清理。
从你的操作示例也能验证:压缩后的数据表目录里已经看不到nb-15系列文件,但快照目录里的nb-15文件依然存在,这些文件包含了快照时刻的完整数据,加上快照里的schema.cql和manifest.json元数据,完全满足恢复要求。
恢复时,你可以直接将快照目录里的SSTable文件复制回对应的数据表目录,或者使用nodetool restore命令,就能恢复到快照时刻的状态。
内容的提问来源于stack exchange,提问作者Praveen B K
相关产品推荐
相关产品推荐

