[Cassandra:将磁盘运送到新DC以同步50TB数据

问题描述 投票:1回答:1

我们正在向Cassandra集群添加新的数据中心。当前,我们有一个15节点DC,RF = 3,导致大约50TB〜的数据。

我们正在其他国家/地区添加另一个数据中心,我们希望两个数据中心都包含所有数据。显然,通过Internet同步50TB数据将花费大量时间。

是否可以将完整副本复制回几个磁盘,然后将其运送到新的DC,然后恢复?我只是想知道这样做的程序是什么。

如果可能的话,有人可以给我一些有关此操作的提示吗?还是其他提示?

我们的新DC暂时将较小(6个节点),尽管将有足够的可用空间。通常,新的DC主要是指实时备份/故障转移,它并不是写入的主要集群。

database cassandra replication database-replication cassandra-3.0
1个回答
0
投票

TL; DR;由于两个DC之间的拓扑结构(节点数)有所变化,因此AFAIK不可能避免流式传输数据。

暂时来说,我们的新DC将更小(6个节点)

由于节点上的令牌对齐方式不同(新集群的环将更改),因此典型过程无法正常工作。因此,仅复制现有的SSTables不会起作用,因为保存这些表的节点可能没有对应于文件中数据的令牌,因此C *无法找到所述数据。

将数据大容量装载到新DC中也已完成,因为如果重新插入旧数据,则将覆盖旧数据。

如果要保留拓扑,以概述该过程:

  1. 快照原始DC中的数据
  2. 配置新的DC。为每台计算机设置initial_token非常重要。通过在原始群集上运行nodetool ring,可以获得所需令牌的列表。这就是为什么您需要相同数量的节点的原因。重要的是,在复制SSTable文件时,您需要文件和令牌来自同一节点。
  3. 将数据运送到新的DC(请记住,如果新节点10.0.0.1从旧dc中的192.168.0.100获得了令牌,那么它还必须从192.168.0.100获得其快照数据)。
  4. 启动新的DC,并确保两个DC彼此都能看到。
  5. 重建并修复system_distributedsystem_auth(假设您已启用身份验证)
  6. 将客户端一致性更新为您所需的任何内容。 (您是否要同时向两个DC都写?从您的描述听起来像是“否”,所以您可能都还不错)。
  7. 更新架构,确保对要共享的任何密钥使用NetworkTopologyStrategy,然后为新DC添加一些复制。
    ALTER KEYSPACE ks WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'oldDC' : 3, 'newDC':3 };
  1. 对新DC中的每个节点进行全面修复。
© www.soinside.com 2019 - 2024. All rights reserved.