我只是想知道在Cassandra中备份整个键空间的最佳方法是什么......你怎么看?
以前我只是将数据文件夹复制到我的备份硬盘中,但是在更新后我遇到了恢复数据库的问题。
答案 0 :(得分:13)
最好的方法是拍摄快照(nodetool snapshot
)。您可以在Datastax documentation(免责声明:我为Datastax工作)中学到很多关于它如何工作以及如何最好地使用它的信息。
您需要确保已启用JNA(可在this page上找到一些相关说明)。如果你这样做,快照非常快;它们只是现有sstables的硬链接。不需要复制。如果要以特定方式跟踪备份,可以将快照与其他备份工具(或仅rsync,cp等)结合使用。
答案 1 :(得分:7)
我编写了一个简单的python工具来自动化群集快照和备份,并将它们存储在S3上。
https://github.com/tbarbugli/cassandra_snapshotter是github页面,在那里你也可以找到文档
答案 2 :(得分:6)
除了阅读Datastax documentation之外,我发现文章"incrementally backup up cassandra with amanda"具有洞察力。它是关于如何使用增量备份和快照的。
最后,它建议采用以下程序:
nodetool snapshot
nodetool clearsnapshot
并删除符号链接。nodetool flush
答案 3 :(得分:4)
另一个选择是监视正在写入的sstables,并逐步备份这些文件。
例如,查看tablesnap。
来自文档:
Tablesnap是一个脚本,它使用inotify来监视IN_MOVED_TO事件的目录,并通过生成一个新线程将该文件上传到Amazon S3来响应它们,以及JSON格式的列表,列出目录中的其他文件。复制的时间。
运行Cassandra集群时,此行为非常有用,因为它允许SSTables的自动时间点备份。从理论上讲,tablesnap应该适用于将文件写入某个临时位置的任何应用程序,然后在数据写入磁盘后移动到最终位置。 Tablesnap还假设文件在写入后是不可变的。