问题描述
我有一个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吗? 谢谢
解决方法
与其进行引导/停用,不如执行以下操作:
- 将所有新节点添加为新数据中心
- 调整复制因子以使用第二个数据中心
- 从新DC的每个节点运行
nodetool rebuild
- 将应用程序切换到新的DC
- 停用DC
在following documentation中描述了步骤1-3,在here中描述了步骤5。
另一种可能性是执行replacing nodes one by one。
在这两种情况下的主要优点是可以最大程度地减少节点之间的数据移动。否则,您将在添加节点时移动数据,然后在进行取消授权或removenode操作时再次移动数据
,Nodetool清理应替换为nodetool修复。清理会从节点中删除多余的数据,并且在修复过程中流失所有丢失的数据时,在较旧的节点中运行它们将无益。另外,退役后将不再需要nodetool removenode。两者执行相同的功能,但方式不同。