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



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

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

有没有一种方法可以创建apache Cassandra&将其连接到DSE Cassandra,以便我的写入同时进入DSE&Apache cassandra

这样,一旦我的数据开始用两种Cassandra编写,我就可以将Read API从DSE逐渐迁移到Apache。

是的,我以前做过。

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

SELECT release_version FROM system.local;
release_version
-----------------
3.11.4

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

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

现在检查system_authsystem_tracessystem_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'};

更改完成后,请在每个新的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版-α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应该能够工作。

最新更新