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

5

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

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

是否有一种方法可以创建新的Apache Cassandra集群并将其连接到DSE Cassandra,以便我的写入操作同时发送到DSE和Apache Cassandra?

这样一来,一旦我的数据开始在两个Cassandra中进行写入,我就可以逐渐将我的读API从DSE迁移到Apache。


您可以创建一个数据中心连接,使得在任一侧写入的数据都能够被复制到另一侧。 - veysiertekin
1个回答

4

是的,我以前做过这个。

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

SELECT release_version FROM system.local;

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

您连接时也可以看到此版本号。 DSE版的Cassandra将添加一个(长)构建号。 但是,新节点上的Apache Cassandra版本应尽可能接近DSE版的Cassandra。
接下来,将您的Apache Cassandra“替代”节点构建为一个新的逻辑数据中心。 确保它们在文件中使用不同的(而不是现有节点)。 第一个节点(或两个节点)应使用现有集群中的节点作为种子节点。 然后,以下节点可以使用第一个节点作为种子节点。 此外,需要匹配。
现在检查,,和应用程序需要的任何键空间的键空间定义。 确保它们使用。 如果没有,请确保它,并为现有DC配置复制因子(RF)(DC名称必须与现有DSE节点的匹配)。 然后,您可以将复制扩展到新的数据中心。
如果当前的为,而新的为,则:
ALTER KEYSPACE yourkeyspace WITH replication =
   {'class': 'NetworkTopologyStrategy',
    'DSE_DC': '3', 'AC_DC': '3'};

在进行这些更改之后,需要在每个新的Apache Cassandra节点上运行nodetool rebuild命令。

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应该能够正常工作。


感谢Aaron的快速回复。然而,目前我们正在使用DSE 6.0.5版本。 当我们检查: SELECT release_version FROM system.local; 我们得到的是4.0.0.605。 现在我们正在将它迁移到Apache 3.11.6版本,这是apache的最新稳定版本。 所以我们遇到了错误: MigrationManager.java:95 - Not pulling schema because release version in Gossip is not major version 3, it is 4.0.0.605 如何解决这个问题?这会非常有帮助。 - Puneet Agarwal
@PuneetAgarwal 已进行编辑。 - Aaron
嗨,亚伦,我有两个问题,你能帮忙吗?我卡住了。#1. 关于我的上一个问题,我有DSE 6.0.5版本(SSTable bti-aa),我试图将Apache Cassandra 3.11.6添加到环中,但是这会引发错误,所以我将我的Apache cassandra降级到3.11.3,因为它的sstable格式受支持,但是当我将其添加到环中时,它没有给出任何异常/错误,但数据没有从DSE流到Apache节点。#2)在另一个DSE集群中,我成功地将Apache cass迁移到了相同的JVM选项下,但是有间歇性的峰值,请。 - Puneet Agarwal
@PuneetAgarwal 你是否为所有keyspace调整了复制?如果没有,它将无法流式传输数据。不确定间歇性峰值是什么原因。也许检查memtable_flush_writers是否不超过2,并且设置为SSD优化(假设你正在使用SSD)。 - Aaron

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