更改cassandra 3.11生产集群上的键空间以切换到NetworkTopologyStrategy
我有一个cassandra 3.11生产集群,有15个节点。每个节点的总容量约为500GB,复制系数为3。不幸的是,群集是使用复制“SimpleStrategy”设置的。我正在把它改成“网络拓扑策略”。我希望了解在生产集群上这样做的注意事项。我应该期待什么?在单个数据中心配置中从m更改cassandra 3.11生产集群上的键空间以切换到NetworkTopologyStrategy,cassandra,cassandra-3.0,Cassandra,Cassandra 3.0,我有一个cassandra 3.11生产集群,有15个节点。每个节点的总容量约为500GB,复制系数为3。不幸的是,群集是使用复制“SimpleStrategy”设置的。我正在把它改成“网络拓扑策略”。我希望了解在生产集群上这样做的注意事项。我应该期待什么?在单个数据中心配置中从mSimpleStregy切换到NetworkTopologyStrategy非常简单。我要警告的唯一警告是,确保数据中心名称拼写正确。否则将导致操作失败 确保使用正确数据中心的一种方法是从system.local查询数
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保证两个副本不会属于同一机架。那么这不应该导致数据移动吗?那么你是说在我运行修复之前不会有任何变化吗?