我正在尝试将单个节点木糖集群从1.1.5升级到2.0.x.。
我的生产服务器正在Linux上运行。我将数据文件夹拉到了我的Windows框中,将system
密钥空间以及我感兴趣的一个特定的密钥夹保留,并在抬起Cassandra后将其余部分放在。
我进行了升级和测试:
- 1.1.5-> 1.2.0
- 1.2.0-> 1.2.8
- 1.2.8-> 1.2.9
运行:
-
nodetool upgradesstables
-
describe schema
-
select * from table limit 100
用1.x版本看起来不错。
尝试升级到2.0.7时,我遇到了一个问题(我看到了建议的升级路径为1.2.9-> 2.0.7):
INFO 16:43:01,758 Opening C:pathmykeyspace-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:pathmykeyspacemytablemykeyspace-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)
i 启动1.2.9/bin/cassandra后,从1.2.9/bin升级。知道怎么了?
mytable_location_idx-he-647
是 1.1.5
sstable(he
是版本,h
为1.1,e
是h
的第五版)。再次运行UPGRADESSTABLES,并验证所有Sstables迁移。Sstable的版本应以1.2的i
开始,您希望它在ic
之前升级为2.0。
问题在于我只将生产集群部分迁移到本地环境。我只复制了整个system
密钥空间文件,只为我的一个键空间之一复制了一些data
文件。
我通过重做所有内容来解决问题:
- 设置1.1.5本地
- 使用cqlsh连接到它,丢弃了我在本地没有的所有其他密钥座和桌子
- 迁移(不确定哪个是解决问题的,假设我全部完成了):1.1.5-> 1.2.0-> 1.2.8-> 1.2.9-> 1.2.9-> 2.0.0-> 2.0.1-> -> 2.0.1->2.0.7。
-
可能删除了任何不匹配的索引文件卡桑德拉在启动启动时抱怨(不确定我在最后一次神奇地工作时是否会遇到任何东西,但这让我在以前的尝试期间浏览版本)。我的猜测是卡桑德拉(Cassandra)看着所有人,但是
upgradesstables
偶尔会留下一些。