我可以将apache cassandra节点添加到datastax(dse)cassandra集群吗?

ifsvaxew  于 2021-06-13  发布在  Cassandra
关注(0)|答案(1)|浏览(406)

我正在从datastax(dse)cassandra迁移到ApacheCassandra3.11。
我有一个由datastax(dse)cassandra的7个节点组成的集群。
有没有一种方法可以创建新的apachecassandra集群并将其连接到dse cassandra,以便写入dse和apachecassandra
因此,一旦我的数据开始用两种cassandra编写,我就可以将我的readapi从dse逐渐迁移到apache。

rkkpypqq

rkkpypqq1#

是的,我以前做过。
首先,找到集群正在运行的cassandra版本(不是dse版本)的确切版本:

SELECT release_version FROM system.local;

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

连接时也可以看到此版本号 cqlsh . dse版本的cassandra将在其上添加一个(长)版本号。但是,新节点上的apachecassandra版本应该与dse版本的cassandra尽可能地匹配。
接下来,将apachecassandra“替换”节点构建为一个新的逻辑数据中心。确保他们使用不同的 dc_name (而不是现有的节点) cassandra-rackdc.properties 文件。第一个(或两个)节点应该使用现有集群中的节点作为种子节点。然后,以下节点可以使用第一个节点作为种子。另外,还有 cluster_name 需要匹配。
现在检查键空间定义 system_auth , system_traces , system_distributed ,以及应用程序需要的任何键空间。确保他们正在使用 NetworkTopologyStrategy . 如果不是,请确保是,并为现有dc配置复制因子(rf)(dc名称必须匹配) dc_name 现有dse节点)。然后您可以将复制扩展到新的数据中心。
如果是电流 dc_nameDSE_DC 以及新的 dc_nameAC_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-4:

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应该可以工作。

相关问题