【发布时间】:2018-12-05 09:52:27
【问题描述】:
我们对集群进行定期备份,并且每天将架构和快照备份存储在 aws s3 上。
不知何故,我们丢失了所有数据,在从备份中恢复数据时,我们能够恢复架构,但在将快照文件复制到 /var/lib/cassandra/data 目录时,它没有显示表中的数据。
复制数据后,我们完成了 nodetool refresh -- keyspace table 但仍然没有任何结果。
你能帮忙吗?
【问题讨论】:
我们对集群进行定期备份,并且每天将架构和快照备份存储在 aws s3 上。
不知何故,我们丢失了所有数据,在从备份中恢复数据时,我们能够恢复架构,但在将快照文件复制到 /var/lib/cassandra/data 目录时,它没有显示表中的数据。
复制数据后,我们完成了 nodetool refresh -- keyspace table 但仍然没有任何结果。
你能帮忙吗?
【问题讨论】:
我是 Apache Cassandra 的新手,但我首先关注的主题是备份。 如果您想从快照恢复(在新节点/集群上),您必须关闭任何节点上的 Cassandra 并清除这些文件夹中的所有现有数据:
/var/lib/cassandra/data -> 如果你想保护你的系统密钥空间,那么只删除你的用户密钥空间文件夹
/var/lib/cassandra/commitlog
/var/lib/cassandra/hints
/var/lib/cassandra/saved_cashes
在此之后,您必须再次启动 Cassandra(整个集群)。像要还原的密钥空间和要还原的表一样创建密钥空间。在您的快照文件夹中,您将找到用于创建表的 schema.cql 脚本。
再次创建键空间和表后,稍等片刻(时间取决于集群中的节点数量和要恢复的键空间。)
再次关闭 Cassandra 集群。
将文件从 Snapshot 文件夹复制到要恢复的表的新文件夹中。在所有节点上执行此操作!
复制文件后,逐个启动节点。
如果所有节点都在运行,请运行 nodetool repair 命令。
如果您尝试通过 CQLSH 检查数据,请考虑 CONSISTENCY LEVEL! (全部/法定人数)
就是这样,在我的 Cassandra 集群上工作得非常好。
【讨论】:
恢复快照的一般步骤是:
1.如果 Cassandra 仍在运行,请关闭。
2.清除提交日志、数据和保存的缓存目录中的所有现有数据
3.将快照复制到相关数据目录
4.将增量备份复制到数据目录(如果启用了增量备份) 如果需要,将 commitlog_archiving.properties 中的 restore_point_in_time 参数设置为 还原点。
5.启动 Cassandra。
6.运行修复
所以复制数据后尝试运行修复。
【讨论】: