我正在运行一个使用cassandra 0.6的应用程序。现在我想将它迁移到cassandra 2.1版本。
我做了以下事情。
在我的数据文件目录中,我有几个带有键空间的文件夹,例如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键空间在哪里?为什么我的数据无法检索?我的迁移是对的吗?
如果错误,我如何检索这些文件中的数据?我如何访问他们?
答案 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升级指南中列出的步骤进行操作:
停止节点。
备份配置文件。取决于如何 安装产品时,这些文件可能会被默认覆盖 安装期间的值。备份配置后, 根据您的要求,遵循相应的安装说明 当前的安装类型。
安装新版本的Cassandra。 Debian或Ubuntu RHEL或 CentOS Tarball
配置新产品。使用您创建的备份 您的配置文件,合并您拥有的任何修改 以前制作成新的配置文件 版。配置选项经常更改,因此请务必加倍 检查其他步骤和更改的版本限制 关于配置。
启动节点。
如果您要从a升级 主要版本(例如,从1.2到2.0)或主要观点 发布(例如,从Cassandra 2.0到2.1),升级 每个节点上的sstables。
$ nodetool upgradesstables
(#6是您似乎跳过的更重要的步骤之一)
答案 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
你已经跳过了很多步骤。 : - )