【问题标题】:How to migrate data from Cassandra 2.1.9 to a fresh 3.5 installation如何将数据从 Cassandra 2.1.9 迁移到全新的 3.5 安装
【发布时间】: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 错误。

标签: cassandra datastax


【解决方案1】:

事实证明,随着时间的推移,表格的状态会发生变化。

由于表很小,我可以通过使用 COPY 将数据导出为 CSV,然后将其导入新版本来迁移数据。

查看https://issues.apache.org/jira/browse/CASSANDRA-11806 以讨论另一种解决方法和即将到来的错误修复。

【讨论】:

    猜你喜欢
    • 2013-11-28
    • 1970-01-01
    • 2021-08-21
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 2017-08-19
    相关资源
    最近更新 更多