微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何为其他 Cassandra 的远程节点复制 Cassandra 的本地节点?

如何解决如何为其他 Cassandra 的远程节点复制 Cassandra 的本地节点?

我需要使用 SimpleStrategy 将本地节点复制到其他 Cassandra 数据库中的远程节点。有人知道我从哪里开始吗?

解决方法

如果您将数据写入两个集群,这里的主要复杂性是如何避免覆盖晚于本地设置在云中更改的数据。有几种可能性可以做到这一点:

  • 如果表的结构相同(如果使用自定义类型,则包括键空间的名称),那么您只需将SSTables从本地机器复制到云端,并使用{{3}重播它们 - 在这种情况下,Cassandra 将遵守实际写入时间,并且不会覆盖更改的数据。此外,如果您要从表中删除,那么您需要在墓碑过期之前复制 SSTables。您可能不会每次都复制所有 SSTable,而只会复制自上次数据上传以来发生更改的文件。但是你总是需要从你正在上传的所有节点复制 SSTables。

  • 如果结构不一样,那么您可以考虑使用 sstableloaderDSBulk。在这两种情况下,您还需要使用 writetime 导出数据,然后还使用时间戳加载它。请注意,在这两种情况下,如果不同的列具有不同的写入时间,那么您将需要单独加载该数据,因为 Cassandra 允许在更新/插入数据时仅指定一个时间戳。

如果是 DSBulk,您可以按照示例 19.4 从 Spark Cassandra Connector 导出数据,并按照示例 11.3 加载(来自 this blog post)。所以这可能需要一些 shell 脚本。另外,您需要有磁盘空间来保存导出的数据(但您可以使用压缩)。

对于 Spark Cassandra 连接器,如果两个节点都可以从 Spark 访问,则无需中间存储即可导出数据。但是您需要编写一些 Spark 代码来使用 another blog postRDD API 读取数据。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。