我在不同的数据中心有2个cassandra集群(请注意,这些是2个不同的集群,而不是具有multidc的单个集群),并且这两个集群具有相同的密钥空间和列家庭模型。我希望以最有效的方式将列家族C的数据从集群A复制到集群B.我可以使用get和put操作复制其他一些ColumnFamily,因为它是一个时间序列和键顺序。但是这个其他的列族C,我可以复制。我使用节俭和pycassa。我已经使用了CQL COPY命令,但不幸的是CF太大了,我得到了一个rpc_timeout。我怎么能做到这一点?
答案 0 :(得分:1)
如果您只想将其作为一次性操作,请拍摄快照并使用sstableloader将其加载到群集中。如果您想继续加载新数据,您需要打开incremental_backups,然后创建快照以加载初始数据,然后定期将sstables从增量备份中获取到sstableload以保持最新状态。 / p>
答案 1 :(得分:0)
我不太了解如何将cassandra数据从一个群集复制到另一个群集但是对于rpc_timeout错误,您可以使用
cqlsh --request-timeout 3600 <IP address>
使用上面的命令进入Cql shell 默认情况下,请求超时为秒,如果需要,可以增加
答案 2 :(得分:0)
我有时还需要将数据从一个cassandra集群复制到另一个。
我使用此工具https://github.com/masumsoft/cassandra-exporter。
export.js
脚本将数据导出到json文件,import.js
脚本将导出的数据导入到cassandra。您可以对指定键空间中的所有表或仅对特定表执行此操作。在导入之前,目标键空间和表应该存在。
在js脚本中,如果出现“读取超时错误”,则可以调整批处理大小和readTimeout。
更新:在Alex Ott提示之后,我尝试了DSBulk工具。它的效果很好,但每次运行仅一张桌子。如果要处理完整的键空间,则需要一个为每个表运行DSBulk的脚本。