6

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

Thanks

Rahul Rohilla
  • 105
  • 1
  • 2
  • 8

2 Answers2

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.

dkblinux98
  • 386
  • 2
  • 6
  • 2
    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. – Rahul Rohilla Dec 27 '13 at 02:24
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
Steve Prentice
  • 23,230
  • 11
  • 54
  • 55
  • 1
    Thank you, this has the benefit of keeping all user accounts intact, as opposed to the deletion of the subdirectories of the data dir. – zovits May 09 '18 at 10:57
  • added quotes for the keyspace: echo "drop keyspace \"$ks\";" | cqlsh – Richard Day Jun 11 '20 at 17:15