适当的Cassandra keyspace恢复程序

6
我希望确认我的Cassandra备份和恢复程序是否可靠,是否有遗漏。请确认一下,如果有不正确或遗漏的地方,请告诉我。
备份:
1. 我每天运行关键keyspace的完整备份,通过“nodetool snapshot keyspace_name -t current_timestamp”进行。拍摄快照后,我将数据复制到专门用于备份的已挂载磁盘中,然后执行“nodetool clearsnapshot $keyspace_name -t $current_timestamp”。
2. 我还运行每小时的增量备份-执行“nodetool flush keyspace_name”,然后将每个keyspace的备份目录中的文件移动到备份挂载点中。
恢复:
到目前为止,我发现在集群中的所有Cassandra节点上执行以下操作是唯一有效的恢复方法(并已经测试/确认):
1. 停止Cassandra
2. 清除提交日志*.log文件
3. 从要恢复的表中清除*.db文件
4. 将快照/完整备份文件复制到该目录中
5. 复制所需的任何增量文件(我尚未测试多个增量,但我假设我必须按顺序覆盖文件,从最旧的到最新的)
6. 启动Cassandra
7. 在其中一个节点上,运行“nodetool repair keyspace_name”
我的问题是:
1. 上述备份和恢复策略是否有效?是否有任何不准确或遗漏的步骤?
2. 是否有一种方法可以在不停止每个节点上的Cassandra的情况下执行此操作?例如,是否有一种方法可以在一个节点上恢复数据,然后以某种方式使其“具有权威性”?我尝试过这样做,但是,由于恢复的数据较旧,因此其他节点上的数据(更新)在修复期间同步时覆盖了它。
谢谢!
1个回答

1

恢复Cassandra备份的两种方法而不需要重新启动C *:

  1. 将文件复制到指定位置,然后运行“nodetool refresh”。但是需要注意的是,行仍然比墓碑旧。因此,如果您想要恢复已删除的数据,则无法实现。它只适用于本地服务器(您需要在之后进行修复)。
  2. 使用“sstableloader”。这将加载数据到所有节点。您需要确保从完整副本中获取了sstables,这可能意味着需要从多个节点加载sstables。额外的好处是,即使群集大小发生更改,它也可以正常工作。我不确定这里是否有顺序问题(也就是说,我不知道行时间戳是否在加载过程中保留,还是在加载期间重新定义)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接