首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不停机的情况下将单令牌群集迁移到新的vnodes集群?

如何在不停机的情况下将单令牌群集迁移到新的vnodes集群?
EN

Stack Overflow用户
提问于 2013-03-12 13:31:44
回答 2查看 2.3K关注 0票数 6

我们有Cassandra集群,每个节点有一个令牌,总共有22个节点,每个节点的平均负载为500 is。它有用于主键空间的SimpleStrategy和SimpleSnitch。

我们需要将所有数据迁移到新的数据中心,并在不停机的情况下关闭旧的数据中心。新集群有28个节点。我想在上面装上vnodes。

我正在考虑以下过程:

  1. 将旧集群迁移到vnodes
  2. 使用vnodes设置新集群
  3. 将新集群中的节点添加到旧集群中,并等待其平衡所有内容。
  4. 将客户端切换到新群集
  5. 从旧集群中一个接一个地分解节点

但这里有很多技术细节。首先,应该在vnodes迁移之后对旧集群进行洗牌吗?那么,切换到NetworkTopologyStrategy和GossipingPropertyFileSnitch的最佳方式是什么?我想切换到NetworkTopologyStrategy,因为新集群有两个不同的机架,有独立的电源/网络交换机。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-12 15:40:59

在vnodes迁移之后,我应该对旧集群进行洗牌吗?

你不需要这么做。如果每个节点从一个令牌变为256 (默认),每个节点将将其范围分割为256个相邻的大小相等的范围。这并不影响数据的位置。但这意味着当您在新DC中的新节点中引导时,它将在整个过程中保持平衡。

切换到NetworkTopologyStrategy和GossipingPropertyFileSnitch的最佳方式是什么?

困难在于,切换复制策略通常不安全,因为需要在集群中移动数据。NetworkToplogyStrategy (NTS)会将数据放置在不同的节点上,如果您告诉它的节点位于不同的货架上。因此,在添加新节点之前,应该迁移到NTS。

在您将旧集群升级到vnodes之后(上面的步骤1),下面是一个这样做的方法:

1a.将所有现有节点列在属性文件中的DC0中。列出DC1中的新节点及其正确的机架。

1b。使用DC0:3 (或任何当前复制因子)和DC1:0选项将复制策略更改为NTS。

然后,按照以下过程添加新节点:nodes#adding-a-data-center-to-a-cluster。请记住将令牌数量设置为256,因为默认情况下它将是1。

在第5步中,您应该将DC0的复制因子设置为0,即将复制选项更改为DC0:0,DC1:3。现在没有使用这些节点,所以分解不会流任何数据,但是您仍然应该这样做,而不是关闭它们,以便将它们从环中删除。

注意,一个风险是,在低一致性级别上写到旧节点可能会丢失。为了防止这种情况,您可以在切换到新的DC后在CL.LOCAL_QUORUM上编写。仍然有一个小窗口可能会丢失写(在步骤3和步骤4之间)。如果这很重要,您可以在旧节点退役之前运行修复,以保证不丢失或在高一致性级别上写入。

票数 5
EN

Stack Overflow用户

发布于 2013-07-22 00:30:44

如果您试图迁移到一个新的集群中,您不需要更改这个分区器吗?文档说,在不同的分区之间迁移数据不是一个好主意。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15362657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档