Estou tendo dificuldade em restaurar o instantâneo no Apache Cassandra (versão 3.0.9). Até onde posso dizer, estou seguindo o procedimento descrito no blog do datastax, junto com vários outros (por exemplo: link ). No entanto, posso estar perdendo alguma coisa e, toda vez que faço uma restauração, faltam dados.
Configuração:
Cluster de 6 nós (1 DC, 3 racks com 2 nós cada) com um fator de replicação definido como 3. As máquinas são hospedadas no AWS.
Procedimento de backup (em cada nó):
-
nodetool snapshot mykeyspace
-
cqlsh -e 'DESCRIBE KEYSPACE mykeyspace' > /tmp/mykeyspace.cql
-
nodetool ring | grep "$(ifconfig | awk '/inet /{print $2}' | head -1)" | awk '{print $NF ","}' | xargs > /tmp/tokens
Eu obtenho os arquivos gerados pelo comando nodetool snapshot e os faço backup junto com tokens e cql no S3.
Procedimento de restauração (para cada nó, a menos que seja especificado):
(depois de ter criado novas VMs)
- Download de instantâneos, tokens e espaço de chaves
- Parar serviço cassandra
- Excluir
/var/lib/cassandra/commitlog/*
e /var/lib/cassandra/system/
- Inserir tokens em
cassandra.yaml
- Iniciar cassandra de serviço
- Restaurar mykeyspace de
mykeyspace.cql
apenas em um nó
- Aguarde replicação e pare a cassandra de serviço
- Excluir
.db
arquivos na pasta /var/lib/cassandra/data/mykeyspace/
- Para cada cópia de tabela, os arquivos de instantâneos (
.db
, .crc32
, .txt
) em /var/lib/cassandra/data/mykeyspace/$table/
- Reinicie o serviço cassandra
- Executar
nodetool repair mykeyspace -full
, um nó por vez
Resultado:
Sempre faltam linhas, aproximadamente a mesma quantidade para cada tabela, mas nunca as mesmas. Eu tentei "misturar" um pouco o procedimento, como restaurar o espaço de chaves antes dos tokens, executando nodetool refresh
antes do reparo, mas eu sempre encontro o mesmo problema.
Como não estou longe de ter uma restauração "boa", acho que estou perdendo algo bastante óbvio. Analisar os logs realmente não ajudou, já que eles não mostram nenhuma mensagem de erro / falha.
Qualquer ajuda seria bem-vinda :) Posso dar mais informações, se necessário.
editar: ninguém? Eu atualizei a questão com a versão cassandra (3.0.9), que eu esqueci em primeiro lugar. Eu tentei novamente para restaurar, mas sem sorte. Eu não tenho mais nenhuma ideia: (