我正在尝试将单节点 Cassandra 集群从 1.1.5 升级到 2.0.x。
我的生产服务器在 Linux 上运行。我将数据文件夹拉到我的 Windows 盒子中,保留system
密钥空间,以及我感兴趣的一个特定的,并在启动 Cassandra 后丢弃其余的。
我升级并测试:
然:
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:\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/cassandra 之后,我确实从 1.2.9/bin 运行了 upgradesstables。知道出了什么问题吗?
问题在于我只将生产集群部分迁移到本地环境。我复制了整个system
密钥空间文件,并且只复制了data
其中一个密钥空间的部分文件。
我通过重做一切解决了这个问题:
upgradesstables
偶尔会留下一些。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句