How to use sstableloader in ScyllaDB docker container

Installation details
#ScyllaDB version: scylladb/scylla:latest
#Cluster size:
os (RHEL/CentOS/Ubuntu/AWS AMI):

Hello

I guess I’m just to dumb to see it. How can I use/start sstableloader inside the scylla-Container?

Can someone please help me out?

Thanks in advance!
daprodigy

Which version of ScyllaDB are you using?
Note that we have deprecated and removed sstableloader in ScyllaDB 6.1. We recommend that you use nodetool refresh --load-and-stream to load SSTables into the cluster instead.

1 Like

Hello

Thank you very much for the answer.

So what are the basic steps for a cold migration from Cassandra to ScyllaDB?

I put all the .db-Files from the Cassandra-Snapshot to the import-Folder of the appropriate Table in ScyllaDB. After running nodetool refresh --load-and-stream the files in the import-Folder were removed but select count() still returns 0.

Thank you,
daprodigy

Is there anything in the ScyllaDB logs? Does the table you import the data to have sstables after the import?

Where can I find the logs?

I tried the following:

  • Copied the Cassandra snapshot to the scylladb-import-folder (data/keyspace/table-uuid/import) and run 'nodetool refresh --load-and-stream
  • Copied the Cassandra snapshot to the scylladb-data-folder (data/keyspace/table-uuid) and run 'nodetool refresh
  • --load-and-stream
  • Copied the Cassandra snapshot to the scylladb-data-folder (data/keyspace/table-uuid) and run 'nodetool refresh
  • Afterwards I check the data like 'Select count(Id) from keyspace.table; and it returns 0 in every of the described tries.

    Thank you

I have the following setup:
1 Cassandra node with …

  • 1 keyspace (class: SimpleStrategy, replication_factor: 1)
  • 2 tables

Now i want to cold-migrate to scylladb running in a docker container. The setup stays the same. Just one simple node, one keyspace and 2 tables. What are the basic steps? Which image should I use? scylladb or scylladb-enterprise?

Appreciate any help! Thank you.

Ok, i tried a simple test and get an error. Here the steps:

In cassandra (5.0.4) container:

1: Create Keyspace

CREATE KEYSPACE IF NOT EXISTS edm WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor' : 1};

2: Create Table

CREATE TABLE IF NOT EXISTS edm.Zeitreihe(
	Id int, 
	Datum timestamp, 
	Wert decimal,
	Status int,
	PRIMARY KEY (Id, Datum)
);

3: Insert some Data

INSERT INTO edm.zeitreihe(Id, Datum, Wert, Status) VALUES (1, '2025-02-01', 8.45, 3);
INSERT INTO edm.zeitreihe(Id, Datum, Wert, Status) VALUES (2, '2025-02-01', 1.45, 2);
INSERT INTO edm.zeitreihe(Id, Datum, Wert, Status) VALUES (3, '2025-02-01', 2.45, 4);
INSERT INTO edm.zeitreihe(Id, Datum, Wert, Status) VALUES (4, '2025-02-01', 3.45, 9);
INSERT INTO edm.zeitreihe(Id, Datum, Wert, Status) VALUES (5, '2025-02-01', 4.45, 2);

4: Create snapshot

nodetool stop compaction
nodetool snapshot edm -t foobar

5: Stoping cassandra container and starting scylladb (2025.1.2) container
6: Reexecute steps 1 and 2 inside ScyllaDB
7: Copy the following files from cassandra/data/edm/zeitreihe-uuid/snapshots/foobar/ to scylla/data/edm/zeitreihe-uuid/upload

nb-1-big-CompressionInfo.db
nb-1-big-Data.db
nb-1-big-Filter.db
nb-1-big-Index.db
nb-1-big-Statistics.db
nb-1-big-Summary.db

8: Import data via nodetool

nodetool refresh edm zeitreihe --load-and-stream

… returns the following error:

error executing POST request to http://localhost:10000/storage_service/sstables/edm with parameters {"load_and_stream": "true", "cf": "zeitreihe"}: remote replied with status code 500 Internal Server Error:
Failed to load new sstables: sstables::malformed_sstable_exception (invalid version for file nb-1-big-Summary.db. Name doesn't match any known version.)

I get the same error if I copy only the file nb-1-big-Data.db into the upload-Folder.

I hope this helps to identify the problem or my misunderstanding.

Many thanks in advance!

daprodigy