Cassandra:备份整个密钥空间

sia*_*one 15 backup cassandra

我只是想知道在Cassandra中备份整个键空间的最佳方法是什么......你怎么看?

以前我只是将数据文件夹复制到我的备份硬盘中,但是在更新后我遇到了恢复数据库的问题.

the*_*aul 13

最好的方法是做快照(nodetool snapshot).您可以在此Datastax文档中了解有关其工作原理以及如何最好地使用它的信息(免责声明:我为Datastax工作).

您需要确保已启用JNA(可在此页面上找到一些相关说明).如果你这样做,快照非常快; 它们只是现有sstables的硬链接.不需要复制.如果要以特定方式跟踪备份,可以将快照与其他备份工具(或仅rsync,cp等)组合在一起.

  • 这似乎是一个糟糕的设计.我被迫找到当前版本的表tablename-asdfasfsadfaf >>更改到该目录>>将快照文件复制出来..然后执行50次,因为我必须为每个表执行一次.应该有一种方法可以将所有文件快照到一个输出目录或单个备份文件.你能做的最好就是编写一些脚本来提取所有文件. (6认同)

Tom*_*gli 7

我写了一个简单的python工具来自动化集群快照和备份并将它们存储在S3上.

https://github.com/tbarbugli/cassandra_snapshotter是github页面,在那里你也可以找到文档


Phi*_*ßen 6

除了阅读Datastax文档之外,我发现文章"使用amanda逐步备份cassandra"具有洞察力.它是关于如何使用增量备份和快照.

最后,它建议采用以下程序:

  1. 完全备份
    • 删除旧的增量文件和符号链接.
    • nodetool snapshot
    • 将所有快照文件符号链接到备份目录
    • 备份该目录解除引用符号链接.
    • nodetool clearsnapshot 并删除符号链接.
  2. 增量备份(不要与cassandra的内置增量备份混淆):
    • nodetool flush
    • 将所有增量文件符号链接到备份目录中.
    • 备份该目录解除引用符号链接.
  3. 恢复
    • 恢复上次完整备份和所有增量备份.