2

Cassandra is a distributed database, where each node is in sync with the other nodes from the same ring/cluster.

When taking backups based on a snapshot, do I need to back up each node individually or is one enough?

The docs say:

To take a global snapshot, run the nodetool snapshot command using a parallel ssh utility, such as pssh.

Am I missing a point here?

2

the short answer -> you have to take snapshots on all nodes.

As you pointed out, Cassandra is a distributed database. As an example, suppose you have 3 nodes with a replication factor (RF) of 2. Each node has primary responsibility for 1/3 of all the tokens in the ring. In addition, each node has a replica from the another node, and nodetool status will show "Owns 66.6%" (2 replicas / 3 nodes).

If you only backup one node, you only get the data on that node plus whatever replicas are being stored on that node. Since the data is distributed, you will end up missing some data unless you take snapshot on all nodes.

  • I got the same answer from a senior dev approx. at the same time as this answer came in :) – Hubert Grzeskowiak Aug 21 '17 at 1:41
  • If you have an RF=2 in a 3 node ring, why do you need to backup 3 nodes? Wouldn't any 2 nodes have all the data? – Bruno Bronosky Apr 16 '18 at 22:34
  • @BrunoBronosky for this one case (N=3, RF=2), you are correct. With SimpleStrategy replication for example, Node1 will have its own data and a replica of Node3. Node2 has its data and a copy of Node1. Node3 has a its data and a copy of Node2. You are correct in saying that any 2 nodes will have all the data in this scenario. – LHWizard Apr 17 '18 at 12:12

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.