Pankaj Yadav
Pankaj Yadav

Reputation: 169

Cassandra: primary range full repair on all nodes of cluster or datacenter

As everyone would agree, Cassandra repairs are necessary but are very expensive and failure prone, gets stuck most of the time if any node in the cluster go down while the repair is running on any other node in the cluster. I am running full sequential repair on primary range using the following command in a rolling fashion:

node repair -pr -full -seq

But have a doubt, Is it enough to run this repair on every node of a data-center (I have 4 different data-centers) or is it required to be run on every node of the whole cluster? I found some documents on this topic, but the language doesn't answer this question properly. For example 3.1 Primary range repair

Upvotes: 3

Views: 2632

Answers (2)

Chris Lohfink
Chris Lohfink

Reputation: 16400


Update: I was actually wrong here thinking ring as two DCs instead of single, the actual token Ring is more of:

    | DC  | Node | Token |
    |-----|------|-------|
    | DC1 |node1 |   1   |     
    | DC2 |node2 |   5   |
    | DC1 |node3 |   10  |
    | DC2 |node4 |   15  |
    | DC1 |node5 |   20  |
    | DC2 |node6 |   25  |

The primary range for node4 here is 11-15, not 6-15 (which is the primary range + local ranges). You must do -pr on each node. Deleting original so it doesn't cause any confusion.

Upvotes: 3

Zanson
Zanson

Reputation: 4031

With repair -pr -full you must run repair on every node in the cluster. See this blog post I wrote a couple years ago for a detailed description of why.

Upvotes: 3

Related Questions