【问题标题】:Cassandra move data on another cluster [closed]Cassandra 在另一个集群上移动数据 [关闭]
【发布时间】:2020-12-01 08:20:58
【问题描述】:

我有一个 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 修复吗? 谢谢

【问题讨论】:

    标签: cassandra nosql devops cassandra-3.0


    【解决方案1】:

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

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

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

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

    这两种情况的主要优点是您可以最大限度地减少节点之间的数据移动。否则在添加节点的时候会移动数据,在做decomission或者removenode的时候会再次移动

    【讨论】:

      【解决方案2】:

      Nodetool cleanup 应该替换为 nodetool repair。清理从节点中删除额外的数据并在较旧的节点上运行它不会有好处,而修复会流式传输任何丢失的数据。另外,退役后不再需要nodetool removenode。两者功能相同,但方式不同。

      【讨论】:

      • 谢谢!但在官方文档中,我看到“在所有新节点运行后,在每个先前存在的节点上运行 nodetool cleanup 以删除不再属于这些节点的密钥。等待清理在一个节点上完成,然后再运行 nodetool清理下一个节点。”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      • 2014-06-26
      • 2011-11-30
      • 2022-08-09
      • 2020-04-30
      • 2017-01-29
      相关资源
      最近更新 更多