【发布时间】:2016-12-07 22:15:18
【问题描述】:
我知道有几个类似的问题,但我仍然对此感到困惑。由于需要这种机制(将数据从一个集群复制到另一个集群),我正在寻找一些说明。
让我们假设一个非常简单的场景。我想将一个表从一个 cassandra 集群 (C1) 复制到另一个 (C2)。我正在复制的表称为“项目”。
假设每个集群的节点数相同(集群中的源节点和目标节点各 4 个)。不确定是否重要。
我正在尝试使用快照和 sstableloader 来解决问题。我已经能够创建快照,将快照文件从 C1:N1(集群 1 节点 1 .../myspace/item-xxxxxx/snapshot/######)复制到目标表目录 C2:N1(集群2 节点 1:.../myspace/item-xxxxxx)。我使用 sstableloader 加载数据并运行 nodetool repair。完美的。唯一的问题是,由于加载的快照仅来自一个源节点,我只“恢复”了部分数据(大约 1k 行中的 485 行)。所以我想我会再次将快照从 C1:N2 复制到 C2:N1 并加载它。问题是 C2:N1 上已经存在所有表文件。如果我将快照文件从 C1:N2 复制到 C2:N1 上的表目录,我会吹走已经存在的文件。我没有检查所有 4 个目标节点,但我确实检查了目标的节点 2,并且项目表目录也已经存在于数据文件中。我猜目标上的所有节点都有数据文件,所以我不知道如何 sstableload 其他 3 个源节点快照文件。
长话短说(如果可能的话): 我应该如何将多个源快照文件(来自源集群上的每个主机的一个)加载到目标集群?更复杂的是,源集群和目标集群是否有不同数量的节点是否重要(我认为目标上的节点越少可能会是一个更大的问题)。
在我看来,这里真正需要的是一种在 SOURCE 集群上运行 ssableloader 并将数据流式传输到目标集群的方法。我想这会让生活变得更轻松。
提前致谢。
-吉姆
【问题讨论】: