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

lor*_*can 9 cassandra

我有一个密钥空间填充了生成成本高昂的数据.我希望在我的集群中有两个这样的数据副本.我想有两个keyspaces落得:让叫他们mydata和mydatabackup,都含有相同的数据(我不介意卡桑德拉时间戳不同).

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

doa*_*hai 7

" 有没有更好的办法?"

所有卡桑德拉数据被存储在数据/文件夹(检查配置值data_file_directories在cassandra.yaml).您还可以检查saved_caches_directory和commitlog_directory配置.

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

  1. 每个键空间一个文件夹
  2. 系统密钥空间的一个文件夹
  3. 一些文件夹用于认证等..

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

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

  5. *-Filter.db文件
  6. *-index.db索引文件
  7. ...

要复制数据,请执行这些文件夹的纯文本复制.

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

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


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

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

  • 您可以只运行`nodetool flush`来确保将memtables刷新到磁盘,而不是进行完全压缩. (3认同)