在 Cassandra 中备份数据的最佳解决方案是什么?
答案1
有几种不同的可用选项,实际上这取决于您的情况,哪种选项最好,但这里是对可用技术的快速概述。
备份数据存储时,基本上需要防止两件事:
- 由于底层存储卷故障导致数据丢失
- 由于在存储中插入或删除无效数据而导致数据丢失
Cassandra 的设计中内置了数据复制功能。复制因子配置选项告诉 Cassandra 要存储每条记录的副本数。复制因子的常见选择是 3,因为它在性能和耐用性之间实现了良好的平衡。如果复制因子大于 1,则可以承受至少一些节点的丢失。关于这个主题还有很多话要说,但您可以在其他地方阅读。
但是,复制并不能保护您免受通过 API 进行的不良数据更改的影响,因为大量删除将复制与良好插入相同的内容。为了帮助您解决这个问题,cassandra 提供了快照功能。基本上,它将数据文件硬链接到数据目录中的快照文件夹。这可能是一种非常便宜的方法,具体取决于您的数据更改的频率和随机性。一种可能的方法是将多个快照保留在 cassandra 机器的磁盘上,前提是您有足够的空间。
如果你有多余的 IO 容量,你实际上可以将这些备份转移到单独的机器上。根据我的经验,这会对磁盘和网络吞吐量造成很大影响。
最后,从 Cassandra 0.7 开始,您可以配置多数据中心复制。本质上,您可以将集群的多个副本分布在世界各地。如果将此与快照结合使用,当出现问题时,您将有相当多不同的选项来恢复数据。
请记住,备份可获得 1 分,恢复备份可获得 10,000 分。考虑如何测试备份,以确保在需要时可以真正恢复备份。