【问题标题】:How to do a Live Migration of a vanilla Cassandra cluster to a Datastax Enterprise Cluster如何将 vanilla Cassandra 集群实时迁移到 Datastax 企业集群
【发布时间】:2017-02-23 06:48:09
【问题描述】:

我们目前使用 Cassandra 3.3.0 在生产环境中启动并运行了一个 Cassandra 集群。我们希望在没有任何停机时间的情况下将其切换到 DSE 集群。

我们已经有了一个迁移架构的工具,但是在不停机的情况下将数据从我们的 Cassandra 集群迁移到新的 Datastax 集群的最佳方法是什么?

如果您使用常规 Cassandra 切换集群,您只需将节点从新集群加入当前运行的集群,然后在添加所有新节点后关闭旧节点。这很好,因为它不需要额外的代码来迁移数据,是否有任何类似的解决方案可用于 DSE?

【问题讨论】:

    标签: cassandra datastax datastax-enterprise datastax-startup


    【解决方案1】:

    通常您会安装 DSE 以匹配集群周围的 Cassandra 版本。但是我注意到您列出了 Cassandra 3.3.0,对吗?我查看了 Cassandra 发行说明,但找不到那个版本。

    假设您的意思是 3.0,那么您可以在您的节点上安装 DSE 5.0,而无需进行架构迁移,因为它将与 Cassandra 的主要版本相同。

    安装文档都应该在这里介绍:

    https://docs.datastax.com/en/latest-dse/datastax_enterprise/install/installTOC.html

    但是,如果您不想走这条路,您也可以建立一个新的 DSE 集群并使用 sstableloader 工具流式传输您的数据:

    https://docs.datastax.com/en/cassandra/3.0/cassandra/tools/toolsBulkloader.html

    当然,在生产中进行任何操作之前,您都应该始终先进行测试!

    【讨论】:

    • Cassandra 的版本信息:[cqlsh 5.0.1 |卡桑德拉 3.3 | CQL 规范 3.4.0 |本机协议 v4]。对不起,我猜它不是 3.3.0,而只是 3.3。所以你是说如果我拥有的 Cassandra 版本受 DSE 支持,我可以在我现有的 Cassandra 集群之上安装 DSE?另外我正在研究 sstableloader 工具,它似乎很复杂,如果我没记错的话,你是否必须用 Java 重新编写模式?文档似乎没有特别的指导意义,有什么好的教程吗?
    • 好的,Cassandra 3.0 是目前 DSE 支持的 最新 版本 (DSE5.0.x)。 sstableloader 只会将 sstables 从一个集群流式传输到另一个集群。您的问题是,如果您的 cassandra 版本较新,则 sstableformat 可能无法向后兼容。您不需要在 java 中编写任何内容,您确实需要在目标集群中创建模式,但这只是使用 cqlsh 的问题。
    • SSTableLoader 并不能阻止我们停机。我们必须在运行 SSTableLoader 时防止数据库被写入,以便新的 DSE 集群使用最新的数据,因为一旦 SSTableLoader 完成数据流,DSE 集群就会退出日期。迁移到 DSE 集群的一个可能解决方案是更新代码以写入两个数据库并从 Vanilla Cassandra 集群读取,然后我们可以为键空间运行 SSTableLoader,这可行吗?这是我们唯一的选择吗?
    • 在迁移过程中,将写入“分叉”到旧集群和新集群的情况并不少见。您还应该能够运行 sstableloader,任何旧的写入都将被新的写入所取代,并且在压缩期间按正常方式合并键。我在这里主要担心的是,您似乎正在运行一个更新版本的 Cassandra,而不是目前 DSE 中的版本。
    猜你喜欢
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多