【问题标题】:Changing Cluster Name in Cassandra在 Cassandra 中更改集群名称
【发布时间】:2016-04-20 18:48:02
【问题描述】:

我有一个包含 2 台机器(centos7 和 cassandra 3.4)192.168.0.175 和 192.168.0.174 的集群。种子是 192.168.0.175。

我只是想更改集群名称。应该是平安无事。

我在每个集群上都做了:

  • update system.local set cluster_name = 'America2' where key='local';

  • 我做了 nodetool 刷新

  • 我用新名称更新了 cassandra.yaml

  • 重新启动 cassandra。

当我 cqlsh any if 将我描述为连接到新的 cluster_name America2 时

当我运行 nodetool describecluster 时,它会显示旧的集群名称 America

如果我在两台机器上都停止 cassandra 并尝试重新启动它们,我会在日志中发现旧错误:

org.apache.cassandra.exceptions.ConfigurationException: Saved cluster name America != configured name America2

所以....我做错了什么!?

【问题讨论】:

  • 我认为您可能需要停用节点,然后停止它们,在 yaml 中更改集群名称然后重新启动
  • 我认为你离解决方案不远了:stackoverflow.com/questions/22006887/…
  • 从我的感觉是update of the system.local 没有做这项工作。据我了解,当 Cassie 启动时会检查 cassandra.yaml 和 system.local。如果在两个地方都检查了名称,则所有内容都应该没有任何问题。所以,关于 cassandra.yaml 我确定......不确定我是否对 system.local 持久性进行了更改。
  • 您在 yaml 中进行更改之前是否停止了 cassandra?
  • 对于一个节点集群,上面的所有步骤都可以正常工作。测试更多以找出如何在多节点集群中执行此操作

标签: cassandra rename


【解决方案1】:

更改集群名称之前

  1. 从集群环中删除节点

    nodetool 退役

  2. 在 cassandra.yaml 中停止节点并更改集群名称

  3. 干净的节点

    sudo rm -rf /var/lib/cassandra/* /var/log/cassandra/*

  4. 启动 cassandra 节点

您可以在academy.datastax.com找到更多信息

【讨论】:

  • 然而集群是新鲜的,但考虑到生产和你有一些数据,如果我按照第 3 步操作,我可能会丢失一些!?
  • 退役是如何确保您不会丢失任何数据的工具
【解决方案2】:

好吧,伙计们,我做了什么:

cqlsh 与每台机器和:

update system.local set cluster_name = 'canada' where key='local' ; 那么

$ nodetool flush -- system

然后我停止了两台机器上的服务。

用新的集群名称 canada 修改了 cassandra.yaml。

重新启动机器,它们正在使用新的集群名称。

可以在不停止集群中所有机器的情况下执行这些步骤,将它们一一取出(我认为之后可能需要对每个节点进行修复)。考虑先更换种子。

【讨论】:

    【解决方案3】:

    这是不可能的。我有同样的问题。我以一种非常肮脏的方式解决了这个问题。我写了一个脚本,在那里我得到了我所有的列族数据。简单地说:备份。然后我在每个节点上执行此操作:我停止了 cassandra,我删除了所有 cassandra 数据、缓存等。(您也可以重新安装 cassandra。)我创建了一个新集群,导入了我的备份。我为每个节点都这样做了。

    【讨论】:

    猜你喜欢
    • 2018-08-22
    • 1970-01-01
    • 2014-03-27
    • 2011-09-01
    • 2016-11-27
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    相关资源
    最近更新 更多