Apache Cassandra é construído para garantir alta disponibilidade em todos os ambientes. Isso significa que, se um único ou múltiplo com um cluster não estiver disponível, os outros nós dentro do cluster lidarão com as operações solicitadas.
No entanto, quando os nós indisponíveis se tornam acessíveis, eles precisam saber quais operações perderam dentro do cluster. Portanto, o Apache Cassandra usa um recurso de dica para alertar o (s) nó (s) de todas as funções que eles perderam enquanto indisponíveis. Embora as dicas possam executar a notificação das operações ausentes, ela não garante uma consistência completa de dados em todo o cluster. Essa inconsistência pode levar à perda de dados, especialmente se um cluster ativo multiplicar as operações do CRUD.
Para evitar uma perda de dados, você precisa executar os reparos de dados, permitindo que os nós sincronizem os dados em todo o cluster com as informações atualizadas.
Neste tutorial, você descobrirá como executar os reparos manualmente no cluster Cassandra usando o utilitário NodeTool.
Tipos de reparos em Cassandra
Cassandra suporta dois tipos principais de reparos:
Reparos incrementais
Por padrão, Cassandra realiza um reparo incremental. Este reparo repara apenas os dados que mudaram desde o reparo anterior. Isso é menos intensivo em recursos e muito útil quando você executa regularmente os reparos.
Uma desvantagem dos reparos incrementais é que, uma vez que os dados são marcados como reparados, Cassandra não tentará repará -los novamente. Isso pode levar à perda de dados, especialmente se o reparo se tornar corrupto.
Reparos completos
Por outro lado, os reparos completos são muito intensivos em recursos, especialmente em operações de E/S de disco e rede. No entanto, eles executam os reparos de dados em todo o cluster, sincronizando as informações corretas e atualizadas.
Poderíamos gastar este artigo inteiro sobre os vários tipos de reparos de Cassandra e como Cassandra lida com os reparos. No entanto, vamos entrar no prato principal do artigo.
O comando de reparo nodeTool
Para executar um reparo de dados em um cluster Cassandra, usamos o comando de reparo do NodeTool. A sintaxe do comando e as opções são como mostrado:
Dependendo do método especificado, o comando de reparo executa um reparo completo ou incremental em um ou mais nós.
Como executar um reparo completo no cluster de Cassandra
Nesta seção, vejamos como podemos executar um reparo completo em um cluster de Cassandra.
Nota: Para melhor ilustrar um reparo completo, execute os comandos neste tutorial em um cluster com três ou mais nós.
Etapa 1: Crie um espaço de chave com um fator de replicação de 3 (ou para o número de nós disponíveis).
Cassandra@cqlsh> Criar desenvolvimento de chaves
… Com replicação = 'class': 'spleStrategy', 'replicação_factor': 3;
Etapa 2: crie uma tabela e adicione dados de amostra.
Cassandra@cqlsh: Desenvolvimento> Criar Tabela T (id int, Text Name, Age int, Primary Key (ID));
Etapa 3: Adicione um amostra de dados.
Cassandra@cqlsh: desenvolvimento> inserir em t (id, nome, idade) valores (0, 'user1', 2);
Cassandra@cqlsh: desenvolvimento> inserir em valores t (id, nome, idade) (1, 'user2', 3);
Cassandra@cqlsh: desenvolvimento> inserir em valores t (id, nome, idade) (2, 'user3', 5);
Etapa 4: Obtenha um Dados armazenados na tabela.
Cassandra@cqlsh: desenvolvimento> selecione * de t;
Saída:
id | idade | nome
----+-----+-------
1 | 3 | Usuário2
0 | 2 | Usuário1
2 | 5 | Usuário3
Etapa 5: atualize o espaço para incluir 4 réplicas.
Cassandra@CQLSH: Desenvolvimento> Alter
… Com replicação = 'classe': 'símersrategy', 'replicação_factor': 4;
Aumentar o número de réplicas imita a operação de um nó no cluster descendo e voltando.
Aumentar o fator de replicação deve fornecer uma mensagem para executar um reparo de dados.
Etapa 6: execute um reparo completo de dados como:
$ NodeTool Repair -full Development
O comando anterior executa um reparo completo em todas as tabelas no espaço de chave especificado. Para reparar apenas uma tabela, podemos executar o seguinte comando:
$ NodeTool Repair -full Development t
Isso deve reparar apenas a tabela "T" no espaço de chave.
Para visualizar o status do reparo, você pode usar o comando tpstats:
$ nodeTool tpstats
Conclusão
Neste artigo, você aprendeu a executar o reparo completo de Cassandra usando o utilitário NodeTool.
Obrigado pela leitura!