清空Cassandra中的所有keyspaces

6
如何在Cassandra中删除所有keyspace,我有一个需求,需要删除一些测试脚本创建的所有keyspace。
谢谢。
2个回答

13

如果您想寻找一个除了drop keyspace之外的方法,那么...

根据您的澄清,我认为最好的重置Cassandra的方法是删除以下目录下的内容:

<data dir>/data/* <data dir>/commitlog/* <data dir>/saved_caches/*

然后从种子节点开始,在每个节点之间留2分钟的间隔重新启动节点服务。这将使节点回到数据的干净状态,同时保留cassandra.yaml中的自定义设置。这也会重置在cqlsh级别对“system”keyspace所做的更改,如更改复制因子。


2
有任意数量的keyspace被创建(使用随机名称,数量达到几百个)。删除keyspace只能一次删除一个。我想要删除所有keyspace或类似于Cassandra数据库的工厂重置。 - Rahul Rohilla
2
谢谢!谢谢!谢谢! - mynkow

11

我使用下面的脚本删除所有keyspace:

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

1
谢谢,这样做可以保留所有用户账户的完整性,而不是删除数据目录下的子目录。 - zovits
为键空间添加引号:echo "drop keyspace "$ks";" | cqlsh - Richard Day

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接