我应该如何复制群集中的密钥空间

时间:2013-09-13 16:19:02

标签: cassandra

我的密钥空间中填充了生成成本很高的数据。我希望在我的集群中有两个这样的数据副本。我想最终得到两个键空间:让我们调用它们mydatamydatabackup,它们都包含相同的数据(我不介意Cassandra时间戳是否不同)。

有一种简单的方法吗?我能找到答案的最近的事情是使用sstable2json和json2sstable as suggested in response to a similar question?还有更好的方法吗?

1 个答案:

答案 0 :(得分:7)

“有更好的方法吗?”

所有Cassandra数据都存储在数据/文件夹中(请在 cassandra.yaml 中查看配置值 data_file_directories )。您还可以查看 saved_caches_directory commitlog_directory 配置。

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

  1. 每个密钥空间一个文件夹
  2. 系统密钥空间的一个文件夹
  3. 一些用于身份验证的文件夹等。

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

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

  5. * - Filter.db文件
  6. * - 索引
  7. 的Index.db文件
  8. ...
  9. 要复制数据,请执行这些文件夹的纯文本复制

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

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


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

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