【问题标题】:Handle different restore scenarios with Cassandra 2.2使用 Cassandra 2.2 处理不同的恢复场景
【发布时间】:2016-12-13 22:31:23
【问题描述】:

我有一个 Cassandra 3 节点集群和一个使用 3 的 replication_factor 创建的键空间。

我使用nodetool snapshot 对此键空间进行备份。根据 Cassandra 文档的建议,为了进行全局备份,我在每个节点上使用 cron 作业启动它(3 个节点是 NTP 同步的)。我没有使用增量快照,它始终是一个新的全局快照。

很遗憾,我在恢复过程中遇到了一些问题。

首先,我将复制因子设置为 3(以及QUORUM READ 和 WRITE 操作的一致性级别),以确保即使有 1 个节点关闭,我的应用也能继续工作。

  • 我的第一个场景并不是真正的还原过程: 一个节点出现故障是因为,比方说某人或某事关闭了该节点正在运行的虚拟机。其他 2 个节点继续工作并接收写入/读取请求。 24小时后,我设法重启了第一个节点的虚拟机,所有服务和文件都还在,我即将重启节点。 在重启之前或之后我应该做什么?

  • 第二种情况几乎相同,但我无法恢复第一个节点的虚拟机,我需要重新安装它上面的所有内容,包括 Cassandra。 我应该如何使用我的备份来重新同步这个节点?我应该使用它还是 Cassandra 能够重新同步所有内容而无需我恢复任何内容?在这种情况下我应该怎么做?

  • 我的最后一个场景不同。我丢失了所有节点,无法恢复任何东西。我有我的全局快照(3 个快照,每个节点 1 个,同时拍摄)。 这种情况下的流程是什么?

我已阅读有关恢复过程的 Cassandra 文档,并且我更喜欢简单的复制恢复(换句话说,我宁愿不使用 sstableloader)。我很难理解在这些情况下何时应该使用refresh 和/或repair 命令。

【问题讨论】:

    标签: backup restore cassandra-2.2


    【解决方案1】:

    我很难理解在这些情况下何时应该使用刷新和/或修复命令

    根据documentation,当您从快照恢复数据时,您应该执行refresh,第 2 和第 3 个场景。

    我认为这三种情况都不需要修复。但我建议执行它,因为在刚刚恢复的节点上获得一致的数据是一个简单而有用的步骤。

    此外,定期repair 是 cassandra 集群维护的推荐部分。

    【讨论】:

    • 感谢您的回答。但是在第一种情况下,在重新启动关闭几个小时或几天的节点后,除了nodetool repair,我还应该做些什么吗?对于第二个,我应该使用丢失节点的快照还是 Cassandra 能够使用其他 2 个节点自行重新同步所有内容?
    • @TheWingman,第一个场景修复就够了,甚至节点宕机了很长时间。对于第二个,Cassandra 可以从其他节点 (cassandra.apache.org/doc/latest/operating/…) 引导数据,但与从快照恢复相比可能需要很长时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多