Essa é uma pergunta comum dos operadores do Cassandra que desejam migrar dados de um cluster para outro.
Qual seria o procedimento para restaurar instantâneos de um cluster Cassandra para outro cluster com configuração idêntica?
Essa é uma pergunta comum dos operadores do Cassandra que desejam migrar dados de um cluster para outro.
Qual seria o procedimento para restaurar instantâneos de um cluster Cassandra para outro cluster com configuração idêntica?
Restaurar instantâneos para outro cluster ou "migrar" dados também é conhecido como clonagem de dados. O objetivo é copiar (clonar) os dados do aplicativo para outro cluster, geralmente para fins de teste ou desenvolvimento.
Definição
Dois clusters (ou seja, origem e destino) são considerados como tendo configuração idêntica quando:
Se as condições acima forem verdadeiras, use o "método de atualização" em que SSTables dos nós no cluster de origem são copiados para os nós correspondentes no cluster de destino e depois "carregados" executando
nodetool refresh
.Exemplo de topologia
Aqui está um exemplo de um cluster de origem e destino com 3 nós em cada um dos 2 DCs:
nodeA
: tokenA1, tokenA2, tokenA3nodeU
: tokenA1, tokenA2, tokenA3nodeB
: tokenB1, tokenB2, tokenB3nodeV
: tokenB1, tokenB2, tokenB3nodeC
: tokenC1, tokenC2, tokenC3nodeW
: tokenC1, tokenC2, tokenC3nodeD
: tokenD1, tokenD2, tokenD3nodeX
: tokenD1, tokenD2, tokenD3nodeE
: tokenE1, tokenE2, tokenE3nodeY
: tokenE1, tokenE2, tokenE3nodeF
: tokenF1, tokenF2, tokenF3nodeZ
: tokenF1, tokenF2, tokenF3Neste exemplo,
nodeA
(do cluster de origem) enodeU
(no cluster de destino) têm os mesmos tokens atribuídosnodeB
enodeV
têm os mesmos tokens e assim por diante.O método "refresh"
Siga este procedimento para clonar dados de aplicativo de um cluster de origem para o cluster de destino no exemplo.
IMPORTANTE : Crie o keyspace do aplicativo no cluster de destino com as mesmas configurações de replicação do cluster de origem. Por exemplo, se o keyspace de origem estiver configurado com um fator de replicação de 3, ele também precisará ter
RF=3
no cluster de destino.AVISO : NÃO clone keyspaces/tabelas do sistema porque os dados contidos neles são específicos do nó/cluster ao qual pertencem. Apenas clone dados do aplicativo.
PASSO 1 - Para a primeira tabela, crie o esquema no cluster de destino.
PASSO 2 - Tire o snapshot da primeira tabela
nodeA
e copie-o para o diretório de tabela correspondente nonodeU
. Observe que o sufixo dos diretórios de tabela são carimbos de data/hora UUID e serão diferentes entre os clusters, pois são baseados em quando a tabela foi criada.PASSO 3 - Em
nodeU
, force o Cassandra a ler e carregar as novas SSTables do disco com:ETAPA 4 - Verifique os logs no nó para verificar se as novas SSTables foram abertas.
PASSO 5 - Repita os passos acima na próxima tabela e continue repetindo até que todas as tabelas tenham sido migradas.
ETAPA 6 - Repita as etapas acima migrando o snapshot de
nodeB
paranodeV
. Continue repetindo até que todos os nós do segundo cluster tenham os snapshots restaurados.Coisas para saber
sstableloader
para este cenário.Para obter instruções sobre como clonar dados para um novo cluster, consulte Como migrar dados em tabelas para um novo cluster do Cassandra? .