Cassandra在另一个集群上移动数据

问题描述

我有一个3节点的Cassandra群集(3.11.0),我想将此群集移动到另一个位置。 我的旧群集(塔什干群集)中有3个虚拟机

192.168.1.11 -1 node
192.168.1.12 -2 node
192.168.1.13 -3 node

我有一个新的(空的)集群

172.17.5.10 -1 node
172.17.5.11 -2 node
172.17.5.12 -3 node

我想将所有数据从旧集群移到新集群,我的步骤是(旧集群所有键空间的RF = 3,并且具有NetworkTopologystrategy BTW)

1) add old nodes as seeds to new cluster
2) bootstrap new nodes
3) nodetool cleanup on old nodes
4) then run nodetool decommision on old nodes,one by one
5) nodetool removenode <oldnodeip>

所以我的计划正确吗? ster 3之后我应该修理nodetool吗? 谢谢

解决方法

与其进行引导/停用,不如执行以下操作:

  1. 将所有新节点添加为新数据中心
  2. 调整复制因子以使用第二个数据中心
  3. 从新DC的每个节点运行nodetool rebuild
  4. 将应用程序切换到新的DC
  5. 停用DC

following documentation中描述了步骤1-3,在here中描述了步骤5。

另一种可能性是执行replacing nodes one by one

在这两种情况下的主要优点是可以最大程度地减少节点之间的数据移动。否则,您将在添加节点时移动数据,然后在进行取消授权或removenode操作时再次移动数据

,

Nodetool清理应替换为nodetool修复。清理会从节点中删除多余的数据,并且在修复过程中流失所有丢失的数据时,在较旧的节点中运行它们将无益。另外,退役后将不再需要nodetool removenode。两者执行相同的功能,但方式不同。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...