Changing keyspace replication strategy
Changing the strategy of a keyspace from SimpleStrategy to NetworkTopologyStrategy.
A keyspace is created with a strategy. For development work, the
SimpleStrategy
class is acceptable. For production work, the
NetworkTopologyStrategy
class must be set. To change the
strategy, two steps are required. Altering the distribution of nodes within multiple
datacenters when data is present should be accomplished by adding a datacenter,
and then adding data to the new nodes in the new datacenter and removing nodes from
the old datacenter.
Procedure
- Change the snitch to a network-aware setting.
-
Alter the keyspace properties using the
ALTER KEYSPACE
command. For example, the keyspace cycling set toSimpleStrategy
is switched toNetworkTopologyStrategy
for a single datacenterDC1
.cqlsh> ALTER KEYSPACE cycling WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'DC1' : 3};
Note: Datacenter names are case sensitive. Verify the case of the using utility, such asnodetool status
. -
Alter the keyspace properties using the
ALTER KEYSPACE
command. For example, the keyspace cycling set toSimpleStrategy
is switched toNetworkTopologyStrategy
. Altering a keyspace to add a datacenter involves additional steps. Simply altering the keyspace may lead to faulty data replication. See switching snitches for additional information.cqlsh> ALTER KEYSPACE cycling WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'DC1' : 3, 'DC2' : 2 };
-
Run nodetool-repair using the
-full
option on each node affected by the change. For details, see Updating the replication factor.It is possible to restrict the replication of a keyspace to selected datacenters, or a single datacenter. To do this, use the NetworkTopologyStrategy and set the replication factors of the excluded datacenters to0
(zero), as in the following example:cqlsh> ALTER KEYSPACE cycling WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'DC1' : 0, 'DC2' : 3, 'DC3' : 0 };