【问题标题】:Alter Keyspace on cassandra 3.11 production cluster to switch to NetworkTopologyStrategy在 cassandra 3.11 生产集群上更改键空间以切换到 NetworkTopologyStrategy
【发布时间】:2018-12-02 04:43:06
【问题描述】:

我有一个具有 15 个节点的 cassandra 3.11 生产集群。每个节点总共有约 500GB,复制因子为 3。不幸的是,集群设置为复制“SimpleStrategy”。我将其切换到“NetworkTopologyStrategy”。我希望了解在生产集群上这样做的注意事项。我应该期待什么?

【问题讨论】:

  • 您有多个数据中心吗?还是只有一个?
  • 不,只是一个数据中心。

标签: cassandra cassandra-3.0


【解决方案1】:

在单个数据中心配置中从 mSimpleStrategy 切换到 NetworkTopologyStrategy 非常简单。我要警告的唯一警告是确保正确拼写数据中心名称。否则将导致操作失败。

确保您使用正确的数据中心的一种方法是从system.local 查询它。

cassdba@cqlsh> SELECT data_center FROM system.local;

 data_center
-------------
 west_dc

(1 rows)

然后调整您的键空间以复制到该 DC:

ALTER KEYSPACE stackoverflow WITH replication = {'class': 'NetworkTopologyStrategy',
    'west_dc': '3'};

现在对于多个数据中心,您需要确保正确指定新数据中心名称,并在完成后运行修复(在所有节点上)。这是因为SimpleStrategy 将所有节点视为一个数据中心,而不管它们的实际 DC 定义如何。所以你可以在一个 DC 中有 2 个副本,而在另一个 DC 中只有 1 个。

我已经多次更改了键空间的 RF。通常,没有问题。但是最好在完成后运行nodetool describecluster,以确保所有节点都具有架构协议。

专业提示:对于未来的谷歌员工,使用 SimpleStrategy 创建键空间没有任何好处。它所做的只是将您置于稍后必须修复的位置。事实上,我认为SimpleStrategy 应该永远不要使用。

那么数据移动何时开始?在我的情况下,因为我现在有特定的机架 ID,所以我希望我的副本在这个改变键空间操作时切换节点。

仅此一项不会导致令牌范围责任的任何调整。如果您的 RF 已经为 3,并且您的新 DC 定义也是如此,则您无需运行修复,因此不会流式传输任何内容。

我有一个 15 个节点的集群,分为 5 个机架。所以每个机架有 3 个属于它的节点。由于我之前有复制因子 3 和 SimpleStrategy,因此可能有超过 1 个副本属于同一个机架。而 NetworkStrategy 保证没有两个副本属于同一个机架。那么这不应该导致数据移动吗?

在这种情况下,如果您进行修复,您的二级或三元副本可能会找到新家。但您的初选将保持不变。

所以你是说在我进行维修之前没有任何变化?

正确。

【讨论】:

  • 感谢您的回复,亚伦。只有一个后续问题,那么数据移动何时开始?在我的情况下,因为我现在有特定的机架 ID,所以我希望我的副本在这个改变键空间操作时切换节点。
  • 此外,当副本正在切换节点并且数据正在流过时,我的以仲裁一致性读取或写入的应用程序将如何受到影响?
  • 好的,让我进一步解释一下。我有一个 15 个节点的集群,分为 5 个机架。所以每个机架有 3 个属于它的节点。由于我之前有复制因子 3 和 SimpleStrategy,因此可能有超过 1 个副本属于同一个机架。而 NetworkStrategy 保证没有两个副本属于同一个机架。那么这不应该导致数据移动吗?
  • 那么您是说在我进行修复之前不会有任何变化?
猜你喜欢
  • 2021-05-20
  • 2020-05-25
  • 2016-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-19
相关资源
最近更新 更多