Eu tenho uma pergunta muito interessante, é possível que cassandra não inicie o processo de reconstrução para qualquer keyspace reparado? se tivermos poucos em estado não reparado, use esta opção: nodetool reconstrução --DATACENTER -ks KEYSPACE_NAME.
Vimos o experimento estranho ontem, se houver poucos keyspaces não reparados em nosso cluster e decidimos alterar, por exemplo, a estratégia de replicação para algum keyspace que já foi reparado e usando este comando: nodetool reconstrução --DATACENTER -ks KEYSPACE_NAME - este comando caiu com: Não foi possível encontrar fontes suficientes para o intervalo de streaming, mas se iniciarmos o comando sem --DATECENTER: nodetool reconstrução -ks KEYSPACE_NAME - os dados serão exibidos em todos os novos nós, em vez de apenas um, podemos usar isso abordagem ou é má ideia?
A operação de reconstrução não tem nenhuma relação com reparos.
nodetool rebuild
preencherá dados para intervalos de token em um nó, dependendo se os dados foram transmitidos antes ou não (através de bootstrap ou reconstrução).Cassandra armazena o "estado" dos intervalos de token de um nó na
system.available_ranges
tabela. Se um nó foi inicializado ou reconstruído com sucesso, ele armazenará os intervalos disponíveis para cada keyspace para saber quais dados pode servir para solicitações de leitura.Além disso, este erro:
teria sido devido à remoção do controlador de domínio de origem da replicação, portanto, Cassandra não pôde reconstruir o novo controlador de domínio porque não há mais réplicas no controlador de domínio de origem que você especificou.
Quando você removeu o DC de origem do
rebuild
comando, ele apenas transmitiu os dados dos outros nós no novo DC, o que é ruim porque o DC não possui dados, por definição, é novo.De qualquer forma, seu "experimento" é inválido. O reparo não é uma maneira recomendada de transferir dados para um novo nó. Se fosse, não precisaríamos de
rebuild
.Pense na sua situação em que você tem 2 DCs com 3 réplicas em cada DC. Isso significa um total de 6 réplicas (2 DCs x 3 réplicas). O reparo é muito caro porque compara os dados entre 6 réplicas para determinar quais dados estão faltando no nó em que você o executou.
Como o nó é novo, já sabemos que ele não possui dados, então fazer a comparação com as outras 5 réplicas no cluster é um desperdício de recursos. Tudo o que é necessário é solicitar os dados de outra réplica que é exatamente o que
rebuild
foi projetado para fazer. Saúde!