我正在从Datastax(DSE)Cassandra迁移到Apache Cassandra 3.11。
我有一个由7个节点组成的Datastax(DSE)Cassandra集群。
是否有一种方法可以创建新的Apache Cassandra集群并将其连接到DSE Cassandra,以便我的写入操作同时发送到DSE和Apache Cassandra?
这样一来,一旦我的数据开始在两个Cassandra中进行写入,我就可以逐渐将我的读API从DSE迁移到Apache。
我正在从Datastax(DSE)Cassandra迁移到Apache Cassandra 3.11。
我有一个由7个节点组成的Datastax(DSE)Cassandra集群。
是否有一种方法可以创建新的Apache Cassandra集群并将其连接到DSE Cassandra,以便我的写入操作同时发送到DSE和Apache Cassandra?
这样一来,一旦我的数据开始在两个Cassandra中进行写入,我就可以逐渐将我的读API从DSE迁移到Apache。
是的,我以前做过这个。
首先,找到您的集群正在运行的Cassandra版本(而不是DSE版本)的确切版本:
SELECT release_version FROM system.local;
release_version
-----------------
3.11.4
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应该能够正常工作。
memtable_flush_writers
是否不超过2,并且设置为SSD优化(假设你正在使用SSD)。 - Aaron