Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra 卡桑德拉:可以';不能使用快照快速扩展集群吗?_Cassandra_Cassandra 2.1 - Fatal编程技术网

Cassandra 卡桑德拉:可以';不能使用快照快速扩展集群吗?

Cassandra 卡桑德拉:可以';不能使用快照快速扩展集群吗?,cassandra,cassandra-2.1,Cassandra,Cassandra 2.1,这详细说明了如何将数据复制到新群集: 难道不能使用类似的方案快速扩展现有数据的集群吗?比如说,拍摄所有节点的快照,将它们全部复制到新节点,在yaml中设置令牌,将对等点设置为指向旧实例,然后将它们连接起来 它们不会被视为曾经是集群的一部分并重新加入的节点吗?这不会起作用,因为快照特定于它们所在的节点。添加(或删除)节点后,将重新计算所有节点上的令牌范围,并立即使任何现有快照无效。将快照恢复到另一个节点似乎是可行的,但它只提供与其令牌范围匹配的数据 此外,它将尝试提供与其令牌范围匹配的数据,无论

这详细说明了如何将数据复制到新群集:

难道不能使用类似的方案快速扩展现有数据的集群吗?比如说,拍摄所有节点的快照,将它们全部复制到新节点,在yaml中设置令牌,将对等点设置为指向旧实例,然后将它们连接起来


它们不会被视为曾经是集群的一部分并重新加入的节点吗?

这不会起作用,因为快照特定于它们所在的节点。添加(或删除)节点后,将重新计算所有节点上的令牌范围,并立即使任何现有快照无效。将快照恢复到另一个节点似乎是可行的,但它只提供与其令牌范围匹配的数据


此外,它将尝试提供与其令牌范围匹配的数据,无论您从中还原的快照是否具有该数据。这不是一个好的方案。

是的,但您可以使用initial_token在yaml中硬编码令牌范围,它们在不同的情况下在链接文章中进行。@ConstanceEustace即使您完全控制令牌范围分配,将快照还原到新节点的唯一方法也是有意义的,新节点上的令牌范围是否与另一个匹配。Cassandra不允许这样做,所以集群中每个节点的vnode令牌必须是不同的?Cassandra需要一些sneakernet节点站立功能。也许我们可以让一个节点加入,查看它的令牌,然后使用一个特殊的sstableloader,它只从其他节点的sstable快照发送本地相关的令牌。不过,这可能仍然会将数据流传输到其他节点。进行扩展的唯一方法是添加节点并等待自然流发生?@ConstanceEustace正确。将数据流传输到新节点几乎是唯一的方法。如果在引导时进行流式处理是一个问题,那么如果您有另一个数据中心进行流式处理,则始终可以使用
nodetool rebuild
。经过更多阅读:-vnode标记是随机生成的-我相信“新”节点也是如此-理论上我认为这应该是可能的,如果我们想使集群加倍:1)将快照放在三个新节点上。2) 在每个节点上,获取被复制节点的令牌,并计算该节点负责的主要范围之间的中点3)将新节点设置为那些计算出的中点令牌。应保持RF,因为相邻的主范围是RF,新节点是旧节点的RF。。我要试一试