从Cassandra 0.6迁移到2.1版本并检索以前的数据

时间:2014-10-15 18:16:11

标签: cassandra cassandra-2.0 cqlsh

我正在运行一个使用cassandra 0.6的应用程序。现在我想将它迁移到cassandra 2.1版本。

我做了以下事情。

  • 下载了tarball并安装。
  • 根据我的配置更改了我的群集名称
  • 指出数据文件目录,已保存的缓存,将日志提交到旧版本以前存储的数据。

在我的数据文件目录中,我有几个带有键空间的文件夹,例如A,B,C,D,system,system_traces,其中数据是通过thrift api添加的。

A,B,C,D文件夹包含子文件夹,例如

/.../cassandra/data/A/Standard1-1-Data.db
/.../cassandra/data/A/Standard1-1-Filter.db
/.../cassandra/data/A/Standard1-1-Index.db

分别与B,C,D相同的文件。

现在,当我启动我的cassandra 2.1并从命令行运行cqlsh并连接到cassandra实例时。 我输入命令

描述键空间;

我得到输出为system和system_traces。

为什么会发生这种情况?A,B,C,D键空间在哪里?为什么我的数据无法检索?我的迁移是对的吗?

如果错误,我如何检索这些文件中的数据?我如何访问他们?

2 个答案:

答案 0 :(得分:3)

无法直接从Cassandra 0.6升级到2.1。如果您阅读升级指南,则应该能够找出升级计划:

具体而言,这些信息非常重要:

  

Cassandra 2.1与Cassandra 1.x SSTables不兼容。第一   将节点升级到Cassandra 2.0.7或更高版本,启动集群,   升级SSTables,停止群集,然后升级到Cassandra   2.1。

和...

  

Cassandra 2.0与版本不兼容网络或SSTable   超过1.2.9。如果您的Cassandra版本早于1.2.9   并且您想要执行滚动重启,首先升级整个   集群到1.2.9,然后到Cassandra 2.0。

和...

  

Cassandra 0.6及更高版本的数据文件与Cassandra兼容   1.2

基本上,您需要将0.6升级到1.2.9,然后将1.2.9升级到2.0.7,然后您应该能够升级到2.1。您可能还需要做一些研究,以确定您是否可以直接从0.6升级到1.2.9(我不记得,但我认为您可能需要升级到最新的1.1.x在进入1.2.9之前。

对于您进行的每次升级,您都必须按照我上面提到的DataStax升级指南中列出的步骤进行操作:

  1. 停止节点。

  2. 备份配置文件。取决于如何 安装产品时,这些文件可能会被默认覆盖 安装期间的值。备份配置后, 根据您的要求,遵循相应的安装说明 当前的安装类型。

  3. 安装新版本的Cassandra。 Debian或Ubuntu RHEL或 CentOS Tarball

  4. 配置新产品。使用您创建的备份 您的配置文件,合并您拥有的任何修改 以前制作成新的配置文件 版。配置选项经常更改,因此请务必加倍 检查其他步骤和更改的版本限制 关于配置。

  5. 启动节点。

  6. 如果您要从a升级 主要版本(例如,从1.2到2.0)或主要观点 发布(例如,从Cassandra 2.0到2.1),升级 每个节点上的sstables。

  7. $ nodetool upgradesstables

    (#6是您似乎跳过的更重要的步骤之一)

    1. 检查日志 警告,错误和例外。在群集中的每个节点上重复。

答案 1 :(得分:1)

您没有指定正在运行的cassandra 0.6.X版本,甚至在0.6补丁版本中,还有NEWS.txt中的升级说明。

至少,您需要升级每个major.minor cassandra版本的最新补丁级别。 Cassandra升级说明,陷阱和详细步骤始终记录在NEWS.txt中:

https://github.com/apache/cassandra/blob/cassandra-2.1/NEWS.txt

你已经跳过了很多步骤。 : - )