Drop all keyspaces in cassandra
Asked Answered
S

2

6

How to drop all keyspace in cassandra, I have requirement where I have to delete all keyspaces created by some test scripts.

Thanks

Swoop answered 26/12, 2013 at 12:18 Comment(0)
D
13

Are you looking for a method other than drop keyspace?

Okay based on your clarification...

I would say the best way to reset cassandra would be to delete the contents of the <data dir>/data/* <data dir>/commitlog/* <data dir>/saved_caches/*

and then restart the services on the nodes beginning with the seed node and continuing with a 2 minute gap between each node start. That will take the nodes back to a clean state with respect to the data but leave the customizations in cassandra.yaml intact. This would also reset any changes made to the "system" keyspaces at the cqlsh level such as changing a replication factor.

Diaphragm answered 26/12, 2013 at 21:10 Comment(1)
There are arbitrary number of keyspaces created( with random name and in several hundreds). Drop keyspace only deletes one keyspace at a time. I am looking to delete all keyspace or something like factory reset of cassandra database.Swoop
A
11

I use this script below to drop all keyspaces:

keyspaces=$(echo desc keyspaces | cqlsh | xargs -n1 echo | grep -v ^system)
for ks in $keyspaces; do
    echo Dropping $ks
    echo "drop keyspace $ks;" | cqlsh
done
Armor answered 14/4, 2015 at 15:7 Comment(2)
Thank you, this has the benefit of keeping all user accounts intact, as opposed to the deletion of the subdirectories of the data dir.Florencio
added quotes for the keyspace: echo "drop keyspace \"$ks\";" | cqlshIlo

© 2022 - 2024 — McMap. All rights reserved.