2016-08-02 61 views
0

我知道有几个类似的问题,但我仍然对此感到困惑。由于需要这种机制(将数据从一个群集复制到另一个群集),我正在寻找一些解释。卡桑德拉 - 从一个集群复制sstable快照到另一个集群

让我们假设一个非常简单的场景。我想将一个表从一个cassandra集群(C1)复制到另一个(C2)。我正在复制的表格被称为“item”。

我们假设每个群集的节点数是相同的(每个群集中的源节点和目标节点都是4)。不确定事情与否。

我正在尝试使用快照和sstableloader来做伎俩。我已经能够创建快照,将C1:N1(群集1节点1 .../myspace/item-xxxxxx/snapshot/######)中的快照文件复制到目标表目录C2:N1(群集2节点1:.../myspace/item-xxxxxx)。我用sstableloader来加载数据并运行nodetool修复。完善。唯一的问题是,由于加载的快照仅来自其中一个源节点,我只能“还原”部分数据(大约1k行中的485个)。所以我想我会再次将快照从C1:N2复制到C2:N1并加载它。问题是所有的表文件都已经存在于C2:N1上。如果我将C1:N2中的快照文件复制到C2:N1上的表格目录,我将删除已存在的文件。我没有检查全部4个目标节点,但是我确实检查了目标的节点2,并且项目表目录也已经存在于数据文件中。我猜目标上的所有节点都有数据文件,所以我坚持如何安装其他3个源节点快照文件。

长话短说(如果可能的话): 我该如何将多个源快照文件(源群集上每台主机上的一个源文件)加载到目标群集?并且使事情复杂化起来,如果源和目标集群有不同数量的节点(我认为在目标上拥有更少的节点可能会成为更大的问题)会有关系吗?

在我看来,真正需要的是在SOURCE集群上运行ssableloader并将数据传输到目标集群的方法。我会想,会让生活变得更容易。

在此先感谢。

-Jim

回答

1

two options for bulk loading,看来你可能有他们的半合并在一起。你主要是指“复制sstables”机制,这是相当手动的,可能不值得麻烦,除非恢复的性能是最优先的。使用sstable加载程序虽然不同,但并不需要。

sstableloader工具将连接到节点,查找该节点集群中的所有节点并使用该连接来构建元数据/发现。它会将您选择的sstables拆分/流式传输到适当令牌范围内的目标群集(您不需要修复)。您可以从源群集节点运行sstableloader,并将其指向目标群集,您不需要将sstables复制到自己(尽管它们在不同的DC中可能会快一点)。

如果你有OpsCenter中,这些步骤的自动化可以为你做一个GUI https://docs.datastax.com/en/opscenter/5.2/opsc/online_help/services/opscBackupCloneCluster.html

+0

所以sstableloader与“-d IP”运行。当我这样做时,它就是目标IP,并且从一个目标节点运行它(并且我使用快照来加载数据)。也许这就是我出错的地方。你说我可以从源集群运行它。我是否放置了“-d SourceIP”?如果是这样,我在哪里指定要连接的目标群集IP? –

+0

'-d'应该是目标集群中的任何节点。该工具可以从任何地方运行 –

+0

感谢您的回应。所以对于我缺乏这方面的知识感到抱歉,但是如何指定要连接到的源群集呢?只需在源群集上运行它?这就是说,那么你就不能在目标集群上运行sstableloader然后正确(因为我们无处指定源IP)? –

相关问题