Cassandra 如何使用开始和结束令牌范围运行压缩

Cassandra 如何使用开始和结束令牌范围运行压缩,cassandra,cassandra-3.0,Cassandra,Cassandra 3.0,我需要在一个非常大的表上运行压缩,40%的磁盘空间是空闲的,但压缩需要很长时间,并填满100%的磁盘,然后Cassandra进程停止,因此我决定按开始和结束令牌范围运行压缩,我选择范围: cassandra@cqlsh> SELECT tokens FROM system.local; tokens {'-1086477467151825006', '-6979941880848102278', '-9077716633074993870', '4450419032446811241'

我需要在一个非常大的表上运行压缩,40%的磁盘空间是空闲的,但压缩需要很长时间,并填满100%的磁盘,然后Cassandra进程停止,因此我决定按开始和结束令牌范围运行压缩,我选择范围:

cassandra@cqlsh> SELECT tokens FROM system.local;
 tokens
 {'-1086477467151825006', '-6979941880848102278', '-9077716633074993870', '4450419032446811241', '7953145647081579725', '945723047588545683'}
当我通过指定开始和结束令牌范围来运行compact命令时,会出现以下错误:

$nodetool repair -st -1091112185956497009 -et -1164785492893427439 main tbl_evetns

error: Repair job has failed with the error message: [2021-06-02 22:57:42,499] Requested range (-1091112185956497009,-1164785492893427439] intersects a local range ((6717615618706114838,7883825036204854784]) but is not fully contained in one; this would lead to imprecise repair. keyspace: main
-- StackTrace --
java.lang.RuntimeException: Repair job has failed with the error message: [2021-06-02 22:57:42,499] Requested range (-1091112185956497009,-1164785492893427439] intersects a local range ((6717615618706114838,7883825036204854784]) but is not fully contained in one; this would lead to imprecise repair. keyspace: main
        at org.apache.cassandra.tools.RepairRunner.progress(RepairRunner.java:116)
        at org.apache.cassandra.utils.progress.jmx.JMXNotificationProgressListener.handleNotification(JMXNotificationProgressListener.java:77)

最好使用
nodetool-ring
查找特定节点拥有的确切范围,然后发出相应的修复命令


但实际上,最好使用-它会自动进行计算,将拥有的范围拆分为子范围,等等。

我使用nodetool修复和nodetool环查找令牌范围,但范围不完全匹配,而且我检查了repear,我找不到确切的位置可以看到范围拆分,只能在“视图段”中看到按钮,开始和结束范围,但不是分割。在收割机中,您指定要创建多少段,然后它将执行所有计算。如果您有巨大的分区,那么可能需要更多的段来添加更多的注释,我发现“nodetool descripbering”列出了节点上每个键空间范围的开始和结束标记