从Datastax6.0到Cassandra3的迁移路径
我正在尝试找到从 Datastax Enterprise (DSE) 6.0.14 到 Cassandra Community OSS 3 的迁移路径。到目前为止,我无法找到有效的迁移路径。
所有密钥空间复制都已更新为NetworkTopologyStrategy或使用LocalStrategy/SimpleStrategy.
尝试添加 Cassandra 3.11.10 时,无法达成模式协议,因为 gossip 协议似乎不兼容并且会崩溃。
尝试添加 Cassandra 3.11.3 时,它没有崩溃,但架构似乎也不兼容。
我正在运行一个 5 个节点的 DSE 集群,并试图用 5 个节点的 Cassandra 替换它。
当新的 Cassandra 节点使用另一个 DC 名称时,所有节点的集群名称都相同。
回答
有可能,我们发现的程序有效:
- 提取当前节点/集群的模式
- 提取表system_schema.tables的数据
- 排空节点
- sstable 降级您的键空间(不适用于系统* 键空间)
- 将节点初始化为一个空的(新的)Cassandra OSS 节点
- 允许它创建它的系统键空间和角色
- 从 DSE 导入架构(步骤 1)
- 覆盖 system_schema.tables 中的表 ID 以匹配 DSE 的 ID
- 停止 cassandra,将降级后的 sstables 移回相关
data目录,重启 Cassandra 加载数据 - 该节点应该是集群的一部分,您可以以相同的方式继续使用其他节点。但是使用已经迁移的OSS节点来获取schema。
从应用端,我们在迁移第一个节点后强制OSS节点。这允许应用程序查看 OSS 和 DSE 节点并写入集群中的所有节点。
迁移所有节点后,对集群运行完整修复。