Changing keyspace replication strategy
Changing the replication strategy of a keyspace from SimpleStrategy to NetworkTopologyStrategy.
A keyspace is created with a replication strategy. For development, the
SimpleStrategy
class is acceptable. For production, you must
use NetworkTopologyStrategy
. To change the strategy, alter the
distribution of nodes within multiple datacenters by adding a datacenter, and then
add data to the new nodes in the new datacenter and remove nodes from the old
datacenter.
Procedure
- If necessary, change the snitch to a network-aware setting.
-
Alter the keyspace properties using
ALTER KEYSPACE
:- Example 1: Switch the keyspace cycling from SimpleStrategy to
NetworkTopologyStrategy for a single
datacenter:
cqlsh> ALTER KEYSPACE cycling WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'DC1' : 3};
- Example 2: Switch the keyspace cycling from SimpleStrategy to
NetworkTopologyStrategy for two
datacenters:
Simply altering the keyspace may lead to faulty data replication.cqlsh> ALTER KEYSPACE cycling WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'DC1' : 3, 'DC2' : 2 };
- Example 1: Switch the keyspace cycling from SimpleStrategy to
NetworkTopologyStrategy for a single
datacenter:
-
Run nodetool repair using the
-full
option on each node affected by the change.installation_location/bin/nodetool repair -full keyspace
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):
See Modifying the replication factor.cqlsh> ALTER KEYSPACE cycling WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'DC1' : 0, 'DC2' : 3, 'DC3' : 0 };