是的,我以前做过。
首先,找到您的集群正在运行的 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 应该可以工作。