【问题标题】:Can I add Apache cassandra nodes to DataStax (DSE) cassandra cluster?我可以将 Apache cassandra 节点添加到 DataStax (DSE) cassandra 集群吗?
【发布时间】:2020-08-19 16:19:33
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您可以在它们之间创建一个数据中心连接,以便在向两侧写入数据时复制数据。

标签: cassandra datastax-enterprise cassandra-3.0


【解决方案1】:

是的,我以前做过。

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

SELECT release_version FROM system.local;

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

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

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

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

如果当前的dc_name 是DSE_DC 而新的dc_name 是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

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

【讨论】:

  • 感谢 Aaron 的快速回复。但是,目前我们使用的是 DSE 6.0.5,当我们检查时: SELECT release_version FROM system.local;我们得到 4.0.0.605 现在我们正在将它迁移到 Apache 3.11.6 版本,这是 apache 的最后一个稳定版本,所以我们收到错误:MigrationManager.java:95 - Not pull schema because release version in Gossip is not major version 3,它是 4.0.0.605 如何解决这个问题?这将非常有帮助
  • @PuneetAgarwal 已编辑。
  • 嗨亚伦,我有两个问题可以请你帮忙,严重卡住 - #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 选项与 DSE 相同,但存在间歇性峰值,请。
  • @PuneetAgarwal 您是否调整了所有键空间的复制?没有它,它不会流式传输数据。不知道什么是间歇性尖峰。也许检查 memtable_flush_writers 的设置不高于 2,并且这些设置是 SSD 优化的(假设您使用的是 SSD)。
猜你喜欢
  • 2014-11-15
  • 1970-01-01
  • 2019-02-18
  • 2020-09-13
  • 2013-02-17
  • 1970-01-01
  • 2016-08-16
  • 2014-05-21
  • 2015-09-08
相关资源
最近更新 更多