【发布时间】:2016-06-01 04:54:40
【问题描述】:
我尝试使用 sstableloader 将数据加载到 Cassandra 3.5。数据是在 Cassandra 2.1.9 下使用 nodetool snapshot 捕获的。除了一个之外,所有的表都加载得很好。它很小,只有 2 列和 20 行。所以,我输入了这个错误:https://issues.apache.org/jira/browse/CASSANDRA-11806。该错误很快被作为重复项关闭。它似乎不是重复的,因为原始案例是就地升级节点,而不是使用 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 的流程似乎缺少重要的细节。
【问题讨论】:
-
您是否还复制了系统密钥空间目录或仅复制了您的密钥空间数据?
-
@mmatloka 只是我的键空间数据。
-
Cassandra 在系统键空间中保存有关表模式的信息。尝试使用完全相同的整个数据目录(或在移动数据之前创建架构,但将其移动到创建架构时创建的新目录)。
-
@mmatloka - 刚刚尝试移动整个数据目录。 Cass 3.5 运行良好,但
./bin/nodetool upgradesstables出现未知列错误。 -
@mmatloka - 尝试先创建架构,然后仅复制数据/数据/makeyourcase。这样做可以解决
upgradesstables的问题。但是,即使使用升级的表,还原也会失败。我现在有一个解决方法,并且输入了那个 cass 错误。