Scylla 数据中心和 Cassandra 数据中心是否可以在同一个集群中?

5

我有一个运行了 21 个节点的 Cassandra 集群,有超过 150 个模式和约 20 TB 的数据。我需要在不停机的情况下将模式和数据从 Cassandra 转移到具有 7 个节点的 Scylla。

Scylla 和 Cassandra 支持相同的 cqlsh 版本,并且在分布数据和 gossiping 上几乎相同。

为了转移数据,我正在尝试在现有的 Cassandra 集群中创建新的 Scylla 数据中心,并更新 Keyspace 拓扑结构以将 Scylla 也添加到复制的 DC 名单中,然后在集群中引导 / 重建 Scylla 节点。

但是,在将种子列表添加到节点时,我遇到了 TCP 连接失败的错误。

Scylla 错误:

scylla: [shard 0] rpc - client 10.200.1.2:34236:服务器连接已关闭:连接已关闭 scylla:[shard 0] rpc - client 10.200.1.2:7000:无法连接:连接被拒绝。

Cassandra 错误:

[MessagingService-Outgoing-/10.200.2.2-Gossip] OutboundTcpConnection.java:411 - 到 /10.200.2.2 的套接字已关闭 [HANDSHAKE-/10.200.2.2] OutboundTcpConnection.java:570 - 无法与 /10.200.2.2 握手版本 [HANDSHAKE-/10.200.2.2] OutboundTcpConnection.java:561 - 与 /10.200.2.2 握手版本

如果有人已经完成了这项工作或者有更好的想法可以在少风险,不停机,不丢失数据的情况下转移数据,请帮助我。

2个回答

11

在同一个集群中无法使用C*节点和Scylla节点创建异构集群。

创建一个单独的Scylla集群,创建模式,将应用程序更改为进行双重写入(同时写入两个集群),然后将C*历史数据迁移到Scylla。

有多种方法可以迁移数据。这可以帮助:https://youtu.be/CDOesdWDT9Y 没有停机时间,没有问题,也有相应的选项。


这是迁移文档中提到的标准步骤,但实际操作中会遇到一些挑战。基本上,当您有太多项目访问数据库时,对所有项目进行双重写入就变得困难了。如果您在Cassandra中有更高的节点,并且想要在Scylla的较少节点上工作,则难以转移旧数据。 - sachin
这是可以理解的,但迁移会造成中断,您可能希望尝试维持一个时间窗口,只有必要的客户端发出写入请求(并将其设置为双重写入)。当迁移完成后,您可以恢复正常操作。 - dyasny
1
经常有人会使用像Kafka这样的工具来管理写入的多路复用。因此,您无需在客户端代码中处理两个数据库之间一致性问题。虽然不是理想的情况,但正如dyasny所说,任何数据库迁移都是一种破坏性事件。幸运的是,这种情况也很少见。相比需要更改应用程序的API和驱动程序以适应数据库的其他迁移,这应该要容易得多。 - Greg
@sachin 你有查看过scylla-migrator的github吗?此外,Greg提供的选项也不错。只有在使用快照时才会难以转移旧数据。但是,Spark、Kafka甚至sstableloader都可以在不同的拓扑结构下工作。 - Moreno Garcia
@ScyllaGreg, Moreno Garcia,我已经查看了所有迁移文档和可行的方法,但现在我正在寻找更可靠的解决方案,类似于获取一个单一的位置,可以获取Cassandra数据库的所有写入、更新、删除请求,并在Scylla数据库上触发相同的命令,而不是在所有应用程序上启用双重写入。 - sachin
我认为你对“更可靠的解决方案”的描述不准确。你需要的是一个“更简单的解决方案”,它不需要迁移和停机时间。你可以希望有这样的东西,但是它没有得到支持。很难想象任何数据库能够支持这样的愿望。 如果你可以接受几分钟的维护时间,你可以在Cassandra创建的SSTables上运行Scylla。这意味着没有迁移。但是如果你不能承受任何停机时间,你唯一的选择就是在线迁移,这将始终需要双重写入。 - Greg

10

虽然Scylla与Cassandra在多个方面(SSTables,CQL / Drivers等)兼容,但Scylla确实需要对gossip协议进行一些更改,这使得无法加入Cassandra集群。目前没有已知的方法可以将Scylla加入Cassandra集群。

Scylla已经发布了几种建议的迁移技术。

描述这些技术的博客: https://www.scylladb.com/2019/04/02/spark-file-transfer-and-more-strategies-for-migrating-data-to-and-from-a-cassandra-or-scylla-cluster/

通过网络研讨会演示迁移技术[需要注册]: https://go.scylladb.com/wbn-spark-scylla-migration-strategies-registration.html

文档:https://docs.scylladb.com/operating-scylla/procedures/cassandra_to_scylla_migration_process/

社区Slack用于问答:http://slack.scylladb.com


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接