我有一个旧的Cassandra集群,我想要摆脱它,并希望将数据从只有几个选定的表从旧集群传输到我创建的新集群。
我尝试在一个有大约1500万行(每行大约20列)的表上使用Cassandra的COPY
命令。当我尝试将数据从csv文件导入到新集群中的同一个表时,我不断得到这个响应:
无法导入20行:WriteTimeout - 来自服务器的错误:代码= 1100 [协调器节点超时等待副本否 des'response] message =“操作超时 - 仅收到0个回复。” info = {'received_responses':0,'required_resp onses':1,'一致':'ONE'},稍后重试,尝试1 of 5
显然,这种方法不起作用。有没有办法可以只将一些表从一个集群流式传输到另一个集群?请注意,虽然我们有数百万行,但数据并不是那么大。我拥有的最大的桌子大约是2.5 GB。
它们的键空间当前配置为使用SimpleStrategy。会使用NetworkTopologyStrategy帮忙吗?我应该指出,我只想从几个表中流式传输数据,而不用其他表。
答案 0 :(得分:1)
我建议使用sstableloader来完成这项工作。仅供参考,您也可以使用nodetool snapshot制作所需表格的副本,并在需要的地方刻录它们。
另一方面,在任何类型的制作中使用简单策略绝不是一个好主意。 NetworkTopologyStrategy是一个很好的选择。
答案 1 :(得分:0)
我已成功使用您用于将数据从一个群集复制到另一个群集的策略。
通常建议从快照恢复。但是当用例不是将整个数据恢复到新的集群时,只是为了转移少数不那么大的表,COPY FROM然后COPY TO就是简单有效的策略。
坚持你的策略,只关注你得到的错误。
我建议尝试使用较小的批量。