The recently released Cassandra 0.7 came with lots of goodies in the box so many users are starting to roll it live. Unfortunately according to this thread the upgrade will require both a cluster shutdown and upgrade of the clients at the same time.
Unfortunately there are changes to the inter-node protocol which which make it impossible to run a mixed cluster.
The TTL feature is one of the things that mean you also have to upgrade the client. The Columns returned and accepted by Cassandra will now expect to have a TTL field.
I am wondering what’s the recommended upgrade process for these cases where a complete cluster shut down and synchronized client upgrade is need?
What I imagine myself doing:
- set up a test cluster
- export a fair amount of live data to the test cluster
- start running tests on it as long as possible
- once these are completed or results are satisfying, choose the best downtime moment
- perform the upgrade
Another interesting approach would be to start building up a parallel cluster and piping live data over to it. Once the new cluster would catch up and tests are completed, just switch the client. But this might not be doable due to the costs of maintaining two clusters and the lack of tools for piping data from existing cluster to the new one.