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

  1. If necessary, change the snitch to a network-aware setting.
  2. 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:
      cqlsh> ALTER KEYSPACE cycling WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'DC1' : 3, 'DC2' : 2 };
      Simply altering the keyspace may lead to faulty data replication.
  3. 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 to 0 (zero):
    cqlsh> ALTER KEYSPACE cycling WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'DC1' : 0, 'DC2' : 3, 'DC3' : 0 };
    See Modifying the replication factor.