我们正在尝试将数据从DSE Cassandra节点迁移/复制到apache Cassandra节点。
已在本地计算机上完成了该操作的POC,并遇到了模式版本问题。 以下是POC的详细信息和出现的问题。
DSE Cassandra节点详细信息:
dse_version: 6.0.5
release_version: 4.0.0.605
稳定格式:
aa-1-bti-CompressionInfo.db
aa-1-bti-Digest.crc32
aa-1-bti-Partitions.db
aa-1-bti-Statistics.db
aa-1-bti-Data.db
aa-1-bti-Filter.db
aa-1-bti-Rows.db
aa-1-bti-TOC.txt
Apache Cassandra节点详细信息:
发行版本: 3.11.3
稳定格式:
mc-1-big-CompressionInfo.db
mc-1-big-Digest.crc32
mc-1-big-Statistics.db
mc-1-big-Data.db
mc-1-big-Filter.db
mc-1-big-TOC.txt
mc-1-big-Summary.db
有1个群集(“我的群集”),我总共有4个节点。
2个dse节点(例如DSE1和DSE2)位于一个数据中心(即dc1)中。
在另一个数据中心(即dc2)中有2个apache节点(让我们说APC1和APC2)。
注意:我已将 NetworkTopologyStrategy 拓扑策略用于键空间,并将 GossipingPropertyFileSnitch 用作Endpoint_snitch。已添加 cassandra-env.sh 文件中的 $ JVM_OPTS -Dcassandra.allow_unsafe_replace = true 。
当我使用以下CQL查询在 DSE1节点上创建键空间时:
CREATE KEYSPACE abc
WITH REPLICATION = {
'class' : 'NetworkTopologyStrategy',
'dc1' : 2,
'dc2' : 2
}
AND DURABLE_WRITES = true;
在 DSE2节点上创建键空间,但是 cqlsh 引发以下错误:
警告:检测到架构版本不匹配;在system.local和system.peers中检查节点的架构版本
此外, 2个Apache节点(APC1 / APC2)之一中引发以下错误: org.apache.cassandra.db.UnknownColumnFamilyException:找不到cfId 02559ab1-91ee-11ea-8450-2df21166f6a4的表。如果刚刚创建了表,则可能是由于未完全传播架构。请等待有关表创建的模式协议
还在所有4个节点上检查了架构版本,得到以下结果:
Cluster Information:
Name: My Cluster
Snitch: org.apache.cassandra.locator.GossipingPropertyFileSnitch
DynamicEndPointSnitch: enabled
Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
Schema versions:
84c22c85-8165-398f-ab9a-e25a6169b7d3: [127.0.0.4, 127.0.0.6]
4c451173-5a05-3691-9a14-520419f849da: [127.0.0.5, 127.0.0.7]
已尝试使用以下链接中给出的解决方案来解决相同问题: https://myadventuresincoding.wordpress.com/2019/04/03/cassandra-fix-schema-disagreement/
但是问题仍然存在。
此外,是否可以按照以下链接中的建议自然地将数据从DSE Cassandra节点迁移到apache Cassandra节点: Migrate Datastax Enterprise Cassandra to Apache Cassandra
任何人都可以建议如何解决该问题。我们是否需要实施其他任何升级或兼容性修复程序来解决此问题。