更改cassandra 3.11生产群集上的键空间以切换到NetworkTopologyStrategy

时间:2018-06-22 16:49:16

标签: cassandra cassandra-3.0

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

1 个答案:

答案 0 :(得分:1)

在单个数据中心配置中从m SimpleStrategy切换到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是一个好主意,只是要确保所有节点都具有模式协议。

专业提示:对于将来的Google员工,使用SimpleStrategy创建密钥空间是没有好处的。它所要做的只是使您处于以后必须修复的位置。实际上,我认为SimpleStrategy应该永远不要使用。

  

那么什么时候开始数据移动?就我而言,由于我现在具有特定的机架ID,因此我希望我的副本在执行此更改键空间操作时切换节点。

仅此一项就不会导致令牌范围责任的任何调整。如果您的RF已经为3,那么新的DC定义也是如此,则无需进行维修,因此不会有任何流。

  

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

在这种情况下,如果您进行维修,则二级或三级副本可能会找到新家。但是您的主要知识将保持不变。

  

那么您是说在我进行维修之前没有任何改变吗?

正确。