在线批量删除(截断)Cassandra Keyspace

6

我了解到,当你排空一个节点后,可以删除文件然后重新启动节点。这个方法可以正常运行,但是我只尝试了同时排空所有节点、关闭整个集群、删除文件并重新启动的情况。

如果我只重启一个节点会发生什么?据我所知,存在某种风险,即重启节点将接受读取请求,并使用来自其他副本的数据执行读取修复。

是否有人知道在保持整个集群运行以服务其他keyspace的情况下,截断keyspace最安全的程序是什么?

1个回答

8
$ bin/cassandra-cli -h localhost
[default@unknown] use keyspace1;
Authenticated to keyspace: Keyspace1
[default@Keyspace1] truncate standard1;     
standard1 truncated.

按设计,这不是无竞争(这需要重量级锁定);通常情况下,您只会截断一个不提供实时读取的CF。但如果出于某种原因必须这样做,请先禁用读取修复("update column family standard1 with read_repair_chance=0")。


在旧式的cli和cqlsh中运行truncate有区别吗?两者都可以使用吗?还是您建议在遗留列族中使用cassandra-cli而不是从cqlsh中进行截断? - Aaron
使用cqlsh总是有效的。没有理由使用旧的cli。 - jbellis

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