cassandra - 我可以将 Apache cassandra 节点添加到 DataStax (DSE) cassandra 集群吗?

标签 cassandra datastax-enterprise cassandra-3.0

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

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

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

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

最佳答案

是的,我以前做过这个。

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

SELECT release_version FROM system.local;

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

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

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

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

如果当前 dc_nameDSE_DC和新 dc_nameAC_DC , 然后:
ALTER KEYSPACE yourkeyspace WITH replication =
   {'class': 'NetworkTopologyStrategy',
    'DSE_DC': '3', 'AC_DC': '3'};

完成更改后,在 上运行 nodetool 重建每个新的 Apache Cassandra 节点 .
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 的 Product Compatibility Guide 中验证这一点。 .

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

关于cassandra - 我可以将 Apache cassandra 节点添加到 DataStax (DSE) cassandra 集群吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61605797/

相关文章:

java - Cassandra 触发器

cassandra - 在 Cassandra 中更改列的类型

scala - 在 Spark 中读取文件时出错

c++ - 在 Cassandra 中使用回调函数

cassandra - Cassandra 中的 SASI 索引以及它与普通索引有何不同

java - Cassandra 的节俭运输异常(exception)

c# - "Greater than"where-condition on timeuuid 使用 Datastax C# Cassandra 驱动程序

cassandra - 如何在 CQL3 中设置单个 CQL 查询的一致性级别?

cassandra - stargate rest api 授权 token 在过期前将保持事件状态多长时间?

cassandra - 检测到泄漏 : was not released before the reference was garbage collected