我试图使用sstableloader将数据加载到Cassandra 3.5中 . 在Cassandra 2.1.9下使用 nodetool snapshot
捕获数据 . 所有表格加载都很好,除了一个 . 它很小,只有2列20行 . 所以,我输入了这个bug:https://issues.apache.org/jira/browse/CASSANDRA-11806 . 这个bug很快被关闭了 . 它似乎并不重复,因为最初的情况是就地升级节点,而不是使用sstableloader加载数据 .
即便如此,我还是尝试应用给出的建议来运行 upgradesstable
[原文如此] .
从一个版本的Cassandra升级到另一个版本的指示似乎是最粗略的 . 以下是我根据工作备份/恢复所做的工作以及各种Cassandra文档中有关如何升级的信息:
-
像往常一样从prod(Cassandra 2.1.9)快照数据
-
将数据恢复到在我的工作站上运行的Cassandra 2.1.14
-
验证恢复到2.1.14(它有效)
-
将data / data / makeyourcase复制到Cassandra 3.5安装中
-
点燃Cassandra 3.5
-
运行
nodetool upgradesstables
将sstables升级到3.5
nodetool upgradesstables
失败:
>./bin/nodetool upgradesstables
error: Unknown column role in table makeyourcase.roles
-- StackTrace --
java.lang.AssertionError: Unknown column role in table makeyourcase.roles
那么,问题是:是否可以直接从2.1.x升级到3.5?什么是实际的升级过程? http://docs.datastax.com/en/latest-upgrade/upgrade/cassandra/upgradeCassandraDetails.html的过程似乎缺少重要的细节 .
1 回答
事实证明,随着时间的推移,表的状态发生了变化 .
由于表很小,我可以使用COPY将数据导出为CSV然后将其导入新版本来迁移数据 .
请查看https://issues.apache.org/jira/browse/CASSANDRA-11806,以了解另一种解决方法和即将发生的错误修复 .