cassandraupgradedatastaxcassandra-2.0cassandra-2.2

Cassandra version upgrade from 2.0.9 to 2.2


We are planning to upgrade our cluster which currently runs on 2.0.9 to 2.2.6. According to the documentation and some blogs people upgrade cassandra inplace ie remove a node from ring upgrade it and add it back again. We are skeptical of following this approach as things can go wrong(This is a high transaction database with a good number of QPS).

So we were planning to add a new datacenter to the cluster which shall have upgraded cassandra version(2.2). So the setup shall have two datacenter one old(2.0.9) and the other new (2.2.6)

This datacenter is just a backup. When the datacenter becomes stable we shall change the client connection to this datacenter and if it plays well then we shall go with this datacenter and close the old datacenter or else we can fall back to the old datacenter and debug what went wrong.

Is this process feasible enough or should we go for in place upgrade?

Can two cassandra version(2.0 and 2.2) exist across a datacenter.

Is there a downfall in this approach?


Solution

  • Can two cassandra version(2.0 and 2.2) exist across a datacenter.

    No, they cannot.

    Is this process feasible enough or should we go for in place upgrade?

    You will need to perform an in-place upgrade. This is because Cassandra cannot stream across versions. Performing an in-place upgrade allows the new version to read the SSTables from the old version.

    Is there a downfall in this approach?

    As I mentioned, you will not be able to stream data from your existing nodes to the new 2.2 DC. So bootstrapping, rebuilding, and repairing are all out of the question.

    The other issue you have, is that 2.2.6 is not "upgrade compatible" with 2.0.9. From this DataStax doc: Apache Cassandra versions requiring intermediate upgrades...

    Apache Cassandra 2.2.x restrictions

    You will first have to upgrade your entire cluster to Cassandra 2.1. Once the upgrade to 2.1 is complete, then you can upgrade your nodes to 2.2.6.