Cassandra 我们是否可以在现有集群中添加具有更高复制系数的新数据中心

Cassandra 我们是否可以在现有集群中添加具有更高复制系数的新数据中心,cassandra,Cassandra,在Cassandra中,在同一集群中添加复制因子更高的新数据中心会抛出一个错误,即在任何源数据中心中都找不到复制因子为1的某个范围 我的数据中心有(X-RF=2)和(Y-RF=1)。我想添加数据中心(Z-RF=3) 我在数据中心Z中添加了一个节点。 但是 nodetool重建--X 它因错误而失败 java.lang.IllegalStateException:在复制因子为1的键空间中找不到足够的流范围(-368507434747697686,-3680615207285604279]的源 所有

在Cassandra中,在同一集群中添加复制因子更高的新数据中心会抛出一个错误,即在任何源数据中心中都找不到复制因子为1的某个范围

我的数据中心有(X-RF=2)和(Y-RF=1)。我想添加数据中心(Z-RF=3)

我在数据中心Z中添加了一个节点。 但是

nodetool重建--X

它因错误而失败

java.lang.IllegalStateException:在复制因子为1的键空间中找不到足够的流范围(-368507434747697686,-3680615207285604279]的源

所有柱族的基本详细信息:

AND bloom_filter_fp_chance = 0.01

AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'

AND comment = ''

AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'}

AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'}

AND dclocal_read_repair_chance = 0.1

AND default_time_to_live = 0

AND gc_grace_seconds = 864000

AND max_index_interval = 2048

AND memtable_flush_period_in_ms = 0

AND min_index_interval = 128

AND read_repair_chance = 0.0

AND speculative_retry = '99.0PERCENTILE';

您需要做的是更改KEYSPACE,然后重新生成nodetool。复制从descripe KEYSPACE KEYSPACE_name获得的文本,但在开头不创建。在复制中添加新的数据中心

ALTER KEYSPACE keyspace_name WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1, 'datacenter2' : 3 };
然后做:

nodetool rebuild -- datacenter1

您的当前配置(如密钥空间定义中所示)是针对单个DC的。您需要更改密钥空间it,以便将另一个DC包含到其中。这将启动复制过程:将读取/写入的密钥将复制到新DC。要完全复制所有数据,您需要(另外)要根据您的评论使用
nodetool rebuild--DC2
命令

,请执行以下操作-
“我已经更改了键空间,但对于默认的键空间,如(system_distributed),它会抛出错误”

除了特定于用户的键空间外,请确保默认系统键空间(如“system_distributed”)位于“NetworkTopologyStrategy”(对于多DC,SimpleStrategy上没有键空间,本地策略除外)
参考:第2点

你可以发布键空间吗?尝试在qlshKeyspace中使用“descripe keyspace”来创建超过100个的列族。你到底想看到什么。下面我分享了一些常见的细节,请看一看:实际上我想要键空间语句本身。创建键空间等。我使用了非常基本的查询来创建键空间:Create KEYSPACE keyspace_name WITH REPLICATION={'class':'NetworkTopologyStrategy','datacenter1':1};您所说的在文档中提到,并且在文档之后,我在生产中部署了datacenter 2-3次,同样有效。但是现在,当我尝试创建另一个数据中心时,它给出了错误(ava.lang.IllegalStateException:)正如我在帖子中提到的。我的另一个数据中心有cassandra版本2.2.9,现在最新的cassandra debian软件包提供了2.2.11版本。从您的文本来看,运行“nodetool rebuild--X”时似乎出现了错误。我的意思是,在执行重建之前,您必须更改密钥空间。我已经更改了密钥空间,但对于默认密钥空间(如system_distributed),它会引发错误。您所建议的对于3.0版和更高版本是正确的。但我使用的是2.2.X版。同样的情况也适用于2.2: