我们正在向Cassandra集群添加新的数据中心。当前,我们有一个15节点DC,RF = 3,导致大约50TB〜的数据。
我们正在其他国家/地区添加另一个数据中心,我们希望两个数据中心都包含所有数据。显然,通过Internet同步50TB数据将花费大量时间。
是否可以将完整副本复制回几个磁盘,然后将其运送到新的DC,然后恢复?我只是想知道这样做的程序是什么。
如果可能的话,有人可以给我一些有关此操作的提示吗?还是其他提示?
我们的新DC暂时将较小(6个节点),尽管将有足够的可用空间。通常,新的DC主要是指实时备份/故障转移,它并不是写入的主要集群。
TL; DR;由于两个DC之间的拓扑结构(节点数)有所变化,因此AFAIK不可能避免流式传输数据。
暂时来说,我们的新DC将更小(6个节点)
由于节点上的令牌对齐方式不同(新集群的环将更改),因此典型过程无法正常工作。因此,仅复制现有的SSTables不会起作用,因为保存这些表的节点可能没有对应于文件中数据的令牌,因此C *无法找到所述数据。
将数据大容量装载到新DC中也已完成,因为如果重新插入旧数据,则将覆盖旧数据。
如果要保留拓扑,以概述该过程:
nodetool ring
,可以获得所需令牌的列表。这就是为什么您需要相同数量的节点的原因。重要的是,在复制SSTable文件时,您需要文件和令牌来自同一节点。system_distributed
和system_auth
(假设您已启用身份验证)NetworkTopologyStrategy
,然后为新DC添加一些复制。 ALTER KEYSPACE ks WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'oldDC' : 3, 'newDC':3 };