【问题标题】:How to copy cassandra data from one cluster to another如何将 cassandra 数据从一个集群复制到另一个集群
【发布时间】:2014-06-26 05:24:44
【问题描述】:

我有 2 个 cassandra 集群,位于不同的数据中心(请注意,这是 2 个不同的集群,而不是具有 multidc 的单个集群),并且两个集群具有相同的键空间和列族模型。我希望以最有效的方式将列族 C 的数据从集群 A 复制到集群 B。其他一些 ColumnFamily 我可以使用 get 和 put 操作进行复制,因为它是一个时间序列并且键是连续的。但是这个其他列族 C,我可以复制。我正在使用节俭和 pycassa。我已经尝试了 CQL COPY 命令,但不幸的是 CF 太大了,我得到了一个 rpc_timeout。我怎样才能做到这一点?

【问题讨论】:

    标签: copy cassandra thrift pycassa column-family


    【解决方案1】:

    如果您只想一次性完成此操作,请拍摄快照并使用 sstableloader 将其加载到集群中。如果您想随着时间的推移继续加载新数据,您将需要打开增量备份,然后拍摄快照以加载初始数据,然后定期从增量备份中抓取 sstables 到 sstableload 以保持最新。

    【讨论】:

      【解决方案2】:

      我对如何将 cassandra 数据从一个集群复制到另一个集群知之甚少,但是对于 rpc_timeout 错误,您可以使用

      cqlsh --request-timeout 3600 <IP address>
      

      使用上述命令进入Cql shell request-timeout 默认以秒为单位,您可以根据需要增加

      【讨论】:

        【解决方案3】:

        有时我还需要将数据从一个 cassandra 集群复制到另一个集群。 我使用这个工具https://github.com/masumsoft/cassandra-exporterexport.js 脚本将数据导出到 json 文件,import.js 脚本将导出的数据导入到 cassandra。您可以对指定键空间中的所有表执行此操作,也可以仅对特定表执行此操作。目标键空间和表在导入之前应该存在。

        在 js 脚本中,如果出现“读取超时错误”,您可以调整批量大小和 readTimeout。

        更新:Alex Ott 的提示后,我尝试了 DSBulk 工具。它工作得很好,但每次运行只能用于一张桌子。如果你想处理完整的键空间,你需要一个为每个表运行 DSBulk 的脚本。

        【讨论】:

        • 代替它 - 看看 DSBulk - 它已经过高度优化,并且有很多选项来加载/卸载数据、压缩文件等。
        • 谢谢!会试一试!
        猜你喜欢
        • 1970-01-01
        • 2016-12-07
        • 2018-06-02
        • 2015-12-02
        • 1970-01-01
        • 1970-01-01
        • 2022-07-11
        • 1970-01-01
        • 2017-09-07
        相关资源
        最近更新 更多