我希望确认我的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. 我每天运行关键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的情况下执行此操作?例如,是否有一种方法可以在一个节点上恢复数据,然后以某种方式使其“具有权威性”?我尝试过这样做,但是,由于恢复的数据较旧,因此其他节点上的数据(更新)在修复期间同步时覆盖了它。
谢谢!