我们正在尝试将数据从dse cassandra节点迁移/复制到apache cassandra节点。
已经在本地机器上完成了poc,并且得到了一个模式版本问题。以下是poc和发生问题的详细信息。
dse cassandra节点详细信息:
dse\ U版本:6.0.5
发布版本:4.0.0.605
sstable格式:
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
sstable格式:
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个节点。
两个dse节点(假设dse1和dse2)位于一个数据中心(即dc1)。
2个apache节点(假设apc1和apc2)位于其他数据中心(即dc2)。
注意:我使用了networktopologystrategy拓扑策略keyspace和gossipingpropertyfilesnitch作为endpoint\u snitch。在cassandra-env.sh文件中也添加了$jvm\u opts-dcassandra.allow\u unsafe\u 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
有谁能建议一下,如何克服这个问题。有没有其他升级或兼容性修复,我们需要实现解决这个问题。
暂无答案!
目前还没有任何答案,快来回答吧!