I followed the following steps to migrate all the data from one cluster to a completely new cluster: http://datascale.io/cloning-cassandra-clusters-fast-way/

I managed to get all the data to the new cluster, the servers see each other, nodetool status reports all nodes as UN. However, I do have a question, in one of the paragraph the initial_token values are taken from the nodes and copied one on one to the new servers, and I had to add JVM_OPTS="$JVM_OPTS -Dcassandra.load_ring_state=false". I suppose the JVM_OPTS can be discarded now, but I'm not so sure about the initial_tokens?

My entire configuration is managed by Puppet, and I'm now unsure whether the initial_tokens are needed once the cluster has been populated and initialized? The manifests are very clean, and this would add unnecessary complications since the values of inital_tokens are unique to each node. I want to be sure, since this is my first time dealing with Cassandra.

1 Answer 1


It seems that once the cluster has been initialized, the initial_token value gets written somewhere inside the Cassandra structure. Even after restarting the entire new cluster without the initial_token directive, the cluster works fine and I get the exact same tokens with the same procedure I got them on the old cluster.

Looks like after things are stabilized, you can remove the initial_token from the cassandra.yaml file.

  • Crawling through Cassandra docs, this is indeed a good question, and nice to find some concrete answer. Thanks for saving me from setting up yet-another-labs ...
    – SYN
    Nov 15, 2017 at 15:35
  • 1
    Yes after the node has complete the initial bootstrap, the tokens are saved in the system.local table.
    – grom
    Apr 13, 2018 at 23:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.