运行nodetool decommission后丢失数据

时间:2017-11-25 07:59:17

标签: cassandra nodetool

我有一个3节点集群,其中1个种子和节点位于不同的区域。全部使用GoogleCLoudSnitch在GCE中运行。

我想更改每个节点上的硬件,所以我开始在一个完全加入集群的不同区域添加一个新种子。然后我开始使用" nodetool decommission"完成后,我在节点关闭时删除了节点,并且节点工具状态为#34;说它不在集群中。我为所有节点做了这个,最后我在" extra"种子在不同的区域只是为了删除它以回到3节点集群。

我们丢失了数据!可能是什么问题?我看到一个突击队," nodetool rebuild",我跑了,实际上得到了一些数据。 " nodetool cleanup"也没帮助。我应该运行" nodetool flush"在"退役"?

之前

在跑步"退役"大部分键空间都有..

{'class' : 'NetworkTopologyStrategy', 'europe-west1' : 2}"

我是否应该首先更改关键空间以包含新的区域/数据中心,这将是"' europe-west3' :1"因为该数据中心只存在一个节点?我还注意到群集中的一些键空间错误地出现了..

{ 'class' : 'SimpleStrategy', 'replication_factor' : 1 }

这会导致数据丢失吗?它似乎是在" SimpleStrategy键空间"数据丢失了。

1 个答案:

答案 0 :(得分:0)

(免责声明:我是ScyllaDB员工)

您是否第一次添加新节点以替换您要停用的节点并相应地配置了密钥空间复制策略? (你在描述中只提到了新的种子节点,你没有提到你是否为其他节点做过)。

您的数据丢失很可能是以下结果:

  • 不改变密钥空间以包含具有适当复制策略和复制因子的新区域/区域。
  • 配置了简单策略(无netwrok感知)复制策略和复制因子1的Keyspace。这意味着数据仅存储在1个节点中,一旦该节点关闭并退役,您基本上就丢失了数据。 / LI>

您是否有机会拍摄快照并将其存储在群集之外?如果你这样做,你可以尝试恢复它们。

我强烈建议您查看这些程序,以便更好地理解并执行您希望执行的程序的正确方法: