1

我在这里阅读了有关 Cassandra 备份和恢复的信息,并且有几个问题:

  1. 原生 Cassandra CLI 命令是否足够?我看到很多人编写脚本并定制自己的解决方案。
  2. 您会推荐哪些其他工具用于 Cassandra 备份和恢复?我正在寻找可以帮助我管理备份图像的东西(例如,使用时间点)
  3. 如果我选择备份我的 Cassandra 表,我是否需要在存储方面投入更多?

任何见解将不胜感激。

4

2 回答 2

3

请尽量将您的问题限制在一个实际问题上。

原生 Cassandra CLI 命令是否足够?

我假设你的意思是nodetool snapshot,所以在大多数情况下,“是的”。此外,许多用户还选择启用增量备份。结合使用快照和增量备份(来自链接的文档)“提供了一种可靠的、最新的备份机制。

我看到很多人编写脚本并定制自己的解决方案。

我有一个每晚在我的节点上运行的备份脚本。有两个原因。

  1. 我不想每周手动为每个键空间拍摄快照,所以我让脚本来做。

  2. 快照和增量备份文件不会自行删除,所以我让脚本在某个时间阈值后执行此操作。

您会推荐哪些其他工具用于 Cassandra 备份和恢复?

DataStax OpsCenter 允许您安排备份,但我相信这只是企业版中的一个有效选项。您还可以查看 Netflix 的名为Priam的 Cassandra 备份/恢复工具。还有一家名为Talena的公司声称为 Cassandra 提供广泛的企业级备份解决方案(我不知道有人使用它们,但他们最近给我发了一封营销电子邮件,所以我想我会提到它)。

如果我选择备份我的 Cassandra 表,我是否需要在存储方面投入更多?

如果您不掌握它们(删除和/或归档它们),增量备份和快照可能会占用大量空间。我会尝试它们,并在你这样做的时候留意你的磁盘使用情况。如果您的业务需求有关于服务条款的声明(您需要能够恢复到多远),您应该能够计算出保留多少天的备份对您来说是有意义的。这应该告诉您是否需要更多磁盘来履行这些义务。

编辑 20181205

您是否在每个节点上运行 nodetool 快照?如果存在三个具有 100% 复制的节点,将采用什么方法。

通常是的,nodetool snapshot需要在每个节点上运行。这有助于确保备份覆盖率,因为并非所有节点都可能负责所有数据。

但是,如果您的集群在节点数等于您的 RF 的配置中运行,则每个节点都有完整的数据副本。在这种情况下,您只需要nodetool snapshot在一个节点上运行;只要您确信维修会定期进行并且您的数据是一致的。

于 2015-03-17T14:19:15.623 回答
1

关于 Cassandra 的时间点备份和恢复,根据您的需求和限制,您需要考虑以下几个方面:

  1. 存储足迹
    • 今天可用的所有解决方案都会给您的基础架构带来很大压力,因为假设您的复制因子为 3,它们将要求您存储绝对需要的 3 倍数据。
    • 我同意@Aaron,您需要自己管理快照,因为这些工具不会为您进行“垃圾收集”:)
  2. 故障恢复能力
    • 现有的所有解决方案,包括 opscenter 和其他解决方案,都提供有限的故障恢复能力。如果 Cassandra 节点在备份窗口期间出现故障,您将丢失数据。
    • 当您有增量备份并且在增量备份期间发生节点故障时,这种情况会更加严重
  3. 恢复时间/速度
    • 请注意,您可能必须在恢复过程中进行“修复”过程。这是必需的,因为本机工具提供的节点级快照在整个集群中并不一致。
    • 根据您的 RTO/RPO 需求,这可能还不够。我建议您在找到任何解决方案之前测试您的操作的备份和恢复时间。

如果您正在寻找用于备份和恢复 Cassandra 的企业级解决方案,您可能需要查看“<a href="http://datos.io" rel="nofollow">Datos IO”提供的解决方案。它将您的存储空间减少了 3 倍,同时还提供了故障恢复能力和集群一致性。

于 2016-02-11T03:14:06.027 回答