我有一个键空间,其中填充了生成成本高昂的数据。我想在我的集群中复制两份此数据。我想最终得到两个键空间:让我们调用它们mydata
和mydatabackup
,它们都包含相同的数据(我不介意 Cassandra 时间戳是否不同)。
是否有捷径可寻?我能找到的最接近答案的方法是使用 sstable2json 和 json2sstable作为回应类似问题的建议?有没有更好的办法?
我有一个键空间,其中填充了生成成本高昂的数据。我想在我的集群中复制两份此数据。我想最终得到两个键空间:让我们调用它们mydata
和mydatabackup
,它们都包含相同的数据(我不介意 Cassandra 时间戳是否不同)。
是否有捷径可寻?我能找到的最接近答案的方法是使用 sstable2json 和 json2sstable作为回应类似问题的建议?有没有更好的办法?
“ 有没有更好的办法?”
所有 Cassandra 数据都存储在 data/ 文件夹中(检查cassandra.yaml中的配置值data_file_directories)。您还可以检查saved_caches_directory和commitlog_directory配置。
在数据文件夹中,您将拥有
每个键空间一个文件夹
一个系统键空间文件夹
一些用于身份验证等的文件夹。
在每个键空间文件夹中,您将拥有
*-Data.db 文件,其中包含您的真实数据
*-Filter.db 文件
*-Index.db 索引文件
...
要复制数据,您可以复制这些文件夹的普通副本。
在我们的团队中,操作人员使用 crontab 以这种方式安排 Cassandra 数据的定期备份。
注意:有时,您可能会错过仍在内存或 memtable 中且尚未刷新到磁盘的实时数据。您可以在备份数据文件之前触发完全压缩。但是完全压实可能会伤害你的性能,所以要小心
更好的答案:使用提供的工具为您的数据库拍摄快照: