Tenho cerca de 60 GB de dados em um cluster Scylla simples e gostaria de migrá-los para Cassandra 4.1.5. Tirei um instantâneo do scylla com o comando
nodetool snapshot -t scylla-20240524 --table <table> <keystore>
Agora estou tentando importá-lo para o Cassandra executando
bin/sstableloader -d localhost -k <keystore> /mnt/scylla-20240524
Mas recebo a seguinte saída:
Established connection to initial hosts
Opening sstables and calculating sections to stream
Skipping file me-4332-big-Data.db: table <keystore>.scylla doesn't exist
Skipping file me-4333-big-Data.db: table <keystore>.scylla doesn't exist
Skipping file me-4334-big-Data.db: table <keystore>.scylla doesn't exist
Skipping file me-4335-big-Data.db: table <keystore>.scylla doesn't exist
Skipping file me-4400-big-Data.db: table <keystore>.scylla doesn't exist
Skipping file me-4401-big-Data.db: table <keystore>.scylla doesn't exist
Skipping file me-4402-big-Data.db: table <keystore>.scylla doesn't exist
Skipping file me-4403-big-Data.db: table <keystore>.scylla doesn't exist
Summary statistics:
Connections per host : 1
Total files transferred : 0
Total bytes transferred : 0.000KiB
Total duration : 3954 ms
Average transfer rate : 0.000KiB/s
Peak transfer rate : 0.000KiB/s
Não consigo encontrar 'scylla' como tabela no esquema scylla... há algo que devo fazer para preparar o esquema cassandra? ou o que mais?
O problema tem a ver com o diretório para o qual você está passando
sstableloader
. O formato para executar o comando é:onde
table_name/
deve estar o nome da tabela que você está clonando e o subdiretório que contém os arquivos de dados. No seu caso, o caminho que você forneceu é/mnt/scylla-20240524
para que o comando do carregador pense que o nome da tabela éscylla
.Você precisa copiar o conteúdo do snapshot para uma estrutura de diretórios que siga o formato
ks_name/table_name/
.Se você estiver interessado, escrevi anteriormente um procedimento passo a passo para clonar dados de um cluster para outro em Como migrar dados em tabelas para um novo cluster Cassandra? . Saúde!
A opção alternativa é aproveitar esta ferramenta DSBulk totalmente OSS , pois ela pode muito bem lidar com 60 GB perfeitamente para o seu caso de uso aqui.
Pode ser tão simples quanto este comando,
Observação: isso não usa armazenamento local, pois estamos usando a função pipe para aproveitar as linhas descarregadas diretamente do cluster de origem e carregá-las em nosso cluster de destino.
Recursos