在 cassandra 3.11 生产集群上更改 Keyspace 以切换到 NetworkTopologyStrategy

Alter Keyspace on cassandra 3.11 production cluster to switch to NetworkTopologyStrategy

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

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

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

查询它
cassdba@cqlsh> SELECT data_center FROM system.local;

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

(1 rows)

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

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

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

我已经多次即时更改键空间的 RF。通常,没有问题。但是完成后 运行 nodetool describecluster 是个好主意,只是为了确保所有节点都具有模式协议。

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

so when will the data movement commence? In my case since I have specific rack ids now, so I expect my replicas to switch nodes upon this alter keyspace action.

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

I have a 15 nodes cluster which is divided into 5 racks. So each rack has 3 nodes belonging to it. Since I previously have replication factor 3 and SimpleStrategy, more than 1 replica could have belonged to the same rack. Whereas NetworkStrategy guarantees that no two replicas will belong to the same rack. So shouldn't this cause data to move?

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

So are you saying that nothing changes until I run a repair?

正确。