我有一个带15个节点的cassandra 3.11生产集群。每个节点总共有约500GB的复制因子3。不幸的是,群集使用复制'SimpleStrategy'进行设置。我将其切换为“ NetworkTopologyStrategy”。我希望了解在生产集群上这样做的注意事项。我应该期待什么?
答案 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保证不会有两个副本属于同一机架。那么这不应该导致数据移动吗?
在这种情况下,如果您进行维修,则二级或三级副本可能会找到新家。但是您的主要知识将保持不变。
那么您是说在我进行维修之前没有任何改变吗?
正确。