CRC*_*r0r
6
backup
restore
cassandra
我正在寻找确认我的Cassandra备份和恢复程序是合理的,我没有遗漏任何东西.你可以确认,或者告诉我是否有不正确/缺失的东西?
备份:
- 我通过"nodetool snapshot keyspace_name -t current_timestamp"每天运行我关心的密钥空间的完整备份.拍摄快照后,我将数据复制到专用于备份的已装入磁盘,然后执行"nodetool clearsnapshot $ keyspace_name -t $ current_timestamp"
- 我还运行每小时增量备份 - 执行"nodetool flush keyspace_name",然后将文件从每个键空间的备份目录移动到备份挂载点
恢复:
到目前为止,我发现进行恢复(并经过测试/确认)的唯一有效方法是在群集中的所有Cassandra节点上执行此操作:
- 停止卡桑德拉
- 清除commitlog*.log文件
- 清除我要恢复的表中的*.db文件
- 将快照/完整备份文件复制到该目录中
- 复制我需要的任何增量文件(我没有测试多个增量,但我假设我将必须覆盖文件,按顺序从最旧到最新)
- 启动Cassandra
- 在其中一个节点上,运行"nodetool repair keyspace_name"
所以我的问题是:
- 上述备份和恢复策略是否有效?是否有任何步骤不准确或遗失?
- 有没有办法在不停止Cassandra的每个节点上执行此操作?例如,有没有办法在一个节点上恢复数据,然后以某种方式使其"权威"?我试过这个,并且,正如预期的那样,由于恢复的数据较旧,其他节点(较新的)上的数据会在修复期间同步时覆盖.
谢谢!