将 Cassandra 1.2.9 升级到 2.0.x

Upgrading Cassandra 1.2.9 to 2.0.x

我正在尝试将单节点 Cassandra 集群从 1.1.5 升级到 2。0.x。

我的生产服务器 运行 正在 Linux 上运行。我将数据文件夹拉到我的 Windows 框中,保留 system 键空间以及我感兴趣的特定键空间,并在启动 Cassandra 后删除其余部分。

我升级并测试了:

运行:

1.x 个版本看起来都不错。

尝试升级到 2.0.7 时,我 运行 遇到了问题(我看到推荐的升级路径是 1.2.9 -> 2.0.7):

INFO 16:43:01,758 Opening C:\path\mykeyspace-mytable-ic-655 (97902117 bytes)
ERROR 16:43:12,443 Exception encountered during startup
java.lang.RuntimeException: Incompatible SSTable found.  Current version jb is unable to read file: C:\path\mykeyspace\mytable\mykeyspace-mytable.mytable_location_idx-he-647.  Please run upgradesstables.
        at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:409)
        at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:391)
        at org.apache.cassandra.db.index.AbstractSimplePerColumnSecondaryIndex.init(AbstractSimplePerColumnSecondaryIndex.java:52)
        at org.apache.cassandra.db.index.SecondaryIndexManager.addIndexedColumn(SecondaryIndexManager.java:292)
        at org.apache.cassandra.db.ColumnFamilyStore.<init>(ColumnFamilyStore.java:277)
        at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:415)
        at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:386)
        at org.apache.cassandra.db.Keyspace.initCf(Keyspace.java:309)
        at org.apache.cassandra.db.Keyspace.<init>(Keyspace.java:266)
        at org.apache.cassandra.db.Keyspace.open(Keyspace.java:110)
        at org.apache.cassandra.db.Keyspace.open(Keyspace.java:88)
        at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:290)
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:480)
        at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:569)

做了 运行 从 1.2.9/bin 升级稳定器,在启动 1.2.9/bin/cassandra 之后。 知道出了什么问题吗?

mytable_location_idx-he-6471.1.5 稳定版(he 是版本,h 是 1.1,e 是 [=13= 的第 5 版]). 运行 再次升级稳定表并验证所有 sstables 是否已迁移。 sstable 的版本应该以 1.2 的 i 开头,并且您希望它在升级到 2.0 之前处于 ic

问题在于我只是将我的生产集群部分迁移到我的本地环境。我已经复制了整个 system 键空间文件,并且只为我的一个键空间复制了一些 data 文件。

我通过重做一切解决了问题:

  • 在本地设置 1.1.5
  • 使用 cqlsh 连接到它,删除了我在本地没有的所有其他键空间和表
  • 已迁移(不确定哪些成功了,假设我全部成功了):1.1.5 -> 1.2.0 -> 1.2.8 -> 1.2.9 -> 2.0.0 -> 2.0.1 -> 2.0.7.
  • 可能 删除了 Cassandra 在启动时抱怨的任何不匹配的索引文件(不确定我在进行最后一次神奇的升级时是否遇到过任何不匹配的索引文件,但这让我可以通过版本前进在之前的尝试中)。我的猜测是 Cassandra 会查看所有这些,但 upgradesstables 偶尔会留下一些。