首页 > 解决方案 > 我可以将 Apache cassandra 节点添加到 DataStax (DSE) cassandra 集群吗?

问题描述

我正在从 Datastax (DSE) Cassandra 迁移到 Apache Cassandra 3.11。

我有一个由 7 个 Datastax (DSE) Cassandra 节点组成的集群。

有没有办法创建新的 apache Cassandra 集群并将其连接到 DSE Cassandra,以便我的写入同时发送到 DSE 和 Apache cassandra

因此,一旦我的数据开始在 Cassandra 中写入,我就可以将我的读取 API 逐渐从 DSE 迁移到 Apache。

标签: cassandradatastax-enterprisecassandra-3.0

解决方案


是的,我以前做过。

首先,找到您的集群正在运行的 Cassandra 版本(不是 DSE 版本)的确切版本:

SELECT release_version FROM system.local;

 release_version
-----------------
          3.11.4

连接时也可以看到这个版本号cqlsh。Cassandra 的 DSE 版本将添加一个(长)内部版本号。但想法是新节点上的 Apache Cassandra 版本应尽可能与 DSE 版本的 Cassandra 匹配。

接下来,将您的 Apache Cassandra “替换”节点构建为新的逻辑数据中心。确保他们dc_name在文件中使用不同的(与现有节点)cassandra-rackdc.properties。第一个(或两个)节点应该使用现有集群中的节点作为种子节点。随后的节点可以使用第一个节点作为种子。另外,cluster_name需要匹配。

现在检查 、 、 和应用程序需要的任何键空间的键system_auth空间system_traces定义system_distributed。确保他们正在使用NetworkTopologyStrategy. 如果不是,请确保它是,并为现有 DC 配置复制因子 (RF)(DC 名称必须与dc_name现有 DSE 节点匹配)。然后,您可以将复制扩展到新的数据中心。

如果 current dc_nameisDSE_DC和 new dc_nameis AC_DC,那么:

ALTER KEYSPACE yourkeyspace WITH replication =
   {'class': 'NetworkTopologyStrategy',
    'DSE_DC': '3', 'AC_DC': '3'};

更改完成后,在每个新的 Apache Cassandra 节点上运行 nodetool 重建。

nodetool rebuild -- DSE_DC

这会将数据移动到DSE_DC当前节点。然后,您应该能够通过指定新的数据中心名称来切换您的 API。

编辑 20200506

检查您的数据目录。要使其正常工作,最重要的是要匹配 SSTable 格式。

版本 3.11.4+

    43 Feb 20 08:55 md-1-big-CompressionInfo.db
    83 Feb 20 08:55 md-1-big-Data.db
    10 Feb 20 08:55 md-1-big-Digest.crc32
    16 Feb 20 08:55 md-1-big-Filter.db
    17 Feb 20 08:55 md-1-big-Index.db
  4769 Feb 20 08:55 md-1-big-Statistics.db
    57 Feb 20 08:55 md-1-big-Summary.db
    92 Feb 20 08:55 md-1-big-TOC.txt

4.0-alpha4 版:

    47 May  6 10:13 na-1-big-CompressionInfo.db
   107 May  6 10:13 na-1-big-Data.db
    10 May  6 10:13 na-1-big-Digest.crc32
    16 May  6 10:13 na-1-big-Filter.db
    32 May  6 10:13 na-1-big-Index.db
  4687 May  6 10:13 na-1-big-Statistics.db
    66 May  6 10:13 na-1-big-Summary.db
    92 May  6 10:13 na-1-big-TOC.txt

您还可以在 DataStax 的产品兼容性指南中验证这一点。

基本上,如果您的 SSTable 文件以 m[a,b,c,d] 为前缀,那么 3.11.6 应该可以工作。


推荐阅读