9

我有一个键空间,其中填充了生成成本高昂的数据。我想在我的集群中复制两份此数据。我想最终得到两个键空间:让我们调用它们mydatamydatabackup,它们都包含相同的数据(我不介意 Cassandra 时间戳是否不同)。

是否有捷径可寻?我能找到的最接近答案的方法是使用 sstable2json 和 json2sstable作为回应类似问题的建议?有没有更好的办法?

4

1 回答 1

7

“ 有没有更好的办法?”

所有 Cassandra 数据都存储在 data/ 文件夹中(检查cassandra.yaml中的配置值data_file_directories)。您还可以检查saved_caches_directorycommitlog_directory配置。

在数据文件夹中,您将拥有

  1. 每个键空间一个文件夹

  2. 一个系统键空间文件夹

  3. 一些用于身份验证等的文件夹。

    在每个键空间文件夹中,您将拥有

  4. *-Data.db 文件,其中包含您的真实数据

  5. *-Filter.db 文件

  6. *-Index.db 索引文件

  7. ...

要复制数据,您可以复制这些文件夹的普通副本

在我们的团队中,操作人员使用 crontab 以这种方式安排 Cassandra 数据的定期备份。

注意:有时,您可能会错过仍在内存或 memtable 中且尚未刷新到磁盘的实时数据。您可以在备份数据文件之前触发完全压缩。但是完全压实可能会伤害你的性能,所以要小心


更好的答案:使用提供的工具为您的数据库拍摄快照:

http://www.datastax.com/docs/1.0/operations/backup_restore

于 2013-09-13T19:02:47.157 回答