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

更改cassandra 3.11生产集群上的键空间以切换到NetworkTopologyStrategy,cassandra,cassandra-3.0,Cassandra,Cassandra 3.0,我有一个cassandra 3.11生产集群,有15个节点。每个节点的总容量约为500GB,复制系数为3。不幸的是,群集是使用复制“SimpleStrategy”设置的。我正在把它改成“网络拓扑策略”。我希望了解在生产集群上这样做的注意事项。我应该期待什么?在单个数据中心配置中从mSimpleStregy切换到NetworkTopologyStrategy非常简单。我要警告的唯一警告是,确保数据中心名称拼写正确。否则将导致操作失败 确保使用正确数据中心的一种方法是从system.local查询数

我有一个cassandra 3.11生产集群,有15个节点。每个节点的总容量约为500GB,复制系数为3。不幸的是,群集是使用复制“SimpleStrategy”设置的。我正在把它改成“网络拓扑策略”。我希望了解在生产集群上这样做的注意事项。我应该期待什么?

在单个数据中心配置中从m
SimpleStregy
切换到
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个副本

我已经动态更改了几次键空间的RFs。通常,没有问题。但完成后最好运行
nodetool descripebCluster
,以确保所有节点都具有模式一致性

Pro提示:对于未来的谷歌用户来说,使用
simplestregy
创建键空间没有任何好处。它所做的一切,就是把你放在一个位置,你必须在以后修复它。事实上,我认为永远不要使用
SimpleStrategy

那么,数据移动何时开始?在我的例子中,因为我现在有特定的机架ID,所以我希望我的复制副本能够在这个alter keyspace操作上切换节点

这本身不会导致令牌范围责任的任何调整。如果你已经有了3的RF,你的新DC定义也是如此,你将不需要运行修复,所以不会有任何数据流

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

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


你是说在我进行维修之前什么都不会改变


正确。

您有多个数据中心吗?还是只有一个?不,只有一个数据中心。谢谢你的回复,亚伦。只有一个后续问题,那么数据移动何时开始?在我的情况下,因为我现在有特定的机架ID,所以我希望我的副本在这个alter keyspace操作上切换节点。另外,当副本切换节点并且数据流通过时,我的应用程序在仲裁一致性下读取或写入会受到怎样的影响?好的,让我进一步解释一下。我有一个15节点的集群,分为5个机架。因此,每个机架有3个属于它的节点。因为我以前有复制因子3和SimpleStrategy,所以可能有多个复制副本属于同一机架。而NetworkStrategy保证两个副本不会属于同一机架。那么这不应该导致数据移动吗?那么你是说在我运行修复之前不会有任何变化吗?