将 cassandra 快照文件复制到 运行 节点中的 sstable 文件是否安全?

Is it safe to copy cassandra snapshot files over sstable files in a running node?

阅读 nodetool 标记的问题后编辑。

我们每天为我们的单节点 cassandra 数据库拍摄快照。如果我想在该节点或我们的登台服务器上恢复快照,该服务器是 运行 一个不同的 cassandra 实例,我的理解是我必须:

  1. nodetool disablegossip

  2. nodetool disablebinary

  3. nodetool drain

  4. 将sstable文件从快照目录复制到keyspace目录下的sstable目录。

  5. 运行 每个 table.

    节点工具刷新
  6. 启用二进制和八卦。

这是否足以在我进行刷新时安全地引入快照 sstable 文件而 cassandra 不会覆盖它们?

nodetool drain 的反义词是什么?

另一个编辑:sstableloader 怎么样?我应该改用那个吗?如果是这样,如何?我看了“文档”,none 更聪明了。

您概述的步骤不太正确。您不会关闭 Cassandra,也不应该只是将文件复制到现有的 SSTables 之上。

概括地说,在节点上恢复 table 个快照的步骤是:

  1. TRUNCATE 您要恢复的 table(将从数据目录中删除 SSTables)。
  2. 将 SSTables 从 data/ks_name/table-UUID/snapshots/snapshot_name 子目录复制到“实时”数据目录 data/ks_name/table-UUID
  3. 运行 nodetool refresh -- ks_name table_name.

您需要为每个要恢复的应用程序 table 重复这些步骤。注意:不要 恢复系统 tables,只恢复应用程序 tables。

详细步骤记录在Restoring from a snapshot in Cassandra

要将快照恢复到另一个集群,我更愿意将其称为“克隆”。将快照克隆到另一个集群的过程取决于源集群和目标集群是否具有相同的配置

如果源集群和目标集群相同,请按照我在此处记录的步骤进行操作 -- https://community.datastax.com/questions/4534/。我已经在 post.

中解释了 相同配置 的含义

如果它们不相同,请按照我在此处记录的步骤进行操作 -- https://community.datastax.com/questions/4477/。干杯!