【问题标题】:Not able to restore cassandra data from snapshot无法从快照恢复 cassandra 数据
【发布时间】:2018-12-05 09:52:27
【问题描述】:

我们对集群进行定期备份,并且每天将架构和快照备份存储在 aws s3 上。

不知何故,我们丢失了所有数据,在从备份中恢复数据时,我们能够恢复架构,但在将快照文件复制到 /var/lib/cassandra/data 目录时,它没有显示表中的数据。

复制数据后,我们完成了 nodetool refresh -- keyspace table 但仍然没有任何结果。

你能帮忙吗?

【问题讨论】:

标签: cassandra nodetool


【解决方案1】:

我是 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 集群上工作得非常好。

【讨论】:

    【解决方案2】:

    恢复快照的一般步骤是:

    1.如果 Cassandra 仍在运行,请关闭。

    2.清除提交日志、数据和保存的缓存目录中的所有现有数据

    3.将快照复制到相关数据目录

    4.将增量备份复制到数据目录(如果启用了增量备份) 如果需要,将 commitlog_archiving.properties 中的 restore_point_in_time 参数设置为 还原点。

    5.启动 Cassandra。

    6.运行修复

    所以复制数据后尝试运行修复。

    【讨论】:

    • 如果您要恢复到新节点,您还需要一份所有令牌的列表。
    猜你喜欢
    • 2015-07-07
    • 1970-01-01
    • 2014-10-17
    • 2022-06-15
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多