Respostas:
Ao examinar a documentação, estou tendo dificuldade em encontrar uma referência para isso, mas a resposta curta é "sim", você precisa executar nodetool repair
em cada nó do cluster. O mais próximo que posso encontrar é a documentação sobre o reparo de nós, que sugere que você não deve executar o reparo em mais de um nó no cluster por vez.
Você também pode executar o reparo com o -pr
sinalizador, o que limita a operação de reparo ao primeiro intervalo de tokens pelo qual o nó atual é responsável. Isso reduz a duplicação de trabalho quando executada nos nós restantes.
-pr
em todos os nós, ele cobrirá todo o (s) espaço (s) de chaves.
-pr
sinalizador.
Como ele se comporta depende da sua configuração, qual versão do Cassandra você usa e como você executa o comando de reparo.
Se você apenas executar nodetool repair
em um único nó em um cluster, ele reparará todos os dados (intervalos de token) pelos quais o nó é responsável e também os outros nós responsáveis por esses dados.
Por exemplo, se você executasse o nodetool repair
comando em um único nó em um determinado cluster:
Dito isso, é possível definir quais hosts e datacenters executar reparos no uso dos sinalizadores -hosts
e -dc
. Além disso, se você usar o -pr
sinalizador (que selecionará apenas o primeiro intervalo de tokens pelo qual o nó é responsável), será necessário executar nodetool repair -pr
em todos os nós no cluster.
Outra bandeira a ter em mente é a -inc
bandeira, que foi incluída no Cassandra 2.1. Esta opção irá reparar apenas novos dados (dados que não foram reparados anteriormente). Tenha cuidado ao confiar nisso, especialmente se você excluir dados com freqüência. ( mais sobre isso )
Outra coisa a ter em mente é que a maneira padrão de reparo no Cassandra pode variar. A partir do Cassandra 2.1, quando executado, nodetool repair
ele executa um reparo seqüencial completo por padrão. Você deseja pesquisar o que sua versão faz.
Para mais informações sobre o tópico:
Não, você não precisa executar em cada nó individual. nodetool repair
é executado no conjunto de nós, que está claramente indicado na documentação .
Você pode limitar os nós ou parte dos dados nos quais deseja executar o reparo. Por exemplo, você pode fornecer a -pr
opção para o intervalo do particionador, intervalo pelo qual o nó é responsável, mas isso terá que ser executado em todo o cluster. Mas se você escolher -local
, os nós no datacenter local do nó serão reparados.
nodetool repair
em um único nó não é suficiente para reparar todos os dados replicados em todos os nós em todas as configurações. A execução nodetool repair
em um único nó reparará apenas os dados replicados nesse nó. (A adição da -pr
opção limita o reparo aos dados para os quais esse nó é a primeira réplica.) Mas se você tiver dados em seu cluster que não são replicados nesse nó, será necessário executar nodetool repair
em nós adicionais.
-pr
em todos os nós, isso cobrirá todo o espaço de chave?