Cassandra:将磁盘运送到新数据中心以同步 50TB 的数据



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

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

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

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

我们的新 DC 暂时会更小(6 个节点(,尽管有足够的空间可用。一般来说,新 DC 主要用于实时备份/故障转移,不会是写入的主群集。

TL;博士;由于两个 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 中的每个节点上运行完全修复。

相关内容

最新更新